porter/libsrc/porter/thread/potrRecvThread.c

1 ファイル

1.1 porter/libsrc/porter/thread/potrRecvThread.c

受信スレッドモジュール。

1.1.1 作者

c-modernization-kit sample team

1.1.2 バージョン

1.0.0

1.1.3 日付

2026/03/04

1.1.4 インクルード元

potrRecvThread.c のインクルード元

1.1.5 著作権

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

2 関数

2.1 get_ms

static uint64_t get_ms ( void )

2.1.1 呼び出し元

get_ms の呼び出し元

2.2 recv_deliver

static void recv_deliver ( struct PotrContext_ *ctx, const uint8_t *payload, size_t payload_len, int compressed )

2.2.1 呼び出し元

recv_deliver の呼び出し元

2.2.2 呼び出し先

recv_deliver の呼び出し先

2.3 send_nack

static void send_nack ( struct PotrContext_ *ctx, uint32_t nack_seq )

2.3.1 呼び出し元

send_nack の呼び出し元

2.3.2 呼び出し先

send_nack の呼び出し先

2.4 send_ping_reply

static void send_ping_reply ( struct PotrContext_ *ctx, uint32_t req_seq_num )

2.4.1 呼び出し元

send_ping_reply の呼び出し元

2.4.2 呼び出し先

send_ping_reply の呼び出し先

2.5 raw_session_disconnect

static void raw_session_disconnect ( struct PotrContext_ *ctx )

2.5.1 呼び出し元

raw_session_disconnect の呼び出し元

2.6 n1_send_nack

static void n1_send_nack ( struct PotrContext_ *ctx, PotrPeerContext *peer, uint32_t nack_seq )

2.6.1 呼び出し元

n1_send_nack の呼び出し元

2.6.2 呼び出し先

n1_send_nack の呼び出し先

2.7 n1_send_reject

static void n1_send_reject ( struct PotrContext_ *ctx, PotrPeerContext *peer, uint32_t seq_num )

2.7.1 呼び出し元

n1_send_reject の呼び出し元

2.7.2 呼び出し先

n1_send_reject の呼び出し先

2.8 n1_send_ping_reply

static void n1_send_ping_reply ( struct PotrContext_ *ctx, PotrPeerContext *peer, uint32_t req_seq_num )

2.8.1 呼び出し元

n1_send_ping_reply の呼び出し元

2.8.2 呼び出し先

n1_send_ping_reply の呼び出し先

2.9 n1_reorder_gap_ready

static int n1_reorder_gap_ready ( PotrPeerContext *peer, uint32_t nack_num )

2.9.1 呼び出し元

n1_reorder_gap_ready の呼び出し元

2.10 n1_notify_health_alive

static void n1_notify_health_alive ( struct PotrContext_ *ctx, PotrPeerContext *peer )

2.10.1 呼び出し元

n1_notify_health_alive の呼び出し元

2.11 n1_recv_deliver

static void n1_recv_deliver ( struct PotrContext_ *ctx, PotrPeerContext *peer, const uint8_t *payload, size_t payload_len, int compressed )

2.11.1 呼び出し元

n1_recv_deliver の呼び出し元

2.11.2 呼び出し先

n1_recv_deliver の呼び出し先

2.12 n1_deliver_payload_elem

static void n1_deliver_payload_elem ( struct PotrContext_ *ctx, PotrPeerContext *peer, const PotrPacket *elem )

2.12.1 呼び出し元

n1_deliver_payload_elem の呼び出し元

2.12.2 呼び出し先

n1_deliver_payload_elem の呼び出し先

2.13 n1_drain_recv_window

static void n1_drain_recv_window ( struct PotrContext_ *ctx, PotrPeerContext *peer )

2.13.1 呼び出し元

n1_drain_recv_window の呼び出し元

2.13.2 呼び出し先

n1_drain_recv_window の呼び出し先

2.14 n1_process_outer_pkt

static void n1_process_outer_pkt ( struct PotrContext_ *ctx, PotrPeerContext *peer, const PotrPacket *pkt )

2.14.1 呼び出し元

n1_process_outer_pkt の呼び出し元

2.14.2 呼び出し先

n1_process_outer_pkt の呼び出し先

2.15 n1_check_and_update_session

static int n1_check_and_update_session ( struct PotrContext_ *ctx, PotrPeerContext *peer, const PotrPacket *pkt )

2.15.1 呼び出し元

n1_check_and_update_session の呼び出し元

2.15.2 呼び出し先

n1_check_and_update_session の呼び出し先

2.16 n1_update_path_recv

static void n1_update_path_recv ( PotrPeerContext *peer, const struct sockaddr_in *sender_addr, int path_idx )

2.16.1 呼び出し元

n1_update_path_recv の呼び出し元

2.17 n1_check_health_timeout

static void n1_check_health_timeout ( struct PotrContext_ *ctx )

2.17.1 呼び出し元

n1_check_health_timeout の呼び出し元

2.17.2 呼び出し先

n1_check_health_timeout の呼び出し先

2.18 check_src_addr

static int check_src_addr ( const struct PotrContext_ *ctx, const struct sockaddr_in *sender )

2.18.1 呼び出し元

check_src_addr の呼び出し元

2.19 check_and_update_session

static int check_and_update_session ( struct PotrContext_ *ctx, const PotrPacket *pkt )

2.19.1 呼び出し元

check_and_update_session の呼び出し元

2.19.2 呼び出し先

check_and_update_session の呼び出し先

2.20 get_ms_mono

static uint64_t get_ms_mono ( void )

2.20.1 呼び出し元

get_ms_mono の呼び出し元

2.21 get_monotonic

static void get_monotonic ( int64_t *tv_sec, int32_t *tv_nsec )

2.21.1 呼び出し元

get_monotonic の呼び出し元

2.22 update_path_recv

static void update_path_recv ( struct PotrContext_ *ctx, int path_idx, const struct sockaddr_in *sender )

2.22.1 呼び出し元

update_path_recv の呼び出し元

2.22.2 呼び出し先

update_path_recv の呼び出し先

2.23 notify_health_alive

static void notify_health_alive ( struct PotrContext_ *ctx )

2.23.1 呼び出し元

notify_health_alive の呼び出し元

2.24 check_health_timeout

static void check_health_timeout ( struct PotrContext_ *ctx )

2.24.1 呼び出し元

check_health_timeout の呼び出し元

2.24.2 呼び出し先

check_health_timeout の呼び出し先

2.25 reorder_gap_ready

static int reorder_gap_ready ( struct PotrContext_ *ctx, uint32_t nack_num )

2.25.1 呼び出し元

reorder_gap_ready の呼び出し元

2.25.2 呼び出し先

reorder_gap_ready の呼び出し先

2.26 check_reorder_timeout

static void check_reorder_timeout ( struct PotrContext_ *ctx )

2.26.1 呼び出し元

check_reorder_timeout の呼び出し元

2.26.2 呼び出し先

check_reorder_timeout の呼び出し先

2.27 send_reject

static void send_reject ( struct PotrContext_ *ctx, uint32_t seq_num )

2.27.1 呼び出し元

send_reject の呼び出し元

2.27.2 呼び出し先

send_reject の呼び出し先

2.28 deliver_payload_elem

static void deliver_payload_elem ( struct PotrContext_ *ctx, const PotrPacket *elem )

2.28.1 呼び出し元

deliver_payload_elem の呼び出し元

2.28.2 呼び出し先

deliver_payload_elem の呼び出し先

2.29 drain_recv_window

static void drain_recv_window ( struct PotrContext_ *ctx )

2.29.1 呼び出し元

drain_recv_window の呼び出し元

2.29.2 呼び出し先

drain_recv_window の呼び出し先

2.30 process_outer_pkt

static void process_outer_pkt ( struct PotrContext_ *ctx, const PotrPacket *pkt )

2.30.1 呼び出し元

process_outer_pkt の呼び出し元

2.30.2 呼び出し先

process_outer_pkt の呼び出し先

2.31 recv_thread_func

static void *recv_thread_func ( void *arg )

2.31.1 呼び出し元

recv_thread_func の呼び出し元

2.31.2 呼び出し先

recv_thread_func の呼び出し先

2.32 tcp_wait_readable

static int tcp_wait_readable ( PotrSocket fd, uint32_t wait_ms )

2.32.1 呼び出し元

tcp_wait_readable の呼び出し元

2.33 tcp_read_all

static int tcp_read_all ( PotrSocket fd, uint8_t *buf, size_t n )

2.33.1 呼び出し元

tcp_read_all の呼び出し元

2.34 notify_connected_tcp

static void notify_connected_tcp ( struct PotrContext_ *ctx )

2.34.1 呼び出し元

notify_connected_tcp の呼び出し元

2.35 tcp_send_all_raw

static int tcp_send_all_raw ( PotrSocket fd, const uint8_t *buf, size_t n )

2.35.1 呼び出し元

tcp_send_all_raw の呼び出し元

2.36 tcp_send_ping_reply

static void tcp_send_ping_reply ( struct PotrContext_ *ctx, int path_idx, uint32_t req_seq_num )

2.36.1 呼び出し元

tcp_send_ping_reply の呼び出し元

2.36.2 呼び出し先

tcp_send_ping_reply の呼び出し先

2.37 tcp_recv_thread_func

static void *tcp_recv_thread_func ( void *arg )

2.37.1 呼び出し元

tcp_recv_thread_func の呼び出し元

2.37.2 呼び出し先

tcp_recv_thread_func の呼び出し先

2.38 comm_recv_thread_start

int comm_recv_thread_start ( struct PotrContext_ *ctx )

非 TCP 受信スレッドを起動します。

2.38.1 引数

  • ctx [in,out] セッションコンテキストへのポインタ。

2.38.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

2.38.3 呼び出し元

comm_recv_thread_start の呼び出し元

2.38.4 呼び出し先

comm_recv_thread_start の呼び出し先

2.39 comm_recv_thread_stop

int comm_recv_thread_stop ( struct PotrContext_ *ctx )

非 TCP 受信スレッドを停止します。

2.39.1 引数

  • ctx [in,out] セッションコンテキストへのポインタ。

2.39.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

2.39.3 呼び出し元

comm_recv_thread_stop の呼び出し元

2.40 tcp_recv_thread_start

int tcp_recv_thread_start ( struct PotrContext_ *ctx, int path_idx )

TCP 受信スレッドを path ごとに起動します。

2.40.1 引数

  • ctx [in,out] セッションコンテキストへのポインタ。
  • path_idx [in] パスインデックス (0 ~ n_path-1)。

2.40.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

2.40.3 呼び出し元

tcp_recv_thread_start の呼び出し元

2.40.4 呼び出し先

tcp_recv_thread_start の呼び出し先

2.41 tcp_recv_thread_stop

int tcp_recv_thread_stop ( struct PotrContext_ *ctx, int path_idx )

TCP 受信スレッドの終了を待機します。

スレッドの停止はソケットクローズ (connect スレッド側) で行います。 本関数は join のみを担当します。

2.41.1 引数

  • ctx [in,out] セッションコンテキストへのポインタ。
  • path_idx [in] パスインデックス (0 ~ n_path-1)。

2.41.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

3 変数

3.1 s_tcp_recv_args

static TcpRecvArg[POTR_MAX_PATH] s_tcp_recv_args;

4 定数、マクロ

4.1 POTR_MUTEX_LOCK_LOCAL

#define POTR_MUTEX_LOCK_LOCAL ( m )
    pthread_mutex_lock(m)

4.2 POTR_MUTEX_UNLOCK_LOCAL

#define POTR_MUTEX_UNLOCK_LOCAL ( m )
    pthread_mutex_unlock(m)

4.3 POTR_NACK_DEDUP_MS

#define POTR_NACK_DEDUP_MS 200U

NACK 重複抑制の時間窓 (ミリ秒)。この時間内の同一 ack_num の NACK は破棄する。

5 クラス/構造体

5.1 TcpRecvArg

struct TcpRecvArg {
    struct PotrContext_ *ctx;
    int path_idx;
    int _pad;
}

5.1.1 コラボレーション図

TcpRecvArg のコラボレーション図

5.1.2 属性

5.1.2.1 ctx

struct PotrContext_ *ctx;

5.1.2.2 path_idx

int path_idx;

5.1.2.3 _pad

int _pad;