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;