解放・破棄処理

このセクションでは、SkyWay SDK for Linux®︎ (以下、SDK for Linux ) を利用した際のリソースの開放・破棄について説明します。

Room ライブラリを基準に記載しておりますので、特に断りがない場合 Core ライブラリをご利用いただいている場合は Channel と読み替えてください。

また、リソースとは、SDK で生成される全てのインスタンスおよびそのメモリを指します。

Room の管理

Room インスタンスは操作不要な状態になるまでアプリケーションで管理してください。

OK

skyway::room::interface::RoomInitOptions room_init; room_init.name = "room"; auto p2proom = skyway::room::p2p::P2PRoom::FindOrCreate(room_init); // 入室 skyway::room::interface::RoomMemberInitOptions room_options; auto room_member = p2proom->Join(room_options); // 退出 room_member->Leave(); // p2proomのリソースが不要になった p2proom->Dispose(); p2proom = nullptr;

NG

skyway::room::interface::RoomInitOptions room_init; room_init.name = "room"; auto p2proom = skyway::room::p2p::P2PRoom::FindOrCreate(room_init); // 入室 skyway::room::interface::RoomMemberInitOptions room_options; auto room_member = p2proom->Join(room_options); // p2proomのリソースが不要になった p2proom->Dispose(); p2proom = nullptr; // 危険: Roomリソースの破棄後は関連する対応するRoomMemberの操作はしないでください room_member->Leave();

Room を閉じた後の挙動

誰かが明示的に Room を閉じたときに Member が入室していた場合、 Publish と Subscribe を中止して退出します。

Room を閉じた後にそこで生成されたリソースの操作はエラーになります。

SkyWayを終了する

アプリケーションにおいて SkyWay の機能を利用しなくなった場合、skyway::Context::Dispose() をコールすることで SkyWay サーバーとの通信を切断し、SDK で管理している全てのリソースを破棄します。

Member の Room または Channel の退出処理は行うことは必要です。

また、skyway::Context::Dispose() をコールした後、それまで生成したリソース(インスタンス)にアクセスしないでください。

アクセスした場合の挙動は未定義でアプリケーションがクラッシュする可能性があります。

skyway::Context::Dispose() 後に再度 skyway::Context::Setup(token, listener, option) することで再度 SkyWay サーバーと接続できます。

商標

Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。