porter/libsrc/porter/thread/potrSendThread.c

1 ファイル

1.1 porter/libsrc/porter/thread/potrSendThread.c

非同期送信スレッドの実装。

送信キュー (PotrSendQueue) からペイロードエレメントを取り出して 外側パケット (POTR_FLAG_DATA) を構築し sendto を呼び出す送信スレッド。
potrOpenService (POTR_ROLE_SENDER) 時に起動し、potrCloseService 時に停止します。
potrSend の flags 引数の値によらず常に起動しており、 ノンブロッキング送信 (POTR_SEND_BLOCKING なし) 時のみキューが使用されます。

1.1.1 作者

c-modernization-kit sample team

1.1.2 バージョン

1.0.0

1.1.3 日付

2026/03/08

1.1.4 通番管理

すべてのデータパケットはパックコンテナ形式で送受信します。
再送・順序整列の単位は外側パケット (UDP datagram) であり、
通番は本スレッドが外側パケットを構築する際に付与します。
送信ウィンドウ (ctx->send_window) への登録も本スレッドが行います。

1.1.5 パッキング機能

POTR_MAX_PAYLOAD - POTR_PAYLOAD_ELEM_HDR_SIZE 以下のフラグメントが 複数キューに滞留している場合、送信スレッドが 1 つの外側パケットに まとめて送信します。
以下の場合は単体 (ペイロードエレメント 1 件) のコンテナとして送信します。

  • MORE_FRAG フラグが付いているエントリ (フラグメント化メッセージの途中)
  • キューに追加エントリが存在しない場合

1.1.6 インクルード元

potrSendThread.c のインクルード元

1.1.7 著作権

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 append_payload_elem

static void append_payload_elem ( uint8_t *packed_buf, size_t *packed_len, const PotrPayloadElem *entry )

2.2.1 呼び出し元

append_payload_elem の呼び出し元

2.3 tcp_send_all

static int tcp_send_all ( PotrSocket fd, PotrMutex *mtx, const uint8_t *buf, size_t len )

2.3.1 呼び出し元

tcp_send_all の呼び出し元

2.4 flush_packed

static void flush_packed ( struct PotrContext_ *ctx, size_t packed_len )

2.4.1 呼び出し元

flush_packed の呼び出し元

2.4.2 呼び出し先

flush_packed の呼び出し先

2.5 flush_packed_peer

static void flush_packed_peer ( struct PotrContext_ *ctx, PotrPeerContext *peer, size_t packed_len )

2.5.1 呼び出し元

flush_packed_peer の呼び出し元

2.5.2 呼び出し先

flush_packed_peer の呼び出し先

2.6 send_packed_peer_mode

static void send_packed_peer_mode ( struct PotrContext_ *ctx, PotrPayloadElem *first )

2.6.1 呼び出し元

send_packed_peer_mode の呼び出し元

2.6.2 呼び出し先

send_packed_peer_mode の呼び出し先

2.7 send_thread_func

static void *send_thread_func ( void *arg )

2.7.1 呼び出し元

send_thread_func の呼び出し元

2.7.2 呼び出し先

send_thread_func の呼び出し先

2.8 potr_send_thread_start

int potr_send_thread_start ( struct PotrContext_ *ctx )

2.8.1 呼び出し元

potr_send_thread_start の呼び出し元

2.8.2 呼び出し先

potr_send_thread_start の呼び出し先

2.9 potr_send_thread_stop

void potr_send_thread_stop ( struct PotrContext_ *ctx )

2.9.1 呼び出し元

potr_send_thread_stop の呼び出し元

2.9.2 呼び出し先

potr_send_thread_stop の呼び出し先