# porter/src/recv/recv.c

# 1 ファイル

## 1.1 porter/src/recv/recv.c

受信テストコマンド。

指定サービスでデータを受信し続ける CLI テストコマンドです。
Ctrl+C で終了します。

サービス種別が unicast_bidir の場合は双方向モードで動作します。
双方向モードでは受信待機中に標準入力からメッセージを送信できます (空行で送信終了)。

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

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.2.0

### 1.1.3 日付

2026/03/22

### 1.1.4 使用方法

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

### 1.1.5 オプション

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

### 1.1.6 使用例

    recv porter-services.conf 10
    recv -l INFO porter-services.conf 10
    recv -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 )

受信コールバック関数。

### 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 bidir_send_thread_func

    static void *bidir_send_thread_func ( void *arg )

bidir 送信スレッド関数 (Linux)。

### 2.5.1 引数

- arg [in] BidirSendCtx へのポインタ。

### 2.5.2 戻り値

NULL

## 2.6 start_bidir_send_thread

    static int start_bidir_send_thread ( BidirThread *thread, BidirSendCtx *ctx )

bidir 送信スレッドを起動する。

### 2.6.1 引数

- thread [out] スレッドハンドルの格納先。
- ctx [in] スレッドに渡すコンテキスト。

### 2.6.2 戻り値

成功時は 1、失敗時は 0 を返します。

## 2.7 join_bidir_send_thread

    static void join_bidir_send_thread ( BidirThread thread )

bidir 送信スレッドの終了を待機して破棄する。

### 2.7.1 引数

- thread [in] スレッドハンドル。

## 2.8 main

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

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

### 2.8.1 引数

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

### 2.8.2 戻り値

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

# 3 変数

## 3.1 g_running

    static volatile int g_running = 1;

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

# 4 型

## 4.1 BidirThread

    typedef pthread_t BidirThread;

# 5 クラス/構造体

## 5.1 BidirSendCtx

    struct BidirSendCtx {
        PotrHandle handle;
        volatile int *running;
    }

bidir 送信スレッドに渡すコンテキスト。

### 5.1.1 属性

#### 5.1.1.1 handle

    PotrHandle handle;

#### 5.1.1.2 running

    volatile int *running;