|
Document of c-modernization-kit (porter) 1.0.0
|
potrOpenServiceFromConfig 関数の実装。 More...
#include <inttypes.h>#include <porter_const.h>#include <porter.h>#include "../protocol/config.h"#include "../infra/potrLog.h"Go to the source code of this file.
Functions | |
| POTR_EXPORT int POTR_API | potrOpenServiceFromConfig (const char *config_path, int64_t service_id, PotrRole role, PotrRecvCallback callback, PotrHandle *handle) |
| 設定ファイルから指定サービスを開きます。 | |
potrOpenServiceFromConfig 関数の実装。
Definition in file potrOpenServiceFromConfig.c.
| POTR_EXPORT int POTR_API potrOpenServiceFromConfig | ( | const char * | config_path, |
| int64_t | service_id, | ||
| PotrRole | role, | ||
| PotrRecvCallback | callback, | ||
| PotrHandle * | handle ) |
設定ファイルから指定サービスを開きます。
| [in] | config_path | 設定ファイルのパス。 |
| [in] | service_id | 開くサービスの ID。 |
| [in] | role | 役割種別。POTR_ROLE_SENDER または POTR_ROLE_RECEIVER。 |
| [in] | callback | イベント発生時に呼び出されるコールバック関数 (PotrRecvCallback)。 POTR_ROLE_RECEIVER の場合は必須。データ受信・接続検知・切断検知を受け取る。 POTR_ROLE_SENDER の場合は通常 NULL を指定すること。 ただし POTR_TYPE_TCP_BIDIR および POTR_TYPE_UNICAST_BIDIR では SENDER にもコールバックが必須。これらの種別では POTR_ROLE_SENDER でも callback が NULL の場合は失敗を返します。 |
| [out] | handle | 成功時にセッションハンドルを格納するポインタ。 |
設定ファイルを解析してサービス定義を取得し、potrOpenService() を呼び出します。
role と callback の組み合わせが不正な場合は POTR_ERROR を返します。
role と設定ファイルの IP アドレスが不整合 (bind 失敗など) の場合も POTR_ERROR を返します。
通信種別・役割に応じて以下のソケット設定を行います。
| 通信種別 | 役割 | bind アドレス | bind ポート |
|---|---|---|---|
| POTR_TYPE_UNICAST | 送信者 | src_addr | src_port |
| POTR_TYPE_UNICAST | 受信者 | dst_addr | dst_port |
| POTR_TYPE_MULTICAST | 送信者 | INADDR_ANY | src_port |
| POTR_TYPE_MULTICAST | 受信者 | INADDR_ANY | dst_port |
| POTR_TYPE_BROADCAST | 送信者 | src_addr | src_port |
| POTR_TYPE_BROADCAST | 受信者 | INADDR_ANY | dst_port |
POTR_ROLE_RECEIVER の場合、内部で受信スレッドを起動します。
Definition at line 22 of file potrOpenServiceFromConfig.c.
References config_load_global(), config_load_service(), POTR_API, POTR_ERROR, POTR_EXPORT, POTR_LOG, POTR_SUCCESS, POTR_TRACE_ERROR, POTR_TRACE_VERBOSE, and potrOpenService().
Referenced by main().