TCP 接続管理スレッドモジュール。
SENDER: TCP connect/reconnect ループを管理するスレッドです。
RECEIVER: TCP accept ループを管理するスレッドです。
接続確立後、送受信・ヘルスチェックスレッドを起動し、
recv スレッドが切断を検知して終了するまで待機してから再接続サイクルへ移行します。
c-modernization-kit sample team
1.0.0
2026/03/23
Copyright (C) CompanyName, Ltd. 2026. All rights reserved.
static uint64_t connect_get_ms ( void )static void close_tcp_conn ( struct PotrContext_ *ctx, int path_idx )static void reconnect_wait ( struct PotrContext_ *ctx, int path_idx, uint32_t wait_ms )static int accept_tcp_read_all ( PotrSocket fd, uint8_t *buf, size_t n )static int accept_tcp_wait_readable ( PotrSocket fd, uint32_t wait_ms )static int tcp_read_first_packet ( PotrSocket fd, uint8_t *buf, size_t max_buf, size_t *out_len, uint32_t timeout_ms )static int tcp_session_compare ( const struct PotrContext_ *ctx, const PotrPacket *pkt )static void join_recv_thread ( struct PotrContext_ *ctx, int path_idx )static void reset_connection_state ( struct PotrContext_ *ctx )static void reset_all_paths_disconnected ( struct PotrContext_ *ctx )static void reset_send_queue ( struct PotrContext_ *ctx )static int start_connected_threads ( struct PotrContext_ *ctx, int path_idx )static void stop_connected_threads ( struct PotrContext_ *ctx, int path_idx )static PotrSocket tcp_connect_with_timeout ( struct PotrContext_ *ctx, int path_idx )static void sender_connect_loop ( struct PotrContext_ *ctx, int path_idx )static void receiver_accept_loop ( struct PotrContext_ *ctx, int path_idx )static void *connect_thread_func ( void *arg )int potr_connect_thread_start ( struct PotrContext_ *ctx )TCP 接続管理スレッドを起動します (path 数分)。
TCP 接続管理スレッドを起動します。
呼び出し前提:
成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。
void potr_connect_thread_stop ( struct PotrContext_ *ctx )TCP 接続管理スレッドを停止します。
static ConnectArg[POTR_MAX_PATH] s_connect_args;#define TCP_SESSION_NEW ( 1) /* 新セッション (または初回接続) */#define TCP_SESSION_SAME ( 0) /* 同一セッション */#define TCP_SESSION_OLD (-1) /* 旧セッション (破棄すべき) */struct ConnectArg {
struct PotrContext_ *ctx;
int path_idx;
int _pad;
}struct PotrContext_ *ctx;int path_idx;int _pad;