Document of c-modernization-kit (porter) 1.0.0

Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations
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

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

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:1 通信 RAW モード (UDP ユニキャスト)。
POTR_TYPE_MULTICAST_RAW | 2 | 1:N 通信 RAW モード (UDP マルチキャスト)。
POTR_TYPE_BROADCAST_RAW | 3 | 1:N 通信 RAW モード (UDP ブロードキャスト)。
POTR_TYPE_UNICAST | 4 | 1:1 通信 (UDP ユニキャスト)。
POTR_TYPE_MULTICAST | 5 | 1:N 通信 (UDP マルチキャスト)。
POTR_TYPE_BROADCAST | 6 | 1:N 通信 (UDP ブロードキャスト)。
POTR_TYPE_UNICAST_BIDIR | 7 | 双方向 1:1 通信 (UDP ユニキャスト)。
POTR_TYPE_UNICAST_BIDIR_N1 | 8 | N:1 双方向通信 (UDP ユニキャスト)。
POTR_TYPE_TCP | 9 | 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 | 1 | 送信者。
POTR_ROLE_RECEIVER | 2 | 受信者。

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 | 0 | データ受信。data/len に内容が格納される。
POTR_EVENT_CONNECTED | 1 | 送信者からの疎通を初検知 or 復帰。data=NULL, len=0。
POTR_EVENT_DISCONNECTED | 2 | 切断を検知 (タイムアウト / FIN 受信 / REJECT 受信)。data=NULL, len=0。

Definition at line 283 of file porter_type.h.

## ◆ PotrLogLevel

enum 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 | 0 | 致命的エラー。回復不能な障害を記録。TRACE_LV_CRITICAL (0) と同値。
POTR_TRACE_ERROR | 1 | エラー。操作の失敗を記録。TRACE_LV_ERROR (1) と同値。
POTR_TRACE_WARNING | 2 | 警告。回復可能な異常を記録。TRACE_LV_WARNING (2) と同値。
POTR_TRACE_INFO | 3 | 情報。TRACE_LV_INFO (3) と同値。
POTR_TRACE_VERBOSE | 4 | 詳細情報 (デバッグ)。TRACE_LV_VERBOSE (4) と同値。
POTR_TRACE_NONE | 5 | ログ出力無効。TRACE_LV_NONE (5) と同値。

Definition at line 332 of file porter_type.h.