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のログを眺めて見てください。