Document of c-modernization-kit (porter) 1.0.0
Loading...
Searching...
No Matches
porter_type.h File Reference

通信ライブラリの型定義ファイル。 More...

#include <stddef.h>
#include <stdint.h>
#include <porter_const.h>
Include dependency graph for porter_type.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  PotrServiceDef
 サービス定義。 More...
struct  PotrGlobalConfig
 グローバル設定。 More...
struct  PotrPacket
 ネットワーク送受信用パケット構造体。 More...

Macros

#define POTR_PEER_NA   ((PotrPeerId)0U)
 ピア ID 未割当を示す予約値。 1:1 モードのコールバックで渡される (ピアの概念がない)。 potrSend() に N:1 モードで指定した場合はエラーを返す。
#define POTR_PEER_ALL   ((PotrPeerId)UINT32_MAX)
 全接続ピアへの一斉送信を指示する予約ピア ID。 N:1 モードでは全アクティブピアへユニキャスト送信する。 1:1 モードでは唯一のピアへの送信として動作する。

Typedefs

typedef uint32_t PotrPeerId
 ピア識別子。
typedef struct PotrContext_PotrHandle
 セッションハンドル。
typedef void(* PotrRecvCallback) (int64_t service_id, PotrPeerId peer_id, PotrEvent event, const void *data, size_t len)
 受信コールバック関数型 (全通信種別共通)。

Enumerations

enum  PotrType {
  POTR_TYPE_UNICAST_RAW = 1 , POTR_TYPE_MULTICAST_RAW = 2 , POTR_TYPE_BROADCAST_RAW = 3 , POTR_TYPE_UNICAST = 4 ,
  POTR_TYPE_MULTICAST = 5 , POTR_TYPE_BROADCAST = 6 , POTR_TYPE_UNICAST_BIDIR = 7 , POTR_TYPE_UNICAST_BIDIR_N1 = 8 ,
  POTR_TYPE_TCP = 9 , POTR_TYPE_TCP_BIDIR = 10
}
 通信種別。 More...
enum  PotrRole { POTR_ROLE_SENDER = 1 , POTR_ROLE_RECEIVER = 2 }
 役割種別。 More...
enum  PotrEvent { POTR_EVENT_DATA = 0 , POTR_EVENT_CONNECTED = 1 , POTR_EVENT_DISCONNECTED = 2 }
 受信イベント種別。 More...
enum  PotrLogLevel {
  POTR_TRACE_CRITICAL = 0 , POTR_TRACE_ERROR = 1 , POTR_TRACE_WARNING = 2 , POTR_TRACE_INFO = 3 ,
  POTR_TRACE_VERBOSE = 4 , POTR_TRACE_NONE = 5
}
 ログレベル。 More...

Detailed Description

通信ライブラリの型定義ファイル。

Author
c-modernization-kit sample team
Date
2026/03/04
Version
1.0.0

Definition in file porter_type.h.

Typedef Documentation

◆ PotrPeerId

typedef uint32_t PotrPeerId

ピア識別子。

N:1 モードで各クライアントを識別する ID です。
N:1 モードでは有効なピア ID は常に POTR_PEER_NA および POTR_PEER_ALL 以外の値です。
1:1 モードおよびその他の通信種別では peer_id は常に POTR_PEER_NA です。

N:1 通信モード (POTR_TYPE_UNICAST_BIDIR src 情報なし) で各接続ピアを識別する ID です。
1:1 通信モードおよびその他の通信種別では常に POTR_PEER_NA を使用します。
有効な N:1 ピア ID は常に POTR_PEER_NA および POTR_PEER_ALL 以外の値となります(ピア ID 生成ロジックにより保証)。
予約値については ピア ID 予約値 を参照してください。

Definition at line 32 of file porter_type.h.

◆ PotrHandle

typedef struct PotrContext_* PotrHandle

セッションハンドル。

potrOpenService() が返す不透明ポインタです。
内部実装の詳細はライブラリ利用者からは隠蔽されます。

Definition at line 238 of file porter_type.h.

◆ PotrRecvCallback

typedef void(* PotrRecvCallback) (int64_t service_id, PotrPeerId peer_id, PotrEvent event, const void *data, size_t len)

受信コールバック関数型 (全通信種別共通)。

データ受信またはヘルスチェック状態変化時に、受信スレッドから呼び出されます。
コールバック内でブロッキング処理を行わないようにしてください。
すべてのイベントは受信スレッドから直列に呼び出されるため、順序性が保証されます。

Parameters
[in]service_idサービスの ID。
[in]peer_idピア識別子。N:1 モード時は接続ピアの ID (POTR_PEER_NA / POTR_PEER_ALL 以外)。
1:1 モードおよびその他の通信種別では常に POTR_PEER_NA。
[in]eventイベント種別 (PotrEvent)。
[in]data受信データへのポインタ。POTR_EVENT_DATA 時のみ有効。 コールバック復帰後は無効になります。
[in]len受信データのバイト数。POTR_EVENT_DATA 時のみ有効。

Definition at line 308 of file porter_type.h.

Enumeration Type Documentation

◆ PotrType

enum PotrType

通信種別。

サービス定義の通信方式を表します。

  • POTR_TYPE_UNICAST_RAW, POTR_TYPE_MULTICAST_RAW, POTR_TYPE_BROADCAST_RAW
    RAW モード (再送なし、ベストエフォート)。
    受信ウィンドウによる順序整列とセッション管理は有効。
    ギャップ検出時は NACK の代わりに POTR_EVENT_DISCONNECTED を発行する。
    通番は AES ノンス用にインクリメントするが、再送制御には使用しない。
    potrSend は常にブロッキング送信。マルチパス対応。
    PING ヘルスチェックは health_interval_ms / health_timeout_ms の設定に従う。
  • POTR_TYPE_UNICAST, POTR_TYPE_MULTICAST, POTR_TYPE_BROADCAST
    再送制御あり UDP モード。
    NACK / 再送・スライディングウィンドウによる信頼性・順序保証。
    ギャップ検出時は RECEIVER が SENDER に NACK を送信し再送を要求する。
    再送不可能な場合は REJECT を送出し POTR_EVENT_DISCONNECTED を発行する。
    potrSend は送信ウィンドウに空きがある場合は非同期、満杯の場合はブロッキング。
  • POTR_TYPE_UNICAST_BIDIR
    双方向 1:1 通信 (UDP ユニキャスト)。
    SENDER / RECEIVER ともに送受信・NACK・ヘルスチェックを独立して行う。
    両端それぞれが src_addr:src_port で bind し、相手の dst_addr:dst_port へ送信する。
    src_port = 0 を指定すると SENDER はエフェメラルポートで bind し、
    RECEIVER は最初のパケット受信時に SENDER のポートを動的学習して返信する。
    src_addr を省略した場合:
    SENDER : INADDR_ANY で bind し、OS がルーティングに基づきアダプタを自動選択する。
    RECEIVER: 最初の受信パケットから SENDER のアドレスを動的学習する (1:1 通信を維持)。
    SENDER も callback が必須。
  • POTR_TYPE_UNICAST_BIDIR_N1
    N:1 双方向通信 (UDP ユニキャスト)。
    サーバ側は dst_addr:dst_port で bind し、複数クライアントを同時に受け入れる。
    クライアントは POTR_TYPE_UNICAST_BIDIR (1:1) として接続する。
    max_peers で最大同時接続数を制御 (省略時: 1024)。
    src_addr は不要。src_port 指定でポートフィルタ付き N:1 になる。
  • POTR_TYPE_TCP, POTR_TYPE_TCP_BIDIR
    TCP ユニキャスト通信。
    TCP 3way handshake による接続確立。SENDER が connect()、RECEIVER が accept()。
    NACK / 再送なし (TCP 自体が信頼性・順序を保証)。
    スライディングウィンドウなし (TCP のフロー制御に委ねる)。
    SENDER 側は reconnect_interval_ms / connect_timeout_ms で再接続挙動を制御。
    接続切断時は POTR_EVENT_DISCONNECTED を発行する。
Enumerator
POTR_TYPE_UNICAST_RAW 

1:1 通信 RAW モード (UDP ユニキャスト)。

POTR_TYPE_MULTICAST_RAW 

1:N 通信 RAW モード (UDP マルチキャスト)。

POTR_TYPE_BROADCAST_RAW 

1:N 通信 RAW モード (UDP ブロードキャスト)。

POTR_TYPE_UNICAST 

1:1 通信 (UDP ユニキャスト)。

POTR_TYPE_MULTICAST 

1:N 通信 (UDP マルチキャスト)。

POTR_TYPE_BROADCAST 

1:N 通信 (UDP ブロードキャスト)。

POTR_TYPE_UNICAST_BIDIR 

双方向 1:1 通信 (UDP ユニキャスト)。

POTR_TYPE_UNICAST_BIDIR_N1 

N:1 双方向通信 (UDP ユニキャスト)。

POTR_TYPE_TCP 

TCP ユニキャスト通信 (単方向: SENDER のみ potrSend 可)。

POTR_TYPE_TCP_BIDIR 10 

TCP 双方向通信 (両端が potrSend 可)。

Definition at line 84 of file porter_type.h.

◆ PotrRole

enum PotrRole

役割種別。

potrOpenService() の呼び出し元がデータを送信する役割か受信する役割かを明示します。

Enumerator
POTR_ROLE_SENDER 

送信者。

POTR_ROLE_RECEIVER 

受信者。

Definition at line 113 of file porter_type.h.

◆ PotrEvent

enum PotrEvent

受信イベント種別。

PotrRecvCallback の第 2 引数に渡されるイベント種別です。

Note
POTR_EVENT_CONNECTED / POTR_EVENT_DISCONNECTED は、data=NULL, len=0 で呼び出されます。
すべてのイベントは受信スレッドから直列に呼び出されるため、順序性が保証されます。
ヘルスチェックの有効/無効に関わらず、初回パケット受信時に CONNECTED が発火し、接続状態を管理します。
DISCONNECTED の発火条件:
  • ヘルスチェック有効時 (health_timeout_ms > 0): タイムアウト / FIN 受信 / REJECT 受信
  • ヘルスチェック無効時 (health_timeout_ms = 0): FIN 受信 / REJECT 受信
    REJECT 受信後は DISCONNECTED の直後に、次のパケット受信で CONNECTED が発火します。
Enumerator
POTR_EVENT_DATA 

データ受信。data/len に内容が格納される。

POTR_EVENT_CONNECTED 

送信者からの疎通を初検知 or 復帰。data=NULL, len=0。

POTR_EVENT_DISCONNECTED 

切断を検知 (タイムアウト / FIN 受信 / REJECT 受信)。data=NULL, len=0。

Definition at line 283 of file porter_type.h.

◆ PotrLogLevel

ログレベル。

potrLogConfig() の level 引数に指定するログ出力レベルです。
数値が小さいほど重大度が高く、指定したレベル以下 (より重大) のメッセージのみが出力されます。
数値順序は trace-util の enum trace_level と対応しています。

PotrLogLevel trace_level syslog priority
POTR_TRACE_CRITICAL 0 TRACE_LV_CRITICAL LOG_CRIT
POTR_TRACE_ERROR 1 TRACE_LV_ERROR LOG_ERR
POTR_TRACE_WARNING 2 TRACE_LV_WARNING LOG_WARNING
POTR_TRACE_INFO 3 TRACE_LV_INFO LOG_INFO
POTR_TRACE_VERBOSE 4 TRACE_LV_VERBOSE LOG_DEBUG
POTR_TRACE_NONE 5 TRACE_LV_NONE -
Enumerator
POTR_TRACE_CRITICAL 

致命的エラー。回復不能な障害を記録。TRACE_LV_CRITICAL (0) と同値。

POTR_TRACE_ERROR 

エラー。操作の失敗を記録。TRACE_LV_ERROR (1) と同値。

POTR_TRACE_WARNING 

警告。回復可能な異常を記録。TRACE_LV_WARNING (2) と同値。

POTR_TRACE_INFO 

情報。TRACE_LV_INFO (3) と同値。

POTR_TRACE_VERBOSE 

詳細情報 (デバッグ)。TRACE_LV_VERBOSE (4) と同値。

POTR_TRACE_NONE 

ログ出力無効。TRACE_LV_NONE (5) と同値。

Definition at line 332 of file porter_type.h.