# porter/src/send/send.c

# 1 ファイル

## 1.1 porter/src/send/send.c

送信テストコマンド。

指定サービスへデータを対話式に送信する CLI テストコマンドです。
1 回のセッション内でメッセージを連続して送信できます。
各送信後に次のメッセージを送るか終了するかを選択できます。

サービス種別が unicast_bidir の場合は双方向モードで動作します。
双方向モードでは相手から受信したメッセージも標準出力に表示します。

level に指定可能な値: TRACE, DEBUG, INFO, WARN, ERROR, FATAL (大文字小文字不問)

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.3.0

### 1.1.3 日付

2026/03/22

### 1.1.4 使用方法

    send [-l <level>] <config_path> <service_id>

### 1.1.5 オプション

オプション | 説明
--- | ---
-l | ログレベルを指定します。指定がない場合はログ出力なし。

### 1.1.6 使用例

    send porter-services.conf 10
    send -l INFO porter-services.conf 10
    send -l DEBUG porter-services.conf 1031

### 1.1.7 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

# 2 関数

## 2.1 sig_handler

    static void sig_handler ( int sig )

Linux SIGINT シグナルハンドラー。

### 2.1.1 引数

- sig [in] シグナル番号。

## 2.2 on_recv

    static void on_recv ( int64_t service_id, PotrPeerId peer_id, PotrEvent event, const void *data, size_t len )

受信コールバック関数 (unicast_bidir モード用)。

### 2.2.1 引数

- service_id [in] サービスの ID。
- peer_id [in] ピア識別子 (N:1 モード時は非ゼロ、1:1 モード時は 0)。
- event [in] イベント種別。
- data [in] 受信データへのポインタ (POTR_EVENT_DATA 時のみ有効)。
- len [in] 受信データのバイト数 (POTR_EVENT_DATA 時のみ有効)。

## 2.3 parse_log_level

    static int parse_log_level ( const char *str, PotrLogLevel *out )

ログレベル文字列を PotrLogLevel に変換する。

### 2.3.1 引数

- str [in] レベル文字列 (TRACE/DEBUG/INFO/WARN/ERROR/FATAL)。
- out [out] 変換結果の格納先。

### 2.3.2 戻り値

変換に成功した場合は 1、未知の文字列の場合は 0 を返します。

## 2.4 read_line

    static int read_line ( char *buf, size_t size )

標準入力から1行読み込み、末尾の改行を取り除く。

### 2.4.1 引数

- buf [out] 読み込み先バッファ。
- size [in] バッファサイズ (バイト)。

### 2.4.2 戻り値

入力があれば 1、EOF またはエラーなら 0 を返します。

## 2.5 main

    int main ( int argc, char *argv[] )

メインエントリーポイント。

### 2.5.1 引数

- argc [in] コマンドライン引数の数。
- argv [in] コマンドライン引数の配列。

### 2.5.2 戻り値

成功時は EXIT_SUCCESS、失敗時は EXIT_FAILURE を返します。

# 3 変数

## 3.1 g_running

    static volatile int g_running = 1;

送信ループ継続フラグ。シグナルハンドラーで 0 に設定される。

# 4 定数、マクロ

## 4.1 INPUT_BUF_SIZE

    #define INPUT_BUF_SIZE (POTR_MAX_MESSAGE_SIZE + 2U)

入力バッファサイズ。POTR_MAX_MESSAGE_SIZE + 改行 + NUL。