解放・破棄処理
このセクションでは、SkyWay Linux®︎ SDK (以下、Linux SDK ) を利用した際のリソースの開放・破棄について説明します。
リソースとは、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 の退出処理は行うことは必要です。
また、skyway::Context::Dispose() をコールした後、それまで生成したリソース(インスタンス)にアクセスしないでください。
アクセスした場合の挙動は未定義でアプリケーションがクラッシュする可能性があります。
skyway::Context::Dispose() 後に再度 skyway::Context::Setup(token, listener, option) することで再度 SkyWay サーバーと接続できます。
商標
Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。