the Union Procecure Callの仕様を読む

Unionプラットフォームで使用されるUPCプロトコルの仕様を読んでみました。 ついでに、メモ書き程度に訳してみました。

UPC versionは、1.4.0(2009年09月4日現在)となっております。 UPCとは、the Union Procecure Callの略です。ReactorとUnion Serverとの間で取り交わされる内部的なメッセージフォーマットです。基本的に、Unionを利用する開発者が意識的に操作することはありません。

構造

UPCは簡単なXML形式で表されます。XMLには、メッセージIDと複数の引数のリストが含まれます。

以下がUPCの例です。


    C2S_CLIENT_HELLO(u65)
    
        Reactor
        Flash Player WIN 10,0,32,18 StandAlone (debug, localTrusted); 1.0.0 (Build 252)
        1.4.0
    

メッセージID
C2S_CLIENT_HELLO(u65)
引数リスト
  • Reactor
  • Flash Player WIN 10,0,32,18 StandAlone (debug, localTrusted); 1.0.0 (Build 252)
  • 1.4.0

メッセージID

メッセージIDは()内のショートコードが一意となっています。L要素内の各A要素が引数のリストとなります。

予約語

完全修飾Room IDには、*(アスタリスク), |(パイプ)を含めることが出来ません。

*(アスタリスク)

*(アスタリスク)はRoom IDの修飾時に、ワイルドカードとして働きます。たとえば、

com.asmple.chat.*

はcom.asmple.chat.fashion, com.asmple.chat.gameなど、com.asmple.chat.で修飾されるRoom IDすべてを指します。

|(パイプ)

|(パイプ)は項目の区切りとして使用します。

以下のようなメッセージで確認できます。


    C2S_CREATE_ROOM(u24)
    
        
        
        
        
    

上記のUPCメッセージは、以下のコードを実行した際にUnion Serverへ送信されたものです。

// _reactorはReactorEvent.READYイベントを送出済みのReactorインスタンス
var room:Room = _reactor.getRoomManager().createRoom("com.asmple.union.alpha4.test");

RoomManagerインスタンスのcreateRoomメソッドの引数を確認すると第二引数はRoomSettingsインスタンスを受け取ることが分かります。

この例では、第二引数以降を省略しているため、内部でデフォルトのRoomSettingsを渡していると思われます。

RoomSettingsのドキュメントを確認すると、デフォルトの値と先ほどのUPCのメッセージの引数として渡されている値が一致していることが分かります。

このようにRoomのセッティングの内容が|(パイプ)区切りで送信されていることが分かります。

この|(パイプ)の文字列は、Tokens.RS定数の値です。

ネイティブUPCメッセージ

UPCで定義されるメッセージ一覧です。とてつもなく長いです。

ReactorからUnion Serverへ送信されるメッセージ

SEND_MESSAGE_TO_ROOMS

Union Serverに対して、Message識別子で識別されるRECEIVE_MESSAGE(u7)メッセージの送信を要求します。Union Serverは指定されたRoom IDリストに含まれるRoomにjoin, observeし、指定されてたフィルター条件に合致するClientへRECEIVE_MESSAGE(u7)メッセージを送信します。

内部コード
u1
引数
  • Message識別子
  • Tokens.RS区切りの送信先Room IDリスト
  • 送信先に自身を含むかどうかのフラグ
  • フィルター
  • sendMessageの引数(以降、複数指定可能
対応するReactor API
  • RoomManager.sendMessage()
  • Room.sendMessage()
SEND_MESSAGE_TO_CLIENTS

Union Serverに対して、Message識別子で識別されるRECEIVE_MESSAGE(u7)メッセージの送信を要求します。Union Serverは指定されたClient IDリストに含まれ、指定されてたフィルター条件に合致するClientへRECEIVE_MESSAGE(u7)メッセージを送信します。ただし、Client.sendMessage()の実装では、フィルターはなし、指定出来るClient IDは固定でClientインスタンスが表すClient ID1つです。

内部コード
u2
引数
  • Message識別子
  • Tokens.RS区切りの送信先Client IDリスト
  • フィルター
  • sendMessageの引数(以降、複数指定可能)
対応するReactor API
  • Client.sendMessage()
SEND_MESSAGE_TO_SERVER

Union Serververに対して、Message識別子で識別されるRECEIVE_MESSAGE(u7)メッセージの送信を要求します。Union Serverは指定されたフィルター条件に合致するClientへRECEIVE_MESSAGE(u7)メッセージを送信します。

内部コード
u57
引数
  • Message識別子
  • 送信先に自身を含むかどうかのフラグ
  • フィルター
  • sendMessageの引数(以降、複数指定可能)
対応するReactor API
  • Server.sendMessage()
SET_CLIENT_ATTR

Union Serverに対して、指定したClientのClient Attributeの設定を要求します。Union Serverは要求の結果をSET_CLIENT_ATTR_RESULT(u73)メッセージで送信します。成功した場合、Union Serverは、CLIENT_ATTR_UPDATE(u8)メッセージも送信します。

内部コード
u3
引数
  • Client ID
  • Client Attribute名
  • Client Attribute値
  • スコープ
  • オプションを8bitで指定
対応するReactor API
  • Client.setAttribute()
JOIN_ROOM

Union Serverに対して、指定したRoomへのjoinを要求します。Union Serverは要求の結果をJOIN_ROOM_RESULT(u72)メッセージで送信します。成功した場合、Union Serverは、JOINED_ROOM(u6)メッセージも送信します。

内部コード
u4
引数
  • Room ID
  • Room パスワード
対応するReactor API
  • Room.join()
SET_ROOM_ATTR

Union Serverに対して、指定したRoomのRoom Attributeの設定を要求します。Union Serverは要求の結果をSET_ROOM_ATTR_RESULT(u74)メッセージで送信します。成功した場合、Union Serverは、ROOM_ATTR_UPDATE(u9)メッセージも送信します。

内部コード
u5
引数
  • Room ID
  • Room Attribute名
  • Room Attribute値
  • オプションを8bitで指定
対応するReactor API
  • Room.setAttribute()
LEAVE_ROOM

Union Serverに対して、送信元のClientを指定したRoomからのleaveを要求します。Union Serverは要求の結果をLEAVE_ROOM_RESULT(u76)メッセージで送信します。成功した場合、Union Serverは、LEFT_ROOM(u44)メッセージも送信します。

内部コード
u10
引数
  • Room ID
対応するReactor API
  • Room.leave()
CREATE_PERSISTENT_CLIENT

Union Serverに対して、送信元のClientをデータベース内の永続化クライアントとしての登録を要求します。

内部コード
u11
引数
  • Client名
  • Clientパスワード
対応するReactor API
  • PersistenceManager.createPersistentClient()
REMOVE_PERSISTENT_CLIENT

Union Serverに対して、送信元のClientをデータベース内の永続化クライアントとしての解除を要求します。

内部コード
u12
引数
  • Client名
  • Clientパスワード
対応するReactor API
  • PersistenceManager.removePersistentClient()
CHANGE_PERSISTENT_CLIENT

Union Serverに対して、送信元のClientの永続化クライアントパスワード変更を要求します。

内部コード
u13
引数
  • Client名
  • Clientの現在のパスワード
  • Clientの新しいパスワード
対応するReactor API
  • PersistenceManager.changePersistentClient()
LOGIN_CLIENT

Union Serverに対して、送信元のClientに対応した永続化クライアントでのログインを要求します。Union Serverは、永続化クライアントのClient AttributeをCLIENT_ATTR_UPDATE(u8)メッセージで送信します。

内部コード
u14
引数
  • Client名
  • Clientパスワード
対応するReactor API
  • PersistenceManager.loginClient()
GET_NUM_CLIENTS

Union Serverに対して、指定したRoom内のClient数を要求する。Union Serverは要求の結果をGET_NUM_CLIENTS_RESULT(u75)メッセージで送信します。成功した場合、Union ServerはNUM_CLIENTS_UPDATE(u34)メッセージも送信します。

内部コード
u18
引数
  • Room IDまたは、Room修飾子
対応するReactor API
  • RoomManager.getNumClientsInRooms()
  • Room.synchronizeClientCount()
  • Server.getNumClientsOnServer()
SYNC_TIME

Union Serverに対して、現在の時刻の送信を要求します。Union ServerはSERVER_TIME_UPDATE(u50)メッセージを送信します。

内部コード
u19
引数
  • なし
対応するReactor API
  • Server.syncTime()
GET_ROOM_LIST

Union Serverに対して、指定したRoomのリストの取得を要求します。Union ServerはROOM_LIST_UPDATE(u38)メッセージを送信します。

内部コード
u21
引数
  • Room 修飾子
対応するReactor API
  • RoomManager.getRoomListFromServer()
CREATE_ROOM

Union Serverに対して、指定したRoom IDのRoom作成を要求します。Union Serverは要求の結果をROOM_ADDED(u39)メッセージで送信します。

内部コード
u24
引数
  • Room ID
  • Tokens.RS区切りのRoom Settings項目リスト
  • Tokens.RS区切りのRoom Attribute項目リスト
  • Tokens.RS区切りのRooom Module ClassまたはScriptリスト
対応するReactor API
  • RoomManager.createRoom()
REMOVE_ROOM

Union Serverに対して、指定したRoom IDのRoom削除を要求します。Union Serverは要求の結果を、このメッセージを送信したClientに対して、REMOVE_ROOM_RESULT(u33)メッセージを送信します。Union Serverは要求の結果をRoom内の全クライアントにROOM_REMOVED(u40)メッセージで送信します。

内部コード
u25
引数
  • Room ID
  • Room パスワード
対応するReactor API
  • RoomManager.removeRoom()
WATCH_FOR_ROOMS

Union Serverに対して、指定したRoom 修飾子のRoomが追加、削除された際の通知を要求します。Union Serverは要求の結果をWATCH_FOR_ROOMS_RESULT(u42)メッセージで送信します。その際、1つでも一致するRoomが存在すれば、Union ServerはROOM_LIST_UPDATE(u38)メッセージを送信します。

引き続き、Union Serverは修飾子に一致するRoomが追加されれば、ROOM_ADDED(u39)メッセージを送信します。削除されえば、ROOM_REMOVED(u40)メッセージを送信します。

内部コード
u26
引数
  • Room 修飾子
対応するReactor API
  • RoomManager.watchForRooms()
STOP_WATCHING_FOR_ROOMS

Union Serverに対して、指定したRoom 修飾子のRoomが追加、削除された際の通知停止を要求します。Union Serverは要求の結果をSTOP_WATCHING_FOR_ROOMS_RESULT(u43)メッセージで送信します。

内部コード
u27
引数
  • Room 修飾子
対応するReactor API
  • RoomManager.stopWatchingForRooms()
SYNC_ROOM

Union Serverに対して、指定したRoomのスナップショットを要求します。Union Serverは要求の結果をSYNC_ROOM_RESULT(u60)メッセージで送信します。成功した場合、Union ServerはROOM_SNAPSHOT(u54)メッセージを送信します。

内部コード
u55
引数
  • Room ID
  • Room パスワード
対応するReactor API
  • Room.synchronize()
  • RoomManager.synchronizeRoom()
OBSERVE_ROOM

Union Serverに対して、指定したRoomへのobserveを要求します。Union Serverは要求の結果をOBSERVE_ROOM_RESULT(u77)メッセージで送信します。成功した場合、Union ServerはOBSERVED_ROOM(u59)メッセージを送信します。

内部コード
u58
引数
  • Room ID
  • Room パスワード
対応するReactor API
  • Room.observe()
  • RoomManager.observeRoom()
STOP_OBSERVING_ROOM

Union Serverに対して、指定したRoomへのobserve停止を要求します。Union Serverは要求の結果をSTOP_OBSERVING_ROOM_RESULT(u78)メッセージで送信します。成功した場合、Union ServerはJOIN_ROOM_RESULT(u62)メッセージを送信します。

内部コード
u61
引数
  • Room ID
対応するReactor API
  • Room.stopObserving()
  • RoomManager.stopObservingRoom()
SET_ROOM_UPDATE_LEVELS

Union Serverに対して、指定したRoom内での更新通知レベル設定を要求します。

内部コード
u64
引数
  • Room ID
  • Tokens.RS区切りの入室者更新レベル, Room更新レベル, Message更新レベル
対応するReactor API
  • Room.setUpdateLevels()
  • Room.join()
  • Room.observe()
  • RoomManager.joinRoom()
  • RoomManager.observeRoom()
CLIENT_HELLO

Union Serverに対して、コネクションを要求します。Union Serverは、SERVER_HELLO(u66)メッセージを送信します。要求が成功した場合、Union Serverは、CLIENT_METADATA(u29)、CLIENT_READY(u63)メッセージを送信します。

内部コード
u65
引数
  • Client タイプ
  • ユーザーエージェント
  • UPCバージョン
対応するReactor API
  • ReactorEvent.PROTOCOL_INCOMPATIBLE.
REMOVE_ROOM_ATTR

Union Serverに対して、指定したRoomのRoom Attributeの削除を要求します。Union Serverは要求の結果を、REMOVE_ROOM_ATTR_RESULT(u80)メッセージで送信します。要求が成功した場合、Union ServerはROOM_ATTR_REMOVED(u79)メッセージを送信します。

内部コード
u67
引数
  • Room ID
  • Room Attribute名
対応するReactor API
  • Room.deleteAttribute()
REMOVE_CLIENT_ATTR

Union Serverに対して、Client Attributeの削除を要求します。Union Serverは要求の結果を、REMOVE_CLIENT_ATTR_RESULT(u82)メッセージで送信します。要求が成功した場合、Union ServerはCLIENT_ATTR_REMOVED(u81)メッセージを送信します。

内部コード
u69
引数
  • Client ID
  • Client Attribute名
  • Client Attributeスコープ
対応するReactor API
  • Client.deleteAttribute()
SEND_ROOMMODULE_MESSAGE

Union Serverに対して、指定したRoomにモジュールメッセージ識別子で指定したモジュールメッセージを送信します。

内部コード
u70
引数
  • Room ID
  • モジュールメッセージ識別子
  • モジュールメッセージ引数(以降、複数指定可能)
対応するReactor API
  • Room.sendModuleMessage()
SEND_SERVERMODULE_MESSAGE

Union Serverに対して、指定したモジュールにモジュールメッセージ識別子で指定したモジュールメッセージを送信します。

内部コード
u71
引数
  • モジュール ID
  • モジュールメッセージ識別子
  • モジュールメッセージ引数(以降、複数指定可能)
対応するReactor API
  • Server.sendModuleMessage()

Union ServerからReactorへ送信されるメッセージ

JOINED_ROOM

Clientがjoinしたroomの情報を通知します。

内部コード
u6
引数
  • Room ID
RECEIVE_MESSAGE

Messageを送信します。

内部コード
u7
引数
  • Message識別子
  • ブロードキャストタイプ
  • 送信元Client ID(Union Serverが送信元の場合は空)
  • 送信先Room ID
  • sendMessageの引数(以降、複数指定可能)
対応Reactor API
  • MessageManager.addMessageListener() (直接ではない)
  • Room.addMessageListener() (直接ではない)
ブロードキャストタイプ
ブロードキャストタイプ
意味受け取るClient
0サーバー宛全Client
1ルーム宛指定Room全Client
2クライアント宛指定Client
CLIENT_ATTR_UPDATE

Client Attributeの更新を通知します。

内部コード
u8
引数
  • Room ID
  • Client ID
  • Client Attribute名
  • Client Attribute値
対応Reactor API
  • RoomEvent.UPDATE_CLIENT_ATTRIBUTE
ステータスコード
    ROOM_ATTR_UPDATE
    内部コード
    u9
    引数
    • Room ID
    • Client ID(Union Serverが更新元の場合は空)
    • Room Attribute名
    • Room Attribute値
    対応Reactor API
    • RoomEvent.UPDATE_ROOM_ATTRIBUTE
    ステータスコード
      CLIENT_METADATA

      接続元Clientへ初期情報を通知します。

      内部コード
      u29
      引数
      • Client ID
      対応Reactor API
      • なし(UPCが内部的に処理します)
      CREATE_ROOM_RESULT

      ClientのRoom作成試行の結果を通知します。

      内部コード
      u32
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomManagerEvent.CREATE_ROOM_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_EXISTS
      REMOVE_ROOM_RESULT

      ClientのRoom削除試行の結果を通知します。

      内部コード
      u33
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomManagerEvent.REMOVE_ROOM_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_NOT_FOUND
      • AUTHORIZATION_REQUIRED
      • AUTHORIZATION_FAILED
      NUM_CLIENTS_UPDATE

      特定のスコープ内RoomのClient数を通知します。

      内部コード
      u34
      引数
      • Roomのスコープ
      • 総Client数
      • ユニークClient数
      対応Reactor API
      • RoomEvent.CLIENT_COUNT
      • RoomManagerEvent.CLIENT_COUNT
      • ServerEvent.CLIENT_COUNT
      ステータスコード
      CLIENT_ADDED

      ClientがRoomにjoinしたことを通知します。

      内部コード
      u36
      引数
      • Room ID
      • Client ID
      • Tokens.RS区切りのグローバルClient Attribute
      • Tokens.RS区切りのRoomスコープ Client Attribute
      対応Reactor API
      • RoomEvent.ADD_CLIENT
      CLIENT_REMOVED

      ClientがRoomからleaveしたことを通知します。

      内部コード
      u37
      引数
      • Room ID
      • Client ID
      対応Reactor API
      • RoomEvent.REMOVE_CLIENT
      ROOM_LIST_UPDATE

      特定のRoomスコープのRoom一覧の更新を通知します。

      内部コード
      u38
      引数
      • Roomスコープ
      • Room ID(以降、複数指定可能)
      対応Reactor API
      • RoomManagerEvent.ROOM_ADDED
      • RoomManagerEvent.ROOM_REMOVED
      ROOM_ADDED

      特定のRoomが追加されたことを通知します。

      内部コード
      u39
      引数
      • Room ID
      対応Reactor API
      • RoomManagerEvent.ROOM_ADDED
      ROOM_REMOVED

      特定のRoomが削除されたことを通知します。

      内部コード
      u40
      引数
      • Room ID
      対応Reactor API
      • RoomManagerEvent.ROOM_REMOVED
      WATCH_FOR_ROOMS_RESULT

      ClientのWATCH_FOR_ROOMS試行の結果を通知します。

      内部コード
      u42
      引数
      • Room ID修飾子
      • ステータス
      対応Reactor API
      • RoomManagerEvent.WATCH_FOR_ROOMS_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • INVALID_QUALIFIER
      • ALREADY_WATCHING
      STOP_WATCHING_FOR_ROOMS_RESULT

      ClientのSTOP_WATCHING_FOR_ROOMS試行の結果を通知します。

      内部コード
      u43
      引数
      • Room ID修飾子
      • ステータス
      対応Reactor API
      • RoomManagerEvent.STOP_WATCHING_FOR_ROOMS_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • INVALID_QUALIFIER
      • NOT_WATCHING_QUALIFIER
      LEFT_ROOM

      ClientがRoomからleaveしたことを通知します。

      内部コード
      u44
      引数
      • Room ID
      対応Reactor API
      • RoomEvent.LEAVE
      CHANGE_PERSISTENT_CLIENT_RESULT

      Clientの永続化Clientパスワード変更試行の結果を通知します。

      内部コード
      u46
      引数
      • ステータス
      対応Reactor API
      • PersistenceEvent.CHANGED
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • NAME_NOT_FOUND
      • AUTHORIZATION_FAILED
      CREATE_PERSISTENT_CLIENT_RESULT

      Clientの永続化Client登録試行の結果を通知します。

      内部コード
      u47
      引数
      • ステータス
      対応Reactor API
      • PersistenceEvent.CREATED
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • NAME_EXISTS
      REMOVE_PERSISTENT_CLIENT_RESULT

      Clientの永続化Client削除試行の結果を通知します。

      内部コード
      u48
      引数
      • ステータス
      対応Reactor API
      • PersistenceEvent.REMOVED
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • NAME_NOT_FOUND
      • AUTHORIZATION_FAILED
      LOGIN_CLIENT_RESULT

      Clientの永続化Clientログイン試行の結果を通知します。

      内部コード
      u49
      引数
      • ステータス
      • Tokens.RS区切りのClient Attribute(以降、複数指定可能)
      対応Reactor API
      • PersistenceEvent.LOGIN
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ALREADY_LOGGED_IN
      • AUTHORIZATION_FAILED
      SERVER_TIME_UPDATE

      Union Serverの現在の時刻を通知します。

      内部コード
      u50
      引数
      • Union Serverの時刻
      対応Reactor API
      • ServerEvent.TIME_SYNC
      ROOM_SNAPSHOT

      RoomのRoom AttributeやClientなどの状態を通知します。

      内部コード
      u54
      引数
      • Room ID
      • Tokens.RS区切りのRoom Attribute
      • Client ID
      • Client グローバルCleint Attribute
      • Client RoomスコープCleint Attribute
      • 以降、Client ID, Client グローバルCleint Attribute, Client RoomスコープCleint Attributeの組で複数指定可能)
      対応Reactor API
      • Room.synchronize()
      • RoomEvent.SYNCHRONIZE
      • Room.join()
      • Room.observe()
      OBSERVED_ROOM

      ClientがRoomをobserveしたことを通知します。

      内部コード
      u59
      引数
      • Room ID
      対応Reactor API
      • RoomEvent.OBSERVE
      SYNC_ROOM_RESULT

      ClientのSYNC_ROOM試行の結果を通知します。

      内部コード
      u60
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomEvent.SYNCHRONIZE
      • RoomManagerEvent.SYNC_NONEXISTENT_ROOM
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_NOT_FOUND
      • AUTHORIZATION_REQUIRED
      • AUTHORIZATION_FAILED
      • ALREADY_SYNCHRONIZED
      STOPPED_OBSERVING_ROOM

      ClientがRoomのobserveを停止したことを通知します。

      内部コード
      u62
      引数
      • Room ID
      対応Reactor API
      • RoomEvent.STOP_OBSERVING
      CLIENT_READY

      Clientの初期化処理が完了し準備が出来たことを通知します。

      内部コード
      u63
      引数
      • なし
      対応Reactor API
      • UConnectionEvent.READY
      SERVER_HELLO

      ClientにUnion ServerやUPCプロトコルの情報を通知します。

      内部コード
      u66
      引数
      • Union Serverバージョン
      • セッションID
      • UPCバージョン
      • Clientとのプロトコル互換
      対応Reactor API
      • Union Serverバージョン
      • セッションID
      • UPCバージョン
      • protocolCompatible
      JOIN_ROOM_RESULT

      Clientのjoin試行の結果を通知する。

      内部コード
      u72
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomEvent.JOIN_RESULT
      • RoomManagerEvent.JOIN_NONEXISTENT_ROOM
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ALREADY_IN_ROOM
      • ROOM_NOT_FOUND
      • ROOM_FULL
      • AUTHORIZATION_REQUIRED
      • AUTHORIZATION_FAILED
      SET_CLIENT_ATTR_RESULT

      Client Attribute更新試行の結果

      内部コード
      u73
      引数
      • Room ID
      • Client ID
      • Client Attribute名
      • ステータス
      対応Reactor API
      • RoomEvent.SET_CLIENT_ATTRIBUTE_RESULT
      • ClientEvent.SET_ATTRIBUTE_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • DUPLICATE_VALUE
      • CLIENT_NOT_FOUND
      • IMMUTABLE
      • SERVER_ONLY
      • EVALUATION_FAILED
      SET_ROOM_ATTR_RESULT

      Room Attribute更新試行の結果

      内部コード
      u74
      引数
      • Room ID
      • Room Attribute名
      • ステータス
      対応Reactor API
      • RoomEvent.SET_ROOM_ATTRIBUTE_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • IMMUTABLE
      • SERVER_ONLY
      • EVALUATION_FAILED
      GET_NUM_CLIENTS_RESULT

      Clientの数を通知します。

      内部コード
      u75
      引数
      • Room スコープ
      • ステータス
      対応Reactor API
      • RoomEvent.GET_NUM_CLIENTS_RESULT
      • RoomManagerEvent.GET_NUM_CLIENTS_RESULT
      • ServerEvent.GET_NUM_CLIENTS_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_NOT_FOUND
      LEAVE_ROOM_RESULT

      特定のRoomへのClientのleave試行の結果を通知します。

      内部コード
      u76
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomEvent.LEAVE_RESULT
      • RoomManagerEvent.LEAVE_NONEXISTENT_ROOM
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • NOT_IN_ROOM
      • ROOM_NOT_FOUND
      OBSERVE_ROOM_RESULT

      特定のRoomへのClientのobserve試行の結果を通知します。

      内部コード
      u77
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomEvent.OBSERVE_RESULT
      • RoomManagerEvent.OBSERVE_NONEXISTENT_ROOM
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_NOT_FOUND
      • AUTHORIZATION_REQUIRED
      • AUTHORIZATION_FAILED
      • ALREADY_OBSERVING
      STOP_OBSERVING_ROOM_RESULT

      特定のRoomへのClientのobserve停止試行の結果を通知します。

      内部コード
      u78
      引数
      • Room ID
      • ステータス
      対応Reactor API
      • RoomEvent.STOP_OBSERVING
      • RoomManagerEvent.STOP_OBSERVING_NONEXISTENT_ROOM
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • ROOM_NOT_FOUND
      • NOT_OBSERVING
      ROOM_ATTR_REMOVED

      Room Attributeの削除を通知します。

      内部コード
      u79/dd>
      引数
      • Room ID
      • Client ID
      • Room Attribute名
      対応Reactor API
      • RoomEvent.DELETE_ROOM_ATTRIBUTE
      REMOVE_ROOM_ATTR_RESULT

      Room Attributeの削除試行の結果を通知します。

      内部コード
      u80
      引数
      • Room ID
      • Room Attribute名
      • ステータス
      対応Reactor API
      • RoomEvent.DELETE_ROOM_ATTRIBUTE_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • IMMUTABLE
      • SERVER_ONLY
      • ROOM_NOT_FOUND
      • ATTR_NOT_FOUND
      CLIENT_ATTR_REMOVED

      Client Attributeの削除を通知します。

      内部コード
      u81
      引数
      • Room ID
      • Client ID
      • Client Attribute名
      対応Reactor API
      • RoomEvent.DELETE_CLIENT_ATTRIBUTE
      REMOVE_CLIENT_ATTR_RESULT

      Client Attributeの削除試行の結果を通知します。

      内部コード
      u82
      引数
      • Room ID
      • Client ID
      • Client Attribute名
      • ステータス
      対応Reactor API
      • RoomEvent.DELETE_ROOM_ATTRIBUTE_RESULT
      ステータスコード
      • SUCCESS
      • ERROR (サーバ内部処理で例外発生)
      • CLIENT_NOT_FOUND
      • IMMUTABLE
      • SERVER_ONLY
      • ATTR_NOT_FOUND

      まとめ

      UPCはUnionを使った開発で直接扱いませんが、ReactorのデバッグログやUnion Serverのログに出力されます。興味がある方はUPCのログを眺めて見てください。