porter/libsrc/porter/api/potrCloseService.c

1 ファイル

1.1 porter/libsrc/porter/api/potrCloseService.c

potrCloseService 関数の実装。

1.1.1 作者

c-modernization-kit sample team

1.1.2 バージョン

1.0.0

1.1.3 日付

2026/03/04

1.1.4 著作権

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

2 関数

2.1 send_fin

static void send_fin ( struct PotrContext_ *ctx )

2.2 potrCloseService

POTR_EXPORT int POTR_API potrCloseService ( PotrHandle handle )

サービスを閉じます。

受信スレッドを停止し、ソケットをクローズしてリソースを解放します。
マルチキャストの場合はグループから離脱します。
本関数呼び出し後、handle は無効となります。

2.2.1 引数

  • handle [in] potrOpenService() で取得したセッションハンドル。

2.2.2 戻り値

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

2.2.3 補足

本関数呼び出し時、POTR_EVENT_DISCONNECTED コールバックは発火しません。
アプリケーション自身が明示的にサービスを閉じる操作は、接続状態変化イベントとして通知しない設計です。
UDP 通信種別の送信者 (POTR_ROLE_SENDER) が本関数を呼び出した場合は、POTR_FLAG_FIN パケットが送信されます。
TCP 通信種別 (POTR_TYPE_TCP / POTR_TYPE_TCP_BIDIR) では close() による TCP 切断が FIN 相当として機能します。
いずれの場合も、相手側では POTR_EVENT_DISCONNECTED が発火します。

2.2.4 警告

handle が NULL の場合は失敗を返します。

2.2.5 スレッド セーフティ

本関数はスレッドセーフではありません。
同一ハンドルに対して他の porter API と並行して呼び出さないでください。
本関数を呼び出す前に、同一ハンドルへのすべての potrSend() が完了していることを確認してください。