# porter/libsrc/porter/api/potrGetServiceType.c

# 1 ファイル

## 1.1 porter/libsrc/porter/api/potrGetServiceType.c

potrGetServiceType 関数の実装。

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.0.0

### 1.1.3 日付

2026/03/22

### 1.1.4 著作権

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

# 2 関数

## 2.1 potrGetServiceType

    POTR_EXPORT int POTR_API potrGetServiceType ( const char *config_path, int64_t service_id, PotrType *type )

設定ファイルから指定サービスの通信種別を取得します。

設定ファイルを解析して指定サービスの通信種別を返します。
potrOpenService() の前に呼び出すことで、ロール・コールバックの要否を アプリケーション側で判断できます。
本関数はソケットの作成や通信スレッドの起動を行いません。

### 2.1.1 引数

- config_path [in] 設定ファイルのパス。
- service_id [in] 照会するサービスの ID。
- type [out] 成功時に通信種別 (PotrType) を格納するポインタ。

### 2.1.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

### 2.1.3 警告

config_path または type が NULL の場合は失敗を返します。
指定した service_id が設定ファイルに存在しない場合は失敗を返します。

### 2.1.4 使用例

    PotrType type;
    if (potrGetServiceType("porter-services.conf", 1031, &type) == POTR_SUCCESS) {
        if (type == POTR_TYPE_UNICAST_BIDIR) {
            // unicast_bidir: コールバックが必須
            potrOpenService("porter-services.conf", 1031,
                            POTR_ROLE_SENDER, on_recv, &handle);
        }
    }

### 2.1.5 スレッド セーフティ

本関数はスレッドセーフです。
グローバルな共有状態にアクセスしないため、複数スレッドから並行して呼び出せます。