李勇

1.课堂的状态pdu结构调整

2.白板和文档的数据关联
@@ -73,7 +73,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -73,7 +73,7 @@ return /******/ (function(modules) { // webpackBootstrap
73 /******/ } 73 /******/ }
74 74
75 /******/ var hotApplyOnUpdate = true; 75 /******/ var hotApplyOnUpdate = true;
76 -/******/ var hotCurrentHash = "5a5a372231e8c0f8aab9"; // eslint-disable-line no-unused-vars 76 +/******/ var hotCurrentHash = "3960713dc1161612a7cd"; // eslint-disable-line no-unused-vars
77 /******/ var hotCurrentModuleData = {}; 77 /******/ var hotCurrentModuleData = {};
78 /******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars 78 /******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars
79 79
@@ -752,7 +752,8 @@ return /******/ (function(modules) { // webpackBootstrap @@ -752,7 +752,8 @@ return /******/ (function(modules) { // webpackBootstrap
752 _GlobalConfig2.default.setCurrentStatus(_GlobalConfig2.default.statusCode_0); 752 _GlobalConfig2.default.setCurrentStatus(_GlobalConfig2.default.statusCode_0);
753 753
754 _this.on(_MessageTypes2.default.MCU_ERROR, _this._mcuErrorHandler.bind(_this)); 754 _this.on(_MessageTypes2.default.MCU_ERROR, _this._mcuErrorHandler.bind(_this));
755 - _this.on(_MessageTypes2.default.DOC_SHOW, _this.docShowHandler.bind(_this)); 755 +
  756 + //this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this));
756 757
757 // Sass平台层 758 // Sass平台层
758 _sass = _Sass2.default; 759 _sass = _Sass2.default;
@@ -776,7 +777,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -776,7 +777,7 @@ return /******/ (function(modules) { // webpackBootstrap
776 _confer_ape.on('*', function (type, data) { 777 _confer_ape.on('*', function (type, data) {
777 return _this._emit(type, data); 778 return _this._emit(type, data);
778 }); 779 });
779 - _confer_ape.on(_MessageTypes2.default.DOC_SWITCH, _this.docSwitchHandler.bind(_this)); 780 + //_confer_ape.on(MessageTypes.DOC_SWITCH, this.docSwitchHandler.bind(this));
780 781
781 _chat_ape = new _ChatApe2.default(); 782 _chat_ape = new _ChatApe2.default();
782 _chat_ape.on('*', function (type, data) { 783 _chat_ape.on('*', function (type, data) {
@@ -800,7 +801,8 @@ return /******/ (function(modules) { // webpackBootstrap @@ -800,7 +801,8 @@ return /******/ (function(modules) { // webpackBootstrap
800 _whiteboard_ape.on('*', function (type, data) { 801 _whiteboard_ape.on('*', function (type, data) {
801 return _this._emit(type, data); 802 return _this._emit(type, data);
802 }); 803 });
803 - _whiteboard_ape.on(_MessageTypes2.default.WHITEBOARD_ANNOTATION_UPDATE, _this.annoUpdateHandler.bind(_this)); 804 + //_whiteboard_ape.on(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this));
  805 +
804 806
805 //公开外部调用的方法 807 //公开外部调用的方法
806 //class 808 //class
@@ -833,7 +835,6 @@ return /******/ (function(modules) { // webpackBootstrap @@ -833,7 +835,6 @@ return /******/ (function(modules) { // webpackBootstrap
833 _this.sendDocumentDelete = _this._sendDocumentDelete; //删除文档 835 _this.sendDocumentDelete = _this._sendDocumentDelete; //删除文档
834 _this.sendDocumentDeleteAll = _this._documentDeleteAll; //删除所有文档 836 _this.sendDocumentDeleteAll = _this._documentDeleteAll; //删除所有文档
835 _this.sendDocumentCommand = _this._sendDocumentCommand; //操作文档(翻页、缩放、滚动...) 837 _this.sendDocumentCommand = _this._sendDocumentCommand; //操作文档(翻页、缩放、滚动...)
836 -  
837 return _this; 838 return _this;
838 } 839 }
839 840
@@ -1381,26 +1382,27 @@ return /******/ (function(modules) { // webpackBootstrap @@ -1381,26 +1382,27 @@ return /******/ (function(modules) { // webpackBootstrap
1381 } 1382 }
1382 } 1383 }
1383 1384
1384 - // 文档变更 1385 + //// 文档变更,白板也需要做处理
1385 1386
1386 }, { 1387 }, {
1387 key: 'docUpdateHandler', 1388 key: 'docUpdateHandler',
1388 - value: function docUpdateHandler(docItem) {  
1389 - loger.log('Doc UpdateId ->' + docItem.id + '| activeDocId ->' + _confer_ape.activeDocId);  
1390 - if (docItem.id == _confer_ape.activeDocId) {  
1391 - this._emit(_MessageTypes2.default.DOC_SHOW, docItem); 1389 + value: function docUpdateHandler(_data) {
  1390 + loger.log('Doc UpdateId ->', _data);
  1391 + if (_whiteboard_ape) {
  1392 + _whiteboard_ape.docUpdateHandler(_data);
1392 } 1393 }
1393 } 1394 }
1394 1395
1395 - //文档删除 1396 + //文档删除,白板也需要做处理
1396 1397
1397 }, { 1398 }, {
1398 key: 'docDeleteHandler', 1399 key: 'docDeleteHandler',
1399 - value: function docDeleteHandler(docItem) {  
1400 - if (docItem.id == _confer_ape.activeDocId) {  
1401 - this._emit(_MessageTypes2.default.DOC_DELETE, docItem); 1400 + value: function docDeleteHandler(_data) {
  1401 + if (_whiteboard_ape) {
  1402 + _whiteboard_ape.docDeleteHandler(_data);
1402 } 1403 }
1403 } 1404 }
  1405 +
1404 //文档加入频道成功,同步到MCU服务器上的数据 1406 //文档加入频道成功,同步到MCU服务器上的数据
1405 1407
1406 }, { 1408 }, {
@@ -1444,7 +1446,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -1444,7 +1446,7 @@ return /******/ (function(modules) { // webpackBootstrap
1444 // "uploadEndTime": "2017-02-03 11:54:27", 1446 // "uploadEndTime": "2017-02-03 11:54:27",
1445 // "uploadStartTime": "2017-02-03 11:54:27" 1447 // "uploadStartTime": "2017-02-03 11:54:27"
1446 //} 1448 //}
1447 - loger.log("上传文档到mcu", value); 1449 + loger.log("判断是否需要把提前上传的文档上传到mcu", value);
1448 var paramInfo = { 1450 var paramInfo = {
1449 "pageNum": value.pdfSize, 1451 "pageNum": value.pdfSize,
1450 "fileName": value.name, 1452 "fileName": value.name,
@@ -3575,7 +3577,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -3575,7 +3577,7 @@ return /******/ (function(modules) { // webpackBootstrap
3575 // 会议发送消息 -- 消息同意序列号 3577 // 会议发送消息 -- 消息同意序列号
3576 value: function send(msg) { 3578 value: function send(msg) {
3577 if (this.connected) { 3579 if (this.connected) {
3578 - loger.log('MCU-发送会议数据....', msg); 3580 + loger.log('MCU-发送会议数据....');
3579 this._everSocket.send(msg.toArrayBuffer()); 3581 this._everSocket.send(msg.toArrayBuffer());
3580 } else { 3582 } else {
3581 loger.log('MCU-发送会议数据失败,MCU底层通道不可用'); 3583 loger.log('MCU-发送会议数据失败,MCU底层通道不可用');
@@ -14442,7 +14444,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -14442,7 +14444,7 @@ return /******/ (function(modules) { // webpackBootstrap
14442 Object.defineProperty(exports, "__esModule", { 14444 Object.defineProperty(exports, "__esModule", {
14443 value: true 14445 value: true
14444 }); 14446 });
14445 - var _default = "\n//start\n// pdu_def.proto\n\n// syntax = \"proto3\";\n\noption optimize_for = LITE_RUNTIME;\nenum RCPduPriority_E {\n DP_TOP = 0;\n DP_HIGH = 1;\n DP_MEDIUM = 2;\n DP_LOW = 3;\n}\n\nenum RCPduSegment_E {\n SEG_BEGIN = 0;\n SEG_END = 1;\n SEG_ONCE = 2;\n}\n\nenum RCPduTokenStatus_E {\n TS_NOT_IN_USE = 0;\n TS_SELF_GRABBED = 1;\n TS_OTHER_GRABBED = 2;\n TS_SELF_INHIBITED = 3;\n TS_OTHER_INHIBITED = 4;\n TS_SELF_RECIPIENT = 5;\n TS_SELF_GIVING = 6;\n TS_OTHER_GIVING = 7;\n}\n\nenum RCPduType_E {\n// GCC PDU\n RCPDU_CONNECT_PROVIDER_REQUEST = 0;\n RCPDU_CONNECT_PROVIDER_RESPONSE = 1;\n RCPDU_CONFERENCE_JOIN_REQUEST = 2;\n RCPDU_CONFERENCE_JOIN_RESPONSE = 3;\n RCPDU_CONFERENCE_INVITE_REQUEST = 10;\n RCPDU_CONFERENCE_INVITE_RESPONSE = 11;\n RCPDU_CONFERENCE_LOCK_REQUEST = 20;\n RCPDU_CONFERENCE_LOCK_RESPONSE = 21;\n RCPDU_CONFERENCE_LOCK_INDICATION = 22;\n RCPDU_CONFERENCE_UNLOCK_REQUEST = 30;\n RCPDU_CONFERENCE_UNLOCK_RESPONSE = 31;\n RCPDU_CONFERENCE_UNLOCK_INDICATION = 32;\n RCPDU_CONFERENCE_LEAVE_REQUEST = 39;\n RCPDU_CONFERENCE_TERMINATE_REQUEST = 40;\n RCPDU_CONFERENCE_TERMINATE_RESPONSE = 41;\n RCPDU_CONFERENCE_TERMINATE_INDICATION = 42;\n RCPDU_CONFERENCE_EJECT_USER_REQUEST = 50;\n RCPDU_CONFERENCE_EJECT_USER_RESPONSE = 51;\n RCPDU_CONFERENCE_EJECT_USER_INDICATION = 52;\n RCPDU_ROSTER_UPDATE_INDICATION = 60;\n RCPDU_REGISTRY_UPDATE_REQUEST = 70; // INCLUDE ALL OBJS OPERATION\n RCPDU_REGISTRY_UPDATE_RESPONSE = 71;\n RCPDU_REGISTRY_UPDATE_INDICATION = 72;\n RCPDU_FUNCTION_NOT_SUPPORTED_RESPONSE = 80;\n\n // MCS PDU\n RCPDU_SESSION_JOIN_REQUEST = 90;\n RCPDU_SESSION_JOIN_RESPONSE = 91;\n RCPDU_CHANNEL_GRAB_REQUEST = 100;\n RCPDU_CHANNEL_GRAB_RESPONSE = 101;\n RCPDU_CHANNEL_GRAB_INDICATION = 102;\n RCPDU_CHANNEL_JOIN_REQUEST = 103;\n RCPDU_CHANNEL_JOIN_RESPONSE = 104;\n RCPDU_CHANNEL_LEAVE_REQUEST = 105;\n RCPDU_CHANNEL_RELEASE_REQUEST = 106;\n RCPDU_CHANNEL_RELEASE_INDICATION = 107;\n RCPDU_SEND_DATA_REQUEST = 120;\n RCPDU_SEND_DATA_INDICATION = 121;\n RCPDU_UNIFORM_SEND_DATA_REQUEST = 125;\n RCPDU_UNIFORM_SEND_DATA_INDICATION = 126;\n RCPDU_TOKEN_GRAB_REQUEST = 130;\n RCPDU_TOKEN_GRAB_CONFIRM = 131;\n RCPDU_TOKEN_INHIBIT_REQUEST = 132;\n RCPDU_TOKEN_INHIBIT_CONFIRM = 133;\n RCPDU_TOKEN_GIVE_REQUEST = 134;\n RCPDU_TOKEN_GIVE_INDICATION = 135;\n RCPDU_TOKEN_GIVE_RESPONSE = 136;\n RCPDU_TOKEN_GIVE_CONFIRM = 137;\n RCPDU_TOKEN_PLEASE_REQUEST = 138;\n RCPDU_TOKEN_PLEASE_INDICATION = 139;\n RCPDU_TOKEN_RELEASE_REQUEST = 140;\n RCPDU_TOKEN_RELEASE_CONFIRM = 141;\n RCPDU_TOKEN_TEST_REQUEST = 142;\n RCPDU_TOKEN_TEST_CONFIRM = 143;\n\n // Registry PDU\n RCPDU_REG_REGISTER_KEY = 200;\n RCPDU_REG_UNREGISTER_KEY = 201;\n RCPDU_REG_REGISTER_ROSTER = 202;\n RCPDU_REG_REGISTER_TOKEN = 203;\n RCPDU_REG_REGISTER_PARAMETER = 204;\n RCPDU_REG_REGISTER_COUNTER = 205;\n RCPDU_REG_REGISTER_TABLE = 206;\n RCPDU_REG_REGISTER_CACHE = 207;\n RCPDU_REG_REGISTER_OBJ = 208;\n RCPDU_REG_UNREGISTER_OBJ = 209;\n RCPDU_REG_UPDATE_OBJ = 210;\n RCPDU_REG_ADAPTER = 211;\n RCPDU_REG_CLEANUP_NODE = 212;\n RCPDU_REG_REGISTER_QUEUE = 213;\n\n // Registry Obj update PDU\n RCPDU_REG_TABLE_INSERT_PDU = 230;\n RCPDU_REG_TABLE_DELETE_PDU = 231;\n RCPDU_REG_TABLE_UPDATE_PDU = 232;\n RCPDU_REG_ROSTER_INSERT_PDU = 240;\n RCPDU_REG_ROSTER_DELETE_PDU = 241;\n RCPDU_REG_ROSTER_UPDATE_PDU = 242;\n RCPDU_REG_PARAMETER_UPDATE_PDU = 250;\n RCPDU_REG_QUEUE_INSERT_PDU = 255;\n RCPDU_REG_QUEUE_DELETE_PDU = 256;\n RCPDU_REG_QUEUE_UPDATE_PDU = 257;\n\n // data\n RCPDU_CONFERENCE_SEND_DATA_REQUEST = 259;\n RCPDU_VIDEO_SEND_DATA_REQUEST = 260;\n RCPDU_AUDIO_SEND_DATA_REQUEST = 261;\n RCPDU_GIFT_SEND_DATA_REQUEST = 262;\n RCPDU_CHAT_SEND_DATA_REQUEST = 263;\n RCPDU_VOTING_POLL_RECORD = 265;\n\n // Registry resource request or response PDU\n RCPDU_REG_REQUEST_OBJ = 290;\n RCPDU_REG_RESPONSE_OBJ = 291;\n RCPDU_REG_COUNTER_REQUEST_PDU = 292;\n RCPDU_REG_COUNTER_RESPONSE_PDU = 293;\n\n // Index exchange\n RCPDU_INDEX_ADAPTER = 300;\n RCPDU_INDEX_SERVER_USERS = 301;\n RCPDU_INDEX_CONFERENCE_USER_JOINED = 302;\n RCPDU_INDEX_CONFERENCE_USER_EXITED = 303;\n RCPDU_INDEX_CONFERENCE_USERS = 304;\n}\n\nenum RCPduNodeType_E {\n NT_TERMINAL = 0;\n NT_MULTIPORT_TERMINAL = 1;\n NT_MCU = 2;\n}\n\nenum RCPduReason_E {\n RSN_USERINITIATED = 0;\n RSN_DISCONNECTED = 1;\n RSN_SUPER_LEFT = 2;\n}\n\nenum RCPduResult_E {\n RET_SUCCESS = 0;\n RET_USER_REJECTED = 1;\n RET_INVALID_CONFERENCE = 2;\n RET_INVALID_PASSWORD = 3;\n RET_INVALID_CONVENER_PASSWORD = 4;\n RET_CHALLENGE_RESPONSE_REQUIRED = 5;\n RET_INVALID_CHALLENGE_RESPONSE = 6;\n RET_NO_CONNECTION = 7;\n RET_FULL_CAPACITY = 8;\n}\n\nenum RCPduNodeCategory_E {\n NC_CONVENTIONAL = 0;\n NC_COUNTED = 1;\n NC_ANONYMOUS = 2;\n}\n\nmessage RCConferenceDescriptorPdu {\n required uint32 id = 1;\n required string name = 2;\n optional bytes description = 3;\n optional uint32 mode = 4;\n optional string password = 5;\n optional uint32 capacity = 6;\n optional bytes user_data = 7;\n}\n\nmessage RCNodeRecordPdu {\n required uint32 id = 1;\n optional uint32 superior_node = 2;\n required RCPduNodeType_E type = 3;\n required string name = 4;\n required uint32 capability = 5;\n optional string net_address = 6;\n optional RCPduNodeCategory_E category = 7;\n}\n\nmessage RCApplicationRecordPdu {\n required uint32 id = 1; // session id\n required string name = 2;\n required string tag = 3;\n repeated uint32 channel_ids = 4 [packed = true];\n optional uint32 capability = 5;\n}\n\n//reg.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCRegistryRegisterKeyPdu {\n required RCPduType_E type = 1 [default = RCPDU_REG_REGISTER_KEY];\n required uint32 id = 2;\n required string name = 3;\n required string tag = 4;\n optional bytes user_data = 5;\n}\n\nmessage RCRegistryUnregisterKeyPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UNREGISTER_KEY];\n required uint32 key_id = 2;\n}\n\nmessage RCRegistryRegisterObjPdu {\n optional RCPduType_E type = 1;\n required uint32 obj_id = 2;\n required string name = 3;\n required string tag = 4;\n optional uint32 owner = 5;\n optional bytes user_data = 6;\n}\n\nmessage RCRegistryUnregisterObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UNREGISTER_OBJ];\n required uint32 obj_id = 2;\n}\n\nmessage RCRegistryUpdateObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UPDATE_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCAdapterItemPdu {\n required RCPduType_E type = 1;\n required bytes item_data = 2;\n}\n\n// adapter pdu that used to package a list of pdu.\nmessage RCAdapterPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ADAPTER];\n repeated RCAdapterItemPdu item = 2;\n}\n\n// table operation pdu\nmessage RCRegistryTableItemPdu {\n required uint32 item_idx = 1;\n required uint32 owner = 2;\n required bytes item_data = 3;\n optional uint32 register_obj_id=4;\n}\n\nmessage RCRegistryTableInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_INSERT_PDU];\n repeated RCRegistryTableItemPdu items = 2;\n}\n\nmessage RCRegistryTableDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_DELETE_PDU];\n repeated uint32 item_idx = 2;\n}\n\nmessage RCRegistryTableUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU];\n repeated RCRegistryTableItemPdu items = 2;\n}\n\n// roster operation pdu\nmessage RCRegistryRosterItemPdu {\n required uint32 node_id = 1;\n required bytes node_data = 2;\n}\nmessage RCRegistryWBItemPdu {\n required uint32 node_id = 1;\n required bytes node_data = 2;\n}\nmessage RCRegistryRosterInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_INSERT_PDU];\n repeated RCRegistryRosterItemPdu items = 2;\n}\n\nmessage RCRegistryRosterDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_DELETE_PDU];\n required uint32 node_id = 2;\n}\n\nmessage RCRegistryRosterUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_UPDATE_PDU];\n repeated RCRegistryRosterItemPdu items = 2;\n}\n\n//message RCCleanupNodePdu\n//{\n// optional RCPduType_E type = 1 [default = RCPDU_REG_CLEANUP_NODE];\n// required uint32 node_id = 2;\n//}\n\n// parameter operation pdu\nmessage RCRegistryParameterUpdatePdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_PARAMETER_UPDATE_PDU];\n required uint32 value = 2 [default = 0];\n optional uint32 begin_bit = 3 [default = 31];\n optional uint32 end_bit = 4;\n}\n\n// queue operation pdu\nmessage RCRegistryQueueItemPdu {\n required uint32 owner = 1;\n required uint32 item_id = 2;\n optional bytes item_data = 3;\n optional uint32 item_idx = 4;\n}\n\nmessage RCRegstryQueueInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_INSERT_PDU];\n repeated RCRegistryQueueItemPdu items = 2;\n}\n\nmessage RCRegistryQueueDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_DELETE_PDU];\n required uint32 item_id = 2;\n}\n\nmessage RCRegistryQueueUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_UPDATE_PDU];\n repeated RCRegistryQueueItemPdu items = 2;\n}\n\nmessage RCRegistryRequestObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_REQUEST_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryResponseObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_RESPONSE_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryCounterRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_COUNTER_REQUEST_PDU];\n required uint32 count = 2;\n}\n\nmessage RCRegistryCounterResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_COUNTER_RESPONSE_PDU];\n required uint32 start = 2;\n required uint32 end = 3;\n}\n\n// mcs\noption optimize_for = LITE_RUNTIME;\n\n// Session management\nmessage RCSessionJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_SESSION_JOIN_REQUEST];\n required uint32 id = 2;\n required string name = 3;\n required string tag = 4;\n optional bytes session_data = 5; //\u805A\u5408\u5728\u4E00\u8D77\u7684registry\u4FE1\u606F\n}\n\nmessage RCSessionJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_SESSION_JOIN_RESPONSE];\n required uint32 id = 2;\n optional bytes response_data = 3;\n}\n\n// Channel management\nmessage RCChannelGrabRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelGrabResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_RESPONSE];\n required uint32 initiator = 2;\n required uint32 requested_channel_id = 3;\n required RCPduResult_E result = 4;\n optional uint32 channel_id = 5;\n}\n\nmessage RCChannelGrabIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_INDICATION];\n required uint32 initiator = 2;\n optional uint32 channel_id = 3;\n}\n\nmessage RCChannelJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_CHANNEL_JOIN_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_JOIN_RESPONSE];\n required uint32 initiator = 2;\n required uint32 requested_channel_id = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCChannelLeaveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_LEAVE_REQUEST];\n required uint32 initiator = 2;\n repeated uint32 channel_ids = 3 [packed = true];\n}\n\nmessage RCChannelReleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_RELEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelReleaseIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CHANNEL_RELEASE_INDICATION];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\n// Data transfer\nmessage RCSendDataPdu {\n required RCPduType_E type = 1 [default = RCPDU_SEND_DATA_REQUEST];\n required RCPduType_E sub_type = 2;\n required uint32 initiator = 3;\n required uint32 conf_id = 4;\n required uint32 session_id = 5;\n required uint32 channel_id = 6;\n required bool upward = 7;\n required bool reliability = 8;\n required RCPduPriority_E priority = 9;\n required bytes data = 10;\n optional uint32 peer = 11;\n optional RCPduSegment_E seg = 12;\n optional uint32 total_size = 13;\n optional uint32 site_id = 14;\n optional string user_id = 15;\n optional string user_name = 16;\n optional string user_role = 17;\n optional string device_type = 18;\n optional string site = 19;\n}\n\n// Token management\nmessage RCTokenGrabRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GRAB_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenGrabConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GRAB_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenInhibitRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_INHIBIT_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenInhibitConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_INHIBIT_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenGiveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required uint64 recipient = 4;\n}\n\nmessage RCTokenGiveIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_INDICATION];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required uint64 recipient = 4;\n}\n\nmessage RCTokenGiveResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_RESPONSE];\n required uint32 token_id = 2;\n required uint64 recipient = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCTokenGiveConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_CONFIRM];\n required uint32 token_id = 2;\n required uint64 recipient = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenPleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_PLEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenPleaseIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_PLEASE_INDICATION];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenReleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_RELEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenReleaseConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenTestRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenTestConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduTokenStatus_E status = 4;\n}\n\n//gcc.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCConferenceJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_CONFERENCE_JOIN_REQUEST];\n required uint32 initiator = 2;\n required RCPduNodeType_E node_type = 3;\n required RCConferenceDescriptorPdu class_description = 4;//conf_desc\n}\n\nmessage RCConferenceJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_JOIN_RESPONSE];\n required uint32 conf_id = 2;\n required RCPduResult_E result = 3;\n optional RCConferenceDescriptorPdu class_description = 4;\n}\n\nmessage RCConferenceInviteRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_INVITE_REQUEST];\n required uint32 initiator = 2;\n required RCConferenceDescriptorPdu class_description = 3;\n}\n\nmessage RCConferenceInviteResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_INVITE_RESPONSE];\n required RCPduResult_E result = 2;\n optional bytes user_data = 3;\n}\n\nmessage RCConferenceLockRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LOCK_REQUEST];\n}\n\nmessage RCConferenceLockResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LOCK_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceLockIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_LOCK_INDICATION];\n}\n\nmessage RCConferenceUnlockRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_UNLOCK_REQUEST];\n}\n\nmessage RCConferenceUnlockResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_UNLOCK_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceUnlockIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_UNLOCK_INDICATION];\n}\n\nmessage RCConferenceLeaveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LEAVE_REQUEST];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceTerminateRequestPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_REQUEST];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceTerminateResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceTerminateIndicationPdu { // MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_INDICATION];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceEjectUserRequestPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_REQUEST];\n required uint32 ejected_node_id = 2;\n required RCPduReason_E reason = 3;\n}\n\nmessage RCConferenceEjectUserResponsePdu { // MCS_Send_Data on Node ID Channel of requester\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_RESPONSE];\n required uint32 ejected_node_id = 2;\n required RCPduResult_E result = 3;\n}\n\nmessage RCConferenceEjectUserIndicationPdu { // MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_INDICATION];\n required uint32 ejected_node_id = 2;\n required RCPduReason_E reason = 3;\n}\n\nmessage RCRosterUpdateIndicationPdu { // MCS_Send_Data on Node ID Channel or\n// MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1 [default = RCPDU_ROSTER_UPDATE_INDICATION];\n required bool full_refresh = 2; // Conference Roster and all\n repeated RCNodeRecordPdu node_record = 3;\n repeated RCApplicationRecordPdu app_record = 4;\n}\n\nmessage RCRegistryUpdateRequestPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_REQUEST];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryUpdateIndicationPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_RESPONSE];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryUpdateResponsePdu { // MCS_Send_Data on Node ID Channel of requester\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_INDICATION];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCFunctionNotSupportedResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_FUNCTION_NOT_SUPPORTED_RESPONSE];\n required uint32 request_pdu_id = 2;\n}\n\n//ape.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCConferenceSendDataRequestPdu {\n optional uint32 initiator = 1;\n optional uint32 peer = 2;\n required bool is_public = 3;\n required bytes user_data = 4;\n}\n\nmessage RCChatSendDataRequestPdu {\n optional uint32 initiator = 1;\n optional uint32 peer = 2;\n required bool is_public = 3;\n required bytes user_data = 4;\n required string from_role = 5;\n required bytes from_name = 6;\n}\n\nmessage RCDocSendDataRequestPdu {\n required uint32 id = 1;\n required string doc_type = 2;\n required string uri = 3;\n optional uint32 owner = 4;\n optional uint32 from = 5;\n optional string name = 6;\n optional uint32 cur_page_no = 7;\n optional uint32 cur_H = 8;\n optional uint32 cur_V = 9;\n optional uint32 scale = 10;\n optional uint32 page_num = 11;\n}\nmessage RCDocSendDataModelPdu {\n required uint32 item_idx=1;//\u552F\u4E00\u6807\u8BC6\n required uint32 owner=2;\n optional uint32 from=3;\n optional uint32 cur_page_no=4;\n optional uint32 page_num =5;\n optional string file_type=6;\n optional string creat_user_id=7;//\u521B\u5EFA\u6587\u6863userid\n optional string relative_url=8;//\u6587\u6863\u76F8\u5BF9\u5730\u5740\n optional string url =9;//\u6587\u6863\u5730\u5740\n optional uint32 cur_V=10;\n optional uint32 cur_H=11;\n optional uint32 scale=12;\n optional bool visible=13;\n optional uint32 action=14;//0\uFF0C\u65E0\u64CD\u4F5C\uFF0C 1\u7FFB\u9875\u30012.\u663E\u793A/\u9690\u85CF\n optional string doc_id=15;//\u6587\u6863\u5728\u670D\u52A1\u5668\u6570\u636E\u5E93\u4E2D\u7684\u552F\u4E00id\n optional string file_name=16;//\u6587\u6863\u7684\u540D\u5B57\n optional string dynamic_TS=17;//\"dynamicTransferStatic\": \"0\"\n optional string md5=18;//md5\n\n}\nmessage RCGiftSendDataRequestPdu {\n optional uint32 initiator = 1;\n required uint32 peer = 2;\n required uint32 index = 3;\n required uint32 num = 4;\n optional bytes user_data = 5;\n}\n\nmessage RCAudioSendDataRequestPdu {\n optional uint32 initiator = 1;\n required bytes user_data = 2;\n}\n\nmessage RCVideoSendDataRequestPdu {\n optional uint32 initiator = 1;\n required bool key_frame = 2;\n required uint32 sequence_id = 3;\n required uint32 slice_id = 4;\n required bytes user_data = 5;\n}\n\nmessage RCAudioChannelInfoRecordPdu {\n required uint32 status = 1;\n required uint32 device_id = 2;\n required uint32 framerate = 3;\n required uint32 bitrate = 4;\n required uint32 codec = 5;\n}\n\nmessage RCVideoChannelInfoRecordPdu {\n optional uint32 status = 1;\n optional uint32 device_id = 2;\n optional uint32 width = 3;\n optional uint32 height = 4;\n optional uint32 framerate = 5;\n optional uint32 bitrate = 6;\n optional uint32 codec = 7;\n optional string peer_id = 8;\n optional string url = 9;\n optional uint32 type = 10;\n optional string shamlive = 11;\n optional uint32 livetype = 12;\n optional uint32 releaseGrab = 13;\n optional string curTime = 14;\n}\n\nmessage RCAudioDeviceInfoRecordPdu {\n required uint32 device_id = 1;\n required string device_name = 2;\n}\n\nmessage RCVideoDeviceInfoRecordPdu {\n required uint32 device_id = 1;\n required string device_name = 2;\n}\n\nmessage RCNodeInfoRecordPdu {\n required uint32 node_id = 1;\n required string name = 2;\n required uint32 role = 3;\n required uint32 level = 4;\n repeated RCAudioDeviceInfoRecordPdu audio_records = 5;\n repeated RCVideoDeviceInfoRecordPdu video_records = 6;\n optional uint32 status = 7;\n optional bytes user_data = 8;\n optional string user_id = 9;\n optional uint32 handUpTime = 10;\n optional uint32 deviceType = 11;\n optional uint32 mobileDirection = 12;\n}\n\nmessage RCVotingPollSettingsPdu {\n required bool timer = 1;\n optional uint32 time_limit = 2;\n optional uint32 total_score = 3;\n}\n\nmessage RCVotingPollResultPdu {\n required string title = 1;\n required string content = 2;\n optional uint32 score = 3;\n}\n\nmessage RCVotingPollQuestionPdu {\n required uint32 index = 1;\n required uint32 type = 2;\n required string title = 3;\n repeated string options = 4;\n optional uint32 score = 5;\n optional uint32 time_limit = 6;\n optional string restrict_input = 7;\n optional uint32 char_limit = 8;\n optional string answer = 9;\n repeated uint32 selections = 10;\n repeated string responses = 11;\n}\n\nmessage RCVotingPollRecordPdu {\n required RCVotingPollSettingsPdu settings = 1;\n required string title = 2;\n repeated RCVotingPollResultPdu results = 3;\n repeated RCVotingPollQuestionPdu questions = 4;\n}\n\nmessage RCNodeInfoUserDataPdu {\n optional string qq = 1;\n optional string skype = 2;\n optional string mobile = 3;\n}\nmessage RCTabUpdateDataRequestPdu {\n optional uint32 id = 1;\n optional bytes action = 2;\n optional uint32 uncomprLen =3;\n}\n\nmessage RCWhiteBoardDataModel {\n required uint32 type= 1;//\u767D\u677F\u7C7B\u578B\n required uint32 itemIdx= 2;//itemIdx \u6BCF\u4E00\u6B21\u7ED8\u5236\u7684\u552F\u4E00\u6807\u8BC6\n required uint32 initiator=3; //\u7ED8\u5236\u6765\u81EA\u8C01\n required uint32 parentId=4; //\u7236\u7EA7\u7684id\n required uint32 curPage= 5;//\u9875\u7801\n optional string pointGroup=6; //\u5750\u6807\u70B9\u96C6\u6570\u7EC4\u7684JSON\u5B57\u7B26\u4E32\n optional string color=7 [default = \"#000000\"]; //\u989C\u8272\n optional uint32 thickness= 8 ;//\u7EBF\u6761\u7C97\u7EC6\n optional uint32 radius= 9;//\u56ED\u7684\u534A\u5F84\n optional uint32 fontSize= 10;//\u5B57\u4F53\u5927\u5C0F\n optional string fontName= 11;//\u5B57\u4F53\u540D\u79F0\n optional string text= 12;//\u6587\u672C\u5185\u5BB9\n optional bytes data = 13;//\u6682\u65F6\u9884\u7559\u7684\u53C2\u6570\n}\nmessage RCClassSendDataModelPdu {\n optional uint32 item_idx=1;\n optional uint32 from=2;\n optional uint32 owner=3;\n optional uint32 action_type=4;//\u72B6\u6001\u6539\u53D8\u7684\u7C7B\u578B\n optional RCClassStatusInfoPdu class_status_info=5;//\u5F53\u524D\u8BFE\u5802\u72B6\u6001\u7684\u4FE1\u606F\n}\nmessage RCClassStatusInfoPdu {\n optional uint32 node_id=1;//mcu\u4E2D\u7684\u552F\u4E00ID\n optional string user_id=2;\n optional string user_name=3;\n optional string site_id=4;//\u7AD9\u70B9\u53F7\n optional uint32 class_id=5;\n optional string class_name=6;\n required uint32 class_type=7;//\u8BFE\u5802\u7C7B\u578B\n required uint32 class_status=9;//\u8BFE\u5802\u7684\u72B6\u6001\n optional string class_startTime=10;//\u8BFE\u5802\u70B9\u51FB\u5F00\u59CB\u65F6\u95F4\n optional string class_stopTime=11;//\u6700\u540E\u4E00\u6B21\u505C\u6B62\u7684\u65F6\u95F4(\u70B9\u6682\u505C\u6216\u7ED3\u675F)\uFF0C\u6BCF\u6B21\u53D1\u9001\u6570\u636E\u90FD\u83B7\u53D6\u5F53\u524D\u65F6\u95F4\u6233\n optional uint32 class_timestamp=12;//\u76F8\u5BF9\u4E8E\u70B9\u5F00\u59CB\u8BFE\u5802\u7684\u65F6\u95F4\u6233\n optional string class_beginTime=13;//\u8BFE\u5802\u521B\u5EFA\u7684\u65F6\u95F4,\u8FD9\u4E2A\u662FSass\u8FD4\u56DE\u7684\n optional string class_endTime=14;//\u8BFE\u5802\u7ED3\u675F\u7684\u65F6\u95F4\uFF0C\u8FD9\u4E2A\u662FSass\u8FD4\u56DE\u7684\n optional bool record_status=15;//\u5F53\u524D\u5F55\u5236\u72B6\u6001\n optional uint32 record_timestamp=16;//\u76F8\u5BF9\u4E8E\u9996\u6B21\u5F00\u59CB\u5F55\u5236\u7684\u65F6\u95F4\u6233\n optional string record_fileName=17;//\u5F55\u5236\u7684\u6587\u4EF6\u540D\n optional string record_downloadUrl=18;//\u4E0B\u8F7D\u5730\u5740\n optional uint32 server_timestamp=19;//\u5F53\u524D\u7684\u7CFB\u7EDF\u65F6\u95F4\u6233\n optional uint32 active_doc_id=20;//\u5F53\u524D\u6FC0\u6D3B\u7684\u6587\u6863id\n optional uint32 active_doc_cur_page=21;//\u5F53\u524D\u6FC0\u6D3B\u7684\u6587\u6863\u7684\u5F53\u524D\u9875\n}\n\n//end\n"; 14447 + var _default = "\n//start\n// pdu_def.proto\n\n// syntax = \"proto3\";\n\noption optimize_for = LITE_RUNTIME;\nenum RCPduPriority_E {\n DP_TOP = 0;\n DP_HIGH = 1;\n DP_MEDIUM = 2;\n DP_LOW = 3;\n}\n\nenum RCPduSegment_E {\n SEG_BEGIN = 0;\n SEG_END = 1;\n SEG_ONCE = 2;\n}\n\nenum RCPduTokenStatus_E {\n TS_NOT_IN_USE = 0;\n TS_SELF_GRABBED = 1;\n TS_OTHER_GRABBED = 2;\n TS_SELF_INHIBITED = 3;\n TS_OTHER_INHIBITED = 4;\n TS_SELF_RECIPIENT = 5;\n TS_SELF_GIVING = 6;\n TS_OTHER_GIVING = 7;\n}\n\nenum RCPduType_E {\n// GCC PDU\n RCPDU_CONNECT_PROVIDER_REQUEST = 0;\n RCPDU_CONNECT_PROVIDER_RESPONSE = 1;\n RCPDU_CONFERENCE_JOIN_REQUEST = 2;\n RCPDU_CONFERENCE_JOIN_RESPONSE = 3;\n RCPDU_CONFERENCE_INVITE_REQUEST = 10;\n RCPDU_CONFERENCE_INVITE_RESPONSE = 11;\n RCPDU_CONFERENCE_LOCK_REQUEST = 20;\n RCPDU_CONFERENCE_LOCK_RESPONSE = 21;\n RCPDU_CONFERENCE_LOCK_INDICATION = 22;\n RCPDU_CONFERENCE_UNLOCK_REQUEST = 30;\n RCPDU_CONFERENCE_UNLOCK_RESPONSE = 31;\n RCPDU_CONFERENCE_UNLOCK_INDICATION = 32;\n RCPDU_CONFERENCE_LEAVE_REQUEST = 39;\n RCPDU_CONFERENCE_TERMINATE_REQUEST = 40;\n RCPDU_CONFERENCE_TERMINATE_RESPONSE = 41;\n RCPDU_CONFERENCE_TERMINATE_INDICATION = 42;\n RCPDU_CONFERENCE_EJECT_USER_REQUEST = 50;\n RCPDU_CONFERENCE_EJECT_USER_RESPONSE = 51;\n RCPDU_CONFERENCE_EJECT_USER_INDICATION = 52;\n RCPDU_ROSTER_UPDATE_INDICATION = 60;\n RCPDU_REGISTRY_UPDATE_REQUEST = 70; // INCLUDE ALL OBJS OPERATION\n RCPDU_REGISTRY_UPDATE_RESPONSE = 71;\n RCPDU_REGISTRY_UPDATE_INDICATION = 72;\n RCPDU_FUNCTION_NOT_SUPPORTED_RESPONSE = 80;\n\n // MCS PDU\n RCPDU_SESSION_JOIN_REQUEST = 90;\n RCPDU_SESSION_JOIN_RESPONSE = 91;\n RCPDU_CHANNEL_GRAB_REQUEST = 100;\n RCPDU_CHANNEL_GRAB_RESPONSE = 101;\n RCPDU_CHANNEL_GRAB_INDICATION = 102;\n RCPDU_CHANNEL_JOIN_REQUEST = 103;\n RCPDU_CHANNEL_JOIN_RESPONSE = 104;\n RCPDU_CHANNEL_LEAVE_REQUEST = 105;\n RCPDU_CHANNEL_RELEASE_REQUEST = 106;\n RCPDU_CHANNEL_RELEASE_INDICATION = 107;\n RCPDU_SEND_DATA_REQUEST = 120;\n RCPDU_SEND_DATA_INDICATION = 121;\n RCPDU_UNIFORM_SEND_DATA_REQUEST = 125;\n RCPDU_UNIFORM_SEND_DATA_INDICATION = 126;\n RCPDU_TOKEN_GRAB_REQUEST = 130;\n RCPDU_TOKEN_GRAB_CONFIRM = 131;\n RCPDU_TOKEN_INHIBIT_REQUEST = 132;\n RCPDU_TOKEN_INHIBIT_CONFIRM = 133;\n RCPDU_TOKEN_GIVE_REQUEST = 134;\n RCPDU_TOKEN_GIVE_INDICATION = 135;\n RCPDU_TOKEN_GIVE_RESPONSE = 136;\n RCPDU_TOKEN_GIVE_CONFIRM = 137;\n RCPDU_TOKEN_PLEASE_REQUEST = 138;\n RCPDU_TOKEN_PLEASE_INDICATION = 139;\n RCPDU_TOKEN_RELEASE_REQUEST = 140;\n RCPDU_TOKEN_RELEASE_CONFIRM = 141;\n RCPDU_TOKEN_TEST_REQUEST = 142;\n RCPDU_TOKEN_TEST_CONFIRM = 143;\n\n // Registry PDU\n RCPDU_REG_REGISTER_KEY = 200;\n RCPDU_REG_UNREGISTER_KEY = 201;\n RCPDU_REG_REGISTER_ROSTER = 202;\n RCPDU_REG_REGISTER_TOKEN = 203;\n RCPDU_REG_REGISTER_PARAMETER = 204;\n RCPDU_REG_REGISTER_COUNTER = 205;\n RCPDU_REG_REGISTER_TABLE = 206;\n RCPDU_REG_REGISTER_CACHE = 207;\n RCPDU_REG_REGISTER_OBJ = 208;\n RCPDU_REG_UNREGISTER_OBJ = 209;\n RCPDU_REG_UPDATE_OBJ = 210;\n RCPDU_REG_ADAPTER = 211;\n RCPDU_REG_CLEANUP_NODE = 212;\n RCPDU_REG_REGISTER_QUEUE = 213;\n\n // Registry Obj update PDU\n RCPDU_REG_TABLE_INSERT_PDU = 230;\n RCPDU_REG_TABLE_DELETE_PDU = 231;\n RCPDU_REG_TABLE_UPDATE_PDU = 232;\n RCPDU_REG_ROSTER_INSERT_PDU = 240;\n RCPDU_REG_ROSTER_DELETE_PDU = 241;\n RCPDU_REG_ROSTER_UPDATE_PDU = 242;\n RCPDU_REG_PARAMETER_UPDATE_PDU = 250;\n RCPDU_REG_QUEUE_INSERT_PDU = 255;\n RCPDU_REG_QUEUE_DELETE_PDU = 256;\n RCPDU_REG_QUEUE_UPDATE_PDU = 257;\n\n // data\n RCPDU_CONFERENCE_SEND_DATA_REQUEST = 259;\n RCPDU_VIDEO_SEND_DATA_REQUEST = 260;\n RCPDU_AUDIO_SEND_DATA_REQUEST = 261;\n RCPDU_GIFT_SEND_DATA_REQUEST = 262;\n RCPDU_CHAT_SEND_DATA_REQUEST = 263;\n RCPDU_VOTING_POLL_RECORD = 265;\n\n // Registry resource request or response PDU\n RCPDU_REG_REQUEST_OBJ = 290;\n RCPDU_REG_RESPONSE_OBJ = 291;\n RCPDU_REG_COUNTER_REQUEST_PDU = 292;\n RCPDU_REG_COUNTER_RESPONSE_PDU = 293;\n\n // Index exchange\n RCPDU_INDEX_ADAPTER = 300;\n RCPDU_INDEX_SERVER_USERS = 301;\n RCPDU_INDEX_CONFERENCE_USER_JOINED = 302;\n RCPDU_INDEX_CONFERENCE_USER_EXITED = 303;\n RCPDU_INDEX_CONFERENCE_USERS = 304;\n}\n\nenum RCPduNodeType_E {\n NT_TERMINAL = 0;\n NT_MULTIPORT_TERMINAL = 1;\n NT_MCU = 2;\n}\n\nenum RCPduReason_E {\n RSN_USERINITIATED = 0;\n RSN_DISCONNECTED = 1;\n RSN_SUPER_LEFT = 2;\n}\n\nenum RCPduResult_E {\n RET_SUCCESS = 0;\n RET_USER_REJECTED = 1;\n RET_INVALID_CONFERENCE = 2;\n RET_INVALID_PASSWORD = 3;\n RET_INVALID_CONVENER_PASSWORD = 4;\n RET_CHALLENGE_RESPONSE_REQUIRED = 5;\n RET_INVALID_CHALLENGE_RESPONSE = 6;\n RET_NO_CONNECTION = 7;\n RET_FULL_CAPACITY = 8;\n}\n\nenum RCPduNodeCategory_E {\n NC_CONVENTIONAL = 0;\n NC_COUNTED = 1;\n NC_ANONYMOUS = 2;\n}\n\nmessage RCConferenceDescriptorPdu {\n required uint32 id = 1;\n required string name = 2;\n optional bytes description = 3;\n optional uint32 mode = 4;\n optional string password = 5;\n optional uint32 capacity = 6;\n optional bytes user_data = 7;\n}\n\nmessage RCNodeRecordPdu {\n required uint32 id = 1;\n optional uint32 superior_node = 2;\n required RCPduNodeType_E type = 3;\n required string name = 4;\n required uint32 capability = 5;\n optional string net_address = 6;\n optional RCPduNodeCategory_E category = 7;\n}\n\nmessage RCApplicationRecordPdu {\n required uint32 id = 1; // session id\n required string name = 2;\n required string tag = 3;\n repeated uint32 channel_ids = 4 [packed = true];\n optional uint32 capability = 5;\n}\n\n//reg.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCRegistryRegisterKeyPdu {\n required RCPduType_E type = 1 [default = RCPDU_REG_REGISTER_KEY];\n required uint32 id = 2;\n required string name = 3;\n required string tag = 4;\n optional bytes user_data = 5;\n}\n\nmessage RCRegistryUnregisterKeyPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UNREGISTER_KEY];\n required uint32 key_id = 2;\n}\n\nmessage RCRegistryRegisterObjPdu {\n optional RCPduType_E type = 1;\n required uint32 obj_id = 2;\n required string name = 3;\n required string tag = 4;\n optional uint32 owner = 5;\n optional bytes user_data = 6;\n}\n\nmessage RCRegistryUnregisterObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UNREGISTER_OBJ];\n required uint32 obj_id = 2;\n}\n\nmessage RCRegistryUpdateObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_UPDATE_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCAdapterItemPdu {\n required RCPduType_E type = 1;\n required bytes item_data = 2;\n}\n\n// adapter pdu that used to package a list of pdu.\nmessage RCAdapterPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ADAPTER];\n repeated RCAdapterItemPdu item = 2;\n}\n\n// table operation pdu\nmessage RCRegistryTableItemPdu {\n required uint32 item_idx = 1;\n required uint32 owner = 2;\n required bytes item_data = 3;\n optional uint32 register_obj_id=4;\n}\n\nmessage RCRegistryTableInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_INSERT_PDU];\n repeated RCRegistryTableItemPdu items = 2;\n}\n\nmessage RCRegistryTableDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_DELETE_PDU];\n repeated uint32 item_idx = 2;\n}\n\nmessage RCRegistryTableUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU];\n repeated RCRegistryTableItemPdu items = 2;\n}\n\n// roster operation pdu\nmessage RCRegistryRosterItemPdu {\n required uint32 node_id = 1;\n required bytes node_data = 2;\n}\nmessage RCRegistryWBItemPdu {\n required uint32 node_id = 1;\n required bytes node_data = 2;\n}\nmessage RCRegistryRosterInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_INSERT_PDU];\n repeated RCRegistryRosterItemPdu items = 2;\n}\n\nmessage RCRegistryRosterDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_DELETE_PDU];\n required uint32 node_id = 2;\n}\n\nmessage RCRegistryRosterUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_ROSTER_UPDATE_PDU];\n repeated RCRegistryRosterItemPdu items = 2;\n}\n\n//message RCCleanupNodePdu\n//{\n// optional RCPduType_E type = 1 [default = RCPDU_REG_CLEANUP_NODE];\n// required uint32 node_id = 2;\n//}\n\n// parameter operation pdu\nmessage RCRegistryParameterUpdatePdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_PARAMETER_UPDATE_PDU];\n required uint32 value = 2 [default = 0];\n optional uint32 begin_bit = 3 [default = 31];\n optional uint32 end_bit = 4;\n}\n\n// queue operation pdu\nmessage RCRegistryQueueItemPdu {\n required uint32 owner = 1;\n required uint32 item_id = 2;\n optional bytes item_data = 3;\n optional uint32 item_idx = 4;\n}\n\nmessage RCRegstryQueueInsertItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_INSERT_PDU];\n repeated RCRegistryQueueItemPdu items = 2;\n}\n\nmessage RCRegistryQueueDeleteItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_DELETE_PDU];\n required uint32 item_id = 2;\n}\n\nmessage RCRegistryQueueUpdateItemPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_QUEUE_UPDATE_PDU];\n repeated RCRegistryQueueItemPdu items = 2;\n}\n\nmessage RCRegistryRequestObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_REQUEST_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryResponseObjPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_RESPONSE_OBJ];\n required RCPduType_E sub_type = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryCounterRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_COUNTER_REQUEST_PDU];\n required uint32 count = 2;\n}\n\nmessage RCRegistryCounterResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_REG_COUNTER_RESPONSE_PDU];\n required uint32 start = 2;\n required uint32 end = 3;\n}\n\n// mcs\noption optimize_for = LITE_RUNTIME;\n\n// Session management\nmessage RCSessionJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_SESSION_JOIN_REQUEST];\n required uint32 id = 2;\n required string name = 3;\n required string tag = 4;\n optional bytes session_data = 5; //\u805A\u5408\u5728\u4E00\u8D77\u7684registry\u4FE1\u606F\n}\n\nmessage RCSessionJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_SESSION_JOIN_RESPONSE];\n required uint32 id = 2;\n optional bytes response_data = 3;\n}\n\n// Channel management\nmessage RCChannelGrabRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelGrabResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_RESPONSE];\n required uint32 initiator = 2;\n required uint32 requested_channel_id = 3;\n required RCPduResult_E result = 4;\n optional uint32 channel_id = 5;\n}\n\nmessage RCChannelGrabIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_GRAB_INDICATION];\n required uint32 initiator = 2;\n optional uint32 channel_id = 3;\n}\n\nmessage RCChannelJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_CHANNEL_JOIN_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_JOIN_RESPONSE];\n required uint32 initiator = 2;\n required uint32 requested_channel_id = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCChannelLeaveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_LEAVE_REQUEST];\n required uint32 initiator = 2;\n repeated uint32 channel_ids = 3 [packed = true];\n}\n\nmessage RCChannelReleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CHANNEL_RELEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\nmessage RCChannelReleaseIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CHANNEL_RELEASE_INDICATION];\n required uint32 initiator = 2;\n required uint32 channel_id = 3;\n}\n\n// Data transfer\nmessage RCSendDataPdu {\n required RCPduType_E type = 1 [default = RCPDU_SEND_DATA_REQUEST];\n required RCPduType_E sub_type = 2;\n required uint32 initiator = 3;\n required uint32 conf_id = 4;\n required uint32 session_id = 5;\n required uint32 channel_id = 6;\n required bool upward = 7;\n required bool reliability = 8;\n required RCPduPriority_E priority = 9;\n required bytes data = 10;\n optional uint32 peer = 11;\n optional RCPduSegment_E seg = 12;\n optional uint32 total_size = 13;\n optional uint32 site_id = 14;\n optional string user_id = 15;\n optional string user_name = 16;\n optional string user_role = 17;\n optional string device_type = 18;\n optional string site = 19;\n}\n\n// Token management\nmessage RCTokenGrabRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GRAB_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenGrabConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GRAB_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenInhibitRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_INHIBIT_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenInhibitConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_INHIBIT_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenGiveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required uint64 recipient = 4;\n}\n\nmessage RCTokenGiveIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_INDICATION];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required uint64 recipient = 4;\n}\n\nmessage RCTokenGiveResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_RESPONSE];\n required uint32 token_id = 2;\n required uint64 recipient = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCTokenGiveConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_GIVE_CONFIRM];\n required uint32 token_id = 2;\n required uint64 recipient = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenPleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_PLEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenPleaseIndicationPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_PLEASE_INDICATION];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenReleaseRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_RELEASE_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenReleaseConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduResult_E result = 4;\n required RCPduTokenStatus_E status = 5;\n}\n\nmessage RCTokenTestRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_REQUEST];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n}\n\nmessage RCTokenTestConfirmPdu {\n optional RCPduType_E type = 1 [default = RCPDU_TOKEN_TEST_CONFIRM];\n required uint32 initiator = 2;\n required uint32 token_id = 3;\n required RCPduTokenStatus_E status = 4;\n}\n\n//gcc.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCConferenceJoinRequestPdu {\n required RCPduType_E type = 1 [default = RCPDU_CONFERENCE_JOIN_REQUEST];\n required uint32 initiator = 2;\n required RCPduNodeType_E node_type = 3;\n required RCConferenceDescriptorPdu class_description = 4;//conf_desc\n}\n\nmessage RCConferenceJoinResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_JOIN_RESPONSE];\n required uint32 conf_id = 2;\n required RCPduResult_E result = 3;\n optional RCConferenceDescriptorPdu class_description = 4;\n}\n\nmessage RCConferenceInviteRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_INVITE_REQUEST];\n required uint32 initiator = 2;\n required RCConferenceDescriptorPdu class_description = 3;\n}\n\nmessage RCConferenceInviteResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_INVITE_RESPONSE];\n required RCPduResult_E result = 2;\n optional bytes user_data = 3;\n}\n\nmessage RCConferenceLockRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LOCK_REQUEST];\n}\n\nmessage RCConferenceLockResponsePdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LOCK_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceLockIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_LOCK_INDICATION];\n}\n\nmessage RCConferenceUnlockRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_UNLOCK_REQUEST];\n}\n\nmessage RCConferenceUnlockResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_UNLOCK_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceUnlockIndicationPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_UNLOCK_INDICATION];\n}\n\nmessage RCConferenceLeaveRequestPdu {\n optional RCPduType_E type = 1 [default = RCPDU_CONFERENCE_LEAVE_REQUEST];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceTerminateRequestPdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_REQUEST];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceTerminateResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_RESPONSE];\n required RCPduResult_E result = 2;\n}\n\nmessage RCConferenceTerminateIndicationPdu { // MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_TERMINATE_INDICATION];\n required RCPduReason_E reason = 2;\n}\n\nmessage RCConferenceEjectUserRequestPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_REQUEST];\n required uint32 ejected_node_id = 2;\n required RCPduReason_E reason = 3;\n}\n\nmessage RCConferenceEjectUserResponsePdu { // MCS_Send_Data on Node ID Channel of requester\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_RESPONSE];\n required uint32 ejected_node_id = 2;\n required RCPduResult_E result = 3;\n}\n\nmessage RCConferenceEjectUserIndicationPdu { // MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1\n [default = RCPDU_CONFERENCE_EJECT_USER_INDICATION];\n required uint32 ejected_node_id = 2;\n required RCPduReason_E reason = 3;\n}\n\nmessage RCRosterUpdateIndicationPdu { // MCS_Send_Data on Node ID Channel or\n// MCS_Uniform_Send_Data on GCC_Broadcast_Channel\n optional RCPduType_E type = 1 [default = RCPDU_ROSTER_UPDATE_INDICATION];\n required bool full_refresh = 2; // Conference Roster and all\n repeated RCNodeRecordPdu node_record = 3;\n repeated RCApplicationRecordPdu app_record = 4;\n}\n\nmessage RCRegistryUpdateRequestPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_REQUEST];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryUpdateIndicationPdu { // MCS_Send_Data on Node ID Channel of Top GCC\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_RESPONSE];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required bytes user_data = 4;\n}\n\nmessage RCRegistryUpdateResponsePdu { // MCS_Send_Data on Node ID Channel of requester\n optional RCPduType_E type = 1 [default = RCPDU_REGISTRY_UPDATE_INDICATION];\n required uint32 key_id = 2;\n required uint32 obj_id = 3;\n required RCPduResult_E result = 4;\n}\n\nmessage RCFunctionNotSupportedResponsePdu {\n optional RCPduType_E type = 1\n [default = RCPDU_FUNCTION_NOT_SUPPORTED_RESPONSE];\n required uint32 request_pdu_id = 2;\n}\n\n//ape.proto\n\noption optimize_for = LITE_RUNTIME;\nmessage RCConferenceSendDataRequestPdu {\n optional uint32 initiator = 1;\n optional uint32 peer = 2;\n required bool is_public = 3;\n required bytes user_data = 4;\n}\n\nmessage RCChatSendDataRequestPdu {\n optional uint32 initiator = 1;\n optional uint32 peer = 2;\n required bool is_public = 3;\n required bytes user_data = 4;\n required string from_role = 5;\n required bytes from_name = 6;\n}\n\nmessage RCDocSendDataRequestPdu {\n required uint32 id = 1;\n required string doc_type = 2;\n required string uri = 3;\n optional uint32 owner = 4;\n optional uint32 from = 5;\n optional string name = 6;\n optional uint32 cur_page_no = 7;\n optional uint32 cur_H = 8;\n optional uint32 cur_V = 9;\n optional uint32 scale = 10;\n optional uint32 page_num = 11;\n}\nmessage RCDocSendDataModelPdu {\n required uint32 item_idx=1;//\u552F\u4E00\u6807\u8BC6\n required uint32 owner=2;\n optional uint32 from=3;\n optional uint32 cur_page_no=4;\n optional uint32 page_num =5;\n optional string file_type=6;\n optional string creat_user_id=7;//\u521B\u5EFA\u6587\u6863userid\n optional string relative_url=8;//\u6587\u6863\u76F8\u5BF9\u5730\u5740\n optional string url =9;//\u6587\u6863\u5730\u5740\n optional uint32 cur_V=10;\n optional uint32 cur_H=11;\n optional uint32 scale=12;\n optional bool visible=13;\n optional uint32 action=14;//0\uFF0C\u65E0\u64CD\u4F5C\uFF0C 1\u7FFB\u9875\u30012.\u663E\u793A/\u9690\u85CF\n optional string doc_id=15;//\u6587\u6863\u5728\u670D\u52A1\u5668\u6570\u636E\u5E93\u4E2D\u7684\u552F\u4E00id\n optional string file_name=16;//\u6587\u6863\u7684\u540D\u5B57\n optional string dynamic_TS=17;//\"dynamicTransferStatic\": \"0\"\n optional string md5=18;//md5\n\n}\nmessage RCGiftSendDataRequestPdu {\n optional uint32 initiator = 1;\n required uint32 peer = 2;\n required uint32 index = 3;\n required uint32 num = 4;\n optional bytes user_data = 5;\n}\n\nmessage RCAudioSendDataRequestPdu {\n optional uint32 initiator = 1;\n required bytes user_data = 2;\n}\n\nmessage RCVideoSendDataRequestPdu {\n optional uint32 initiator = 1;\n required bool key_frame = 2;\n required uint32 sequence_id = 3;\n required uint32 slice_id = 4;\n required bytes user_data = 5;\n}\n\nmessage RCAudioChannelInfoRecordPdu {\n required uint32 status = 1;\n required uint32 device_id = 2;\n required uint32 framerate = 3;\n required uint32 bitrate = 4;\n required uint32 codec = 5;\n}\n\nmessage RCVideoChannelInfoRecordPdu {\n optional uint32 status = 1;\n optional uint32 device_id = 2;\n optional uint32 width = 3;\n optional uint32 height = 4;\n optional uint32 framerate = 5;\n optional uint32 bitrate = 6;\n optional uint32 codec = 7;\n optional string peer_id = 8;\n optional string url = 9;\n optional uint32 type = 10;\n optional string shamlive = 11;\n optional uint32 livetype = 12;\n optional uint32 releaseGrab = 13;\n optional string curTime = 14;\n}\n\nmessage RCAudioDeviceInfoRecordPdu {\n required uint32 device_id = 1;\n required string device_name = 2;\n}\n\nmessage RCVideoDeviceInfoRecordPdu {\n required uint32 device_id = 1;\n required string device_name = 2;\n}\n\nmessage RCNodeInfoRecordPdu {\n required uint32 node_id = 1;\n required string name = 2;\n required uint32 role = 3;\n required uint32 level = 4;\n repeated RCAudioDeviceInfoRecordPdu audio_records = 5;\n repeated RCVideoDeviceInfoRecordPdu video_records = 6;\n optional uint32 status = 7;\n optional bytes user_data = 8;\n optional string user_id = 9;\n optional uint32 handUpTime = 10;\n optional uint32 deviceType = 11;\n optional uint32 mobileDirection = 12;\n}\n\nmessage RCVotingPollSettingsPdu {\n required bool timer = 1;\n optional uint32 time_limit = 2;\n optional uint32 total_score = 3;\n}\n\nmessage RCVotingPollResultPdu {\n required string title = 1;\n required string content = 2;\n optional uint32 score = 3;\n}\n\nmessage RCVotingPollQuestionPdu {\n required uint32 index = 1;\n required uint32 type = 2;\n required string title = 3;\n repeated string options = 4;\n optional uint32 score = 5;\n optional uint32 time_limit = 6;\n optional string restrict_input = 7;\n optional uint32 char_limit = 8;\n optional string answer = 9;\n repeated uint32 selections = 10;\n repeated string responses = 11;\n}\n\nmessage RCVotingPollRecordPdu {\n required RCVotingPollSettingsPdu settings = 1;\n required string title = 2;\n repeated RCVotingPollResultPdu results = 3;\n repeated RCVotingPollQuestionPdu questions = 4;\n}\n\nmessage RCNodeInfoUserDataPdu {\n optional string qq = 1;\n optional string skype = 2;\n optional string mobile = 3;\n}\nmessage RCTabUpdateDataRequestPdu {\n optional uint32 id = 1;\n optional bytes action = 2;\n optional uint32 uncomprLen =3;\n}\n\nmessage RCWhiteBoardDataModelPdu {\n required uint32 type= 1;//\u767D\u677F\u7C7B\u578B\n required uint32 itemIdx= 2;//itemIdx \u6BCF\u4E00\u6B21\u7ED8\u5236\u7684\u552F\u4E00\u6807\u8BC6\n required uint32 initiator=3; //\u7ED8\u5236\u6765\u81EA\u8C01\n required uint32 parentId=4; //\u7236\u7EA7\u7684id\n required uint32 cur_page_no= 5;//\u9875\u7801\n optional string pointGroup=6; //\u5750\u6807\u70B9\u96C6\u6570\u7EC4\u7684JSON\u5B57\u7B26\u4E32\n optional string color=7 [default = \"#000000\"]; //\u989C\u8272\n optional uint32 thickness= 8 ;//\u7EBF\u6761\u7C97\u7EC6\n optional uint32 radius= 9;//\u56ED\u7684\u534A\u5F84\n optional uint32 fontSize= 10;//\u5B57\u4F53\u5927\u5C0F\n optional string fontName= 11;//\u5B57\u4F53\u540D\u79F0\n optional string text= 12;//\u6587\u672C\u5185\u5BB9\n optional bytes data = 13;//\u6682\u65F6\u9884\u7559\u7684\u53C2\u6570\n}\nmessage RCClassSendDataModelPdu {\n optional uint32 item_idx=1;\n optional uint32 from=2;\n optional uint32 owner=3;\n optional uint32 action_type=4;//\u72B6\u6001\u6539\u53D8\u7684\u7C7B\u578B\n optional RCClassStatusInfoPdu class_status_info=5;//\u5F53\u524D\u8BFE\u5802\u72B6\u6001\u7684\u4FE1\u606F\n}\nmessage RCClassStatusInfoPdu {\n optional uint32 node_id=1;//mcu\u4E2D\u7684\u552F\u4E00ID\n optional string user_id=2;\n optional string user_name=3;\n optional string site_id=4;//\u7AD9\u70B9\u53F7\n optional uint32 class_id=5;\n optional string class_name=6;\n required uint32 class_type=7;//\u8BFE\u5802\u7C7B\u578B\n required uint32 class_status=9;//\u8BFE\u5802\u7684\u72B6\u6001\n optional string class_startTime=10;//\u8BFE\u5802\u70B9\u51FB\u5F00\u59CB\u65F6\u95F4\n optional string class_stopTime=11;//\u6700\u540E\u4E00\u6B21\u505C\u6B62\u7684\u65F6\u95F4(\u70B9\u6682\u505C\u6216\u7ED3\u675F)\uFF0C\u6BCF\u6B21\u53D1\u9001\u6570\u636E\u90FD\u83B7\u53D6\u5F53\u524D\u65F6\u95F4\u6233\n optional uint32 class_timestamp=12;//\u76F8\u5BF9\u4E8E\u70B9\u5F00\u59CB\u8BFE\u5802\u7684\u65F6\u95F4\u6233\n optional string class_beginTime=13;//\u8BFE\u5802\u521B\u5EFA\u7684\u65F6\u95F4,\u8FD9\u4E2A\u662FSass\u8FD4\u56DE\u7684\n optional string class_endTime=14;//\u8BFE\u5802\u7ED3\u675F\u7684\u65F6\u95F4\uFF0C\u8FD9\u4E2A\u662FSass\u8FD4\u56DE\u7684\n optional bool record_status=15;//\u5F53\u524D\u5F55\u5236\u72B6\u6001\n optional uint32 record_timestamp=16;//\u76F8\u5BF9\u4E8E\u9996\u6B21\u5F00\u59CB\u5F55\u5236\u7684\u65F6\u95F4\u6233\n optional string record_fileName=17;//\u5F55\u5236\u7684\u6587\u4EF6\u540D\n optional string record_downloadUrl=18;//\u4E0B\u8F7D\u5730\u5740\n optional uint32 server_timestamp=19;//\u5F53\u524D\u7684\u7CFB\u7EDF\u65F6\u95F4\u6233\n optional uint32 active_doc_id=20;//\u5F53\u524D\u6FC0\u6D3B\u7684\u6587\u6863id\n optional uint32 active_doc_cur_page=21;//\u5F53\u524D\u6FC0\u6D3B\u7684\u6587\u6863\u7684\u5F53\u524D\u9875\n}\n\n//end\n";
14446 exports.default = _default; 14448 exports.default = _default;
14447 ; 14449 ;
14448 14450
@@ -16622,6 +16624,9 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16622,6 +16624,9 @@ return /******/ (function(modules) { // webpackBootstrap
16622 16624
16623 var loger = _Loger2.default.getLoger('DocApe'); 16625 var loger = _Loger2.default.getLoger('DocApe');
16624 var itemIdx = 0; //table插入新数据的计数id,目前用时间戳 16626 var itemIdx = 0; //table插入新数据的计数id,目前用时间戳
  16627 + var DOC_ACTION_NORMAL = 0; //无操作
  16628 + var DOC_ACTION_SWITCH = 1; //切换文档
  16629 + var DOC_ACTION_COMMAND = 2; //文档操作:翻页、滚动、缩放
16625 16630
16626 var DocApe = function (_Ape) { 16631 var DocApe = function (_Ape) {
16627 _inherits(DocApe, _Ape); 16632 _inherits(DocApe, _Ape);
@@ -16749,7 +16754,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16749,7 +16754,7 @@ return /******/ (function(modules) { // webpackBootstrap
16749 }, { 16754 }, {
16750 key: 'documentSwitch', 16755 key: 'documentSwitch',
16751 value: function documentSwitch(paramInfo) { 16756 value: function documentSwitch(paramInfo) {
16752 - console.log(this.docList); 16757 + //console.log(this.docList);
16753 //获取已经存在的数据 16758 //获取已经存在的数据
16754 var docDataModel = this.docList[paramInfo.itemIdx]; 16759 var docDataModel = this.docList[paramInfo.itemIdx];
16755 if (docDataModel == null) { 16760 if (docDataModel == null) {
@@ -16758,11 +16763,12 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16758,11 +16763,12 @@ return /******/ (function(modules) { // webpackBootstrap
16758 return; 16763 return;
16759 } 16764 }
16760 //更新数据的字段 16765 //更新数据的字段
  16766 + docDataModel.action = DOC_ACTION_SWITCH;
16761 docDataModel.visible = !docDataModel.visible; 16767 docDataModel.visible = !docDataModel.visible;
16762 this.updaterDoc(docDataModel, docDataModel.itemIdx); 16768 this.updaterDoc(docDataModel, docDataModel.itemIdx);
16763 } 16769 }
16764 16770
16765 - //操作文档(翻页、缩放、滚动...) 16771 + //操作文档(翻页、缩放、滚动...)//0,无操作, 1翻页、缩放/滚动,2.显示/隐藏
16766 16772
16767 }, { 16773 }, {
16768 key: 'documentCommand', 16774 key: 'documentCommand',
@@ -16778,6 +16784,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16778,6 +16784,7 @@ return /******/ (function(modules) { // webpackBootstrap
16778 return; 16784 return;
16779 } 16785 }
16780 //更新数据的字段 16786 //更新数据的字段
  16787 + docDataModel.action = DOC_ACTION_COMMAND;
16781 docDataModel.curPageNo = docDataModel.curPageNo + 1; 16788 docDataModel.curPageNo = docDataModel.curPageNo + 1;
16782 this.updaterDoc(docDataModel, docDataModel.itemIdx); 16789 this.updaterDoc(docDataModel, docDataModel.itemIdx);
16783 } 16790 }
@@ -16850,7 +16857,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16850,7 +16857,7 @@ return /******/ (function(modules) { // webpackBootstrap
16850 optional uint32 cur_H=11; 16857 optional uint32 cur_H=11;
16851 optional uint32 scale=12; 16858 optional uint32 scale=12;
16852 optional bool visible=13; 16859 optional bool visible=13;
16853 - optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏 16860 + optional uint32 action=14;//0,无操作, 1翻页 /缩放/滚动、2.显示/隐藏
16854 optional string doc_id=15;//文档在服务器数据库中的唯一id 16861 optional string doc_id=15;//文档在服务器数据库中的唯一id
16855 optional string file_name=16;//文档的名字 16862 optional string file_name=16;//文档的名字
16856 optional string dynamic_TS=17;//"dynamicTransferStatic": "0" 16863 optional string dynamic_TS=17;//"dynamicTransferStatic": "0"
@@ -16872,7 +16879,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16872,7 +16879,7 @@ return /******/ (function(modules) { // webpackBootstrap
16872 docModelPdu.curH = _param.curH || 0; 16879 docModelPdu.curH = _param.curH || 0;
16873 docModelPdu.scale = _param.scale || 1; 16880 docModelPdu.scale = _param.scale || 1;
16874 docModelPdu.visible = _param.visible || false; 16881 docModelPdu.visible = _param.visible || false;
16875 - docModelPdu.action = _param.action || 0; //0,无操作, 1翻页、2.显示/隐藏 16882 + docModelPdu.action = _param.action || DOC_ACTION_NORMAL; //0,无操作, 1翻页、2.显示/隐藏, 3缩放/滚动
16876 docModelPdu.docId = _param.docId || ""; //文档在服务器数据库中的唯一id,必须有 16883 docModelPdu.docId = _param.docId || ""; //文档在服务器数据库中的唯一id,必须有
16877 docModelPdu.md5 = _param.md5 || ""; //MD5 16884 docModelPdu.md5 = _param.md5 || ""; //MD5
16878 docModelPdu.fileName = _param.fileName || "doc_" + _itemIdx; //文档的名字 16885 docModelPdu.fileName = _param.fileName || "doc_" + _itemIdx; //文档的名字
@@ -16940,6 +16947,23 @@ return /******/ (function(modules) { // webpackBootstrap @@ -16940,6 +16947,23 @@ return /******/ (function(modules) { // webpackBootstrap
16940 if (itemDataInfo != null) { 16947 if (itemDataInfo != null) {
16941 this.docList[itemIdx] = itemDataInfo; 16948 this.docList[itemIdx] = itemDataInfo;
16942 loger.log('tableUpdateHandler', itemDataInfo); 16949 loger.log('tableUpdateHandler', itemDataInfo);
  16950 + /* switch (itemDataInfo.action){
  16951 + case DOC_ACTION_SWITCH:
  16952 + break;
  16953 + case DOC_ACTION_COMMAND:
  16954 + break;
  16955 + case DOC_ACTION_NORMAL:
  16956 + break;
  16957 + default :
  16958 + break;
  16959 + }*/
  16960 + _GlobalConfig2.default.activeDocId = 0; //默认id
  16961 + _GlobalConfig2.default.activeDocCurPage = 1; //默认页数
  16962 +
  16963 + if (itemDataInfo.visible == "true" || itemDataInfo.visible == true) {
  16964 + _GlobalConfig2.default.activeDocId = itemDataInfo.itemIdx; //当前激活的文档ID
  16965 + _GlobalConfig2.default.activeDocCurPage = itemDataInfo.curPageNo; //当前激活的文档的当前页
  16966 + }
16943 this._emit(_MessageTypes2.default.DOC_UPDATE, itemDataInfo); 16967 this._emit(_MessageTypes2.default.DOC_UPDATE, itemDataInfo);
16944 } else { 16968 } else {
16945 loger.log('tableUpdateHandler 数据无效--> itemIdx', itemIdx); 16969 loger.log('tableUpdateHandler 数据无效--> itemIdx', itemIdx);
@@ -17022,6 +17046,12 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17022,6 +17046,12 @@ return /******/ (function(modules) { // webpackBootstrap
17022 17046
17023 __REACT_HOT_LOADER__.register(itemIdx, 'itemIdx', 'D:/work/McuClient/src/apes/DocApe.js'); 17047 __REACT_HOT_LOADER__.register(itemIdx, 'itemIdx', 'D:/work/McuClient/src/apes/DocApe.js');
17024 17048
  17049 + __REACT_HOT_LOADER__.register(DOC_ACTION_NORMAL, 'DOC_ACTION_NORMAL', 'D:/work/McuClient/src/apes/DocApe.js');
  17050 +
  17051 + __REACT_HOT_LOADER__.register(DOC_ACTION_SWITCH, 'DOC_ACTION_SWITCH', 'D:/work/McuClient/src/apes/DocApe.js');
  17052 +
  17053 + __REACT_HOT_LOADER__.register(DOC_ACTION_COMMAND, 'DOC_ACTION_COMMAND', 'D:/work/McuClient/src/apes/DocApe.js');
  17054 +
17025 __REACT_HOT_LOADER__.register(DocApe, 'DocApe', 'D:/work/McuClient/src/apes/DocApe.js'); 17055 __REACT_HOT_LOADER__.register(DocApe, 'DocApe', 'D:/work/McuClient/src/apes/DocApe.js');
17026 17056
17027 __REACT_HOT_LOADER__.register(_default, 'default', 'D:/work/McuClient/src/apes/DocApe.js'); 17057 __REACT_HOT_LOADER__.register(_default, 'default', 'D:/work/McuClient/src/apes/DocApe.js');
@@ -17115,6 +17145,8 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17115,6 +17145,8 @@ return /******/ (function(modules) { // webpackBootstrap
17115 var _this = _possibleConstructorReturn(this, (WhiteBoardApe.__proto__ || Object.getPrototypeOf(WhiteBoardApe)).call(this, _ApeConsts2.default.WHITEBOARD_SESSION_ID, _ApeConsts2.default.WHITEBOARD_SESSION_NAME, _ApeConsts2.default.WHITEBOARD_SESSION_TAG)); 17145 var _this = _possibleConstructorReturn(this, (WhiteBoardApe.__proto__ || Object.getPrototypeOf(WhiteBoardApe)).call(this, _ApeConsts2.default.WHITEBOARD_SESSION_ID, _ApeConsts2.default.WHITEBOARD_SESSION_NAME, _ApeConsts2.default.WHITEBOARD_SESSION_TAG));
17116 17146
17117 _this.annoInfos = {}; 17147 _this.annoInfos = {};
  17148 + // 白板延迟
  17149 + // this._apeDelayed = true;
17118 17150
17119 //Ape Models 17151 //Ape Models
17120 _this.registerKey(_this._session_id, _this._session_name, _this._session_tag, new ArrayBuffer()); 17152 _this.registerKey(_this._session_id, _this._session_name, _this._session_tag, new ArrayBuffer());
@@ -17122,11 +17154,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17122,11 +17154,7 @@ return /******/ (function(modules) { // webpackBootstrap
17122 17154
17123 // ape listeners 17155 // ape listeners
17124 _this.on(_pdus2.default.RCPDU_SESSION_JOIN_RESPONSE, _this._joinSessionHandler.bind(_this)); 17156 _this.on(_pdus2.default.RCPDU_SESSION_JOIN_RESPONSE, _this._joinSessionHandler.bind(_this));
17125 -  
17126 //this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是会议消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理 17157 //this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是会议消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理
17127 -  
17128 - // 白板延迟  
17129 - //this._apeDelayed = true;  
17130 return _this; 17158 return _this;
17131 } 17159 }
17132 17160
@@ -17208,7 +17236,6 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17208,7 +17236,6 @@ return /******/ (function(modules) { // webpackBootstrap
17208 }, { 17236 }, {
17209 key: 'sendDeleteAllAnnotation', 17237 key: 'sendDeleteAllAnnotation',
17210 value: function sendDeleteAllAnnotation(_param) { 17238 value: function sendDeleteAllAnnotation(_param) {
17211 - var len = 0;  
17212 for (var key in this.annoInfos) { 17239 for (var key in this.annoInfos) {
17213 //console.log("key:"+key); 17240 //console.log("key:"+key);
17214 console.log("删除白板数据,itemIdx:" + key); 17241 console.log("删除白板数据,itemIdx:" + key);
@@ -17265,7 +17292,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17265,7 +17292,7 @@ return /******/ (function(modules) { // webpackBootstrap
17265 17292
17266 itemIdx = _param.itemIdx; 17293 itemIdx = _param.itemIdx;
17267 var whiteBoardModelPdu = this.packPdu(_param, itemIdx); 17294 var whiteBoardModelPdu = this.packPdu(_param, itemIdx);
17268 - console.log(whiteBoardModelPdu); 17295 + //console.log(whiteBoardModelPdu);
17269 17296
17270 if (whiteBoardModelPdu == null) { 17297 if (whiteBoardModelPdu == null) {
17271 loger.log('sendInsetAnnotaion失败,参数错误'); 17298 loger.log('sendInsetAnnotaion失败,参数错误');
@@ -17326,7 +17353,7 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17326,7 +17353,7 @@ return /******/ (function(modules) { // webpackBootstrap
17326 return null; 17353 return null;
17327 } 17354 }
17328 //判断type类型,根据type设置不同的参数 17355 //判断type类型,根据type设置不同的参数
17329 - var whiteBoardModelPdu = new _pdus2.default['RCWhiteBoardDataModel'](); 17356 + var whiteBoardModelPdu = new _pdus2.default['RCWhiteBoardDataModelPdu']();
17330 switch (_param.type) { 17357 switch (_param.type) {
17331 case TYPE_BIGHT: 17358 case TYPE_BIGHT:
17332 break; 17359 break;
@@ -17351,8 +17378,13 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17351,8 +17378,13 @@ return /******/ (function(modules) { // webpackBootstrap
17351 whiteBoardModelPdu.type = _param.type; 17378 whiteBoardModelPdu.type = _param.type;
17352 whiteBoardModelPdu.itemIdx = _itemIdx; 17379 whiteBoardModelPdu.itemIdx = _itemIdx;
17353 whiteBoardModelPdu.initiator = _GlobalConfig2.default.nodeId; 17380 whiteBoardModelPdu.initiator = _GlobalConfig2.default.nodeId;
17354 - whiteBoardModelPdu.parentId = _param.parentId || 0;  
17355 - whiteBoardModelPdu.curPage = _param.curPage || 1; 17381 +
  17382 + /* whiteBoardModelPdu.parentId=_param.parentId||0;
  17383 + whiteBoardModelPdu.curPage=_param.curPage||1;*/
  17384 +
  17385 + whiteBoardModelPdu.parentId = _GlobalConfig2.default.activeDocId; //当前激活的文档id
  17386 + whiteBoardModelPdu.curPageNo = _GlobalConfig2.default.activeDocCurPage; //当前激活的文档页码
  17387 +
17356 whiteBoardModelPdu.pointGroup = _EngineUtils2.default.arrayToJsonString(_param.pointGroup); 17388 whiteBoardModelPdu.pointGroup = _EngineUtils2.default.arrayToJsonString(_param.pointGroup);
17357 whiteBoardModelPdu.color = _param.color || "#000000"; 17389 whiteBoardModelPdu.color = _param.color || "#000000";
17358 17390
@@ -17361,14 +17393,14 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17361,14 +17393,14 @@ return /******/ (function(modules) { // webpackBootstrap
17361 }, { 17393 }, {
17362 key: 'unPackPdu', 17394 key: 'unPackPdu',
17363 value: function unPackPdu(owner, itemIdx, itemData) { 17395 value: function unPackPdu(owner, itemIdx, itemData) {
17364 - this.annoInfos[itemIdx] = itemData;  
17365 try { 17396 try {
17366 console.log("白板收到数据===unPackPdu "); 17397 console.log("白板收到数据===unPackPdu ");
17367 - var whiteBoardModelPdu = _pdus2.default['RCWhiteBoardDataModel'].decode(itemData); 17398 + var whiteBoardModelPdu = _pdus2.default['RCWhiteBoardDataModelPdu'].decode(itemData);
17368 //console.log(whiteBoardModelPdu); 17399 //console.log(whiteBoardModelPdu);
17369 //loger.log(whiteBoardModelPdu); 17400 //loger.log(whiteBoardModelPdu);
17370 var _pointGroup = _EngineUtils2.default.arrayFromJsonString(whiteBoardModelPdu.pointGroup); 17401 var _pointGroup = _EngineUtils2.default.arrayFromJsonString(whiteBoardModelPdu.pointGroup);
17371 whiteBoardModelPdu.pointGroup = _pointGroup; 17402 whiteBoardModelPdu.pointGroup = _pointGroup;
  17403 + this.annoInfos[itemIdx] = whiteBoardModelPdu;
17372 return whiteBoardModelPdu; 17404 return whiteBoardModelPdu;
17373 } catch (err) { 17405 } catch (err) {
17374 console.log("unPackPdu Pdu解析错误,itemIdx=" + itemIdx + " err:" + err.message); 17406 console.log("unPackPdu Pdu解析错误,itemIdx=" + itemIdx + " err:" + err.message);
@@ -17377,19 +17409,17 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17377,19 +17409,17 @@ return /******/ (function(modules) { // webpackBootstrap
17377 } 17409 }
17378 17410
17379 /////收到消息处理///////////////////////////////////////////////////////////////////////////////// 17411 /////收到消息处理/////////////////////////////////////////////////////////////////////////////////
  17412 + /* whiteboardMsgComingHandler(_data) {
  17413 + //flash RCConferenceSendDataRequestPdu
  17414 + //loger.warn('whiteboardMsgComingHandler needs to be handled.');
  17415 + //const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu);
  17416 + //loger.log("whiteboardMsgComingHandler",recordInfo);
  17417 +
  17418 + let receiveInfo = pdu['RCConferenceSendDataRequestPdu'].decode(_data);
  17419 + loger.log("whiteboardMsgComingHandler",receiveInfo);
  17420 + }*/
17380 17421
17381 }, { 17422 }, {
17382 - key: 'whiteboardMsgComingHandler',  
17383 - value: function whiteboardMsgComingHandler(_data) {  
17384 - //flash RCConferenceSendDataRequestPdu  
17385 - //loger.warn('whiteboardMsgComingHandler needs to be handled.');  
17386 - //const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu);  
17387 - //loger.log("whiteboardMsgComingHandler",recordInfo);  
17388 -  
17389 - var receiveInfo = _pdus2.default['RCConferenceSendDataRequestPdu'].decode(_data);  
17390 - loger.log("whiteboardMsgComingHandler", receiveInfo);  
17391 - }  
17392 - }, {  
17393 key: 'tableInsertHandler', 17423 key: 'tableInsertHandler',
17394 value: function tableInsertHandler(owner, itemIdx, itemData) { 17424 value: function tableInsertHandler(owner, itemIdx, itemData) {
17395 /* try{ 17425 /* try{
@@ -17402,13 +17432,25 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17402,13 +17432,25 @@ return /******/ (function(modules) { // webpackBootstrap
17402 }*/ 17432 }*/
17403 var whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData); 17433 var whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
17404 loger.log('tableInsertHandler', whiteBoardModel); 17434 loger.log('tableInsertHandler', whiteBoardModel);
17405 - this._emit(_MessageTypes2.default.WHITEBOARD_ANNOTAION_INSERT, whiteBoardModel); 17435 + if (whiteBoardModel) {
  17436 + if (_GlobalConfig2.default.activeDocId == whiteBoardModel.parentId && _GlobalConfig2.default.activeDocCurPage == whiteBoardModel.curPageNo) {
  17437 + loger.log('WHITEBOARD_ANNOTAION_INSERT 显示到界面上', whiteBoardModel);
  17438 + this._emit(_MessageTypes2.default.WHITEBOARD_ANNOTAION_INSERT, whiteBoardModel);
  17439 + }
  17440 + }
17406 } 17441 }
17407 }, { 17442 }, {
17408 key: 'tableUpdateHandler', 17443 key: 'tableUpdateHandler',
17409 value: function tableUpdateHandler(owner, itemIdx, itemData) { 17444 value: function tableUpdateHandler(owner, itemIdx, itemData) {
17410 var whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData); 17445 var whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
17411 loger.log('tableUpdateHandler', whiteBoardModel); 17446 loger.log('tableUpdateHandler', whiteBoardModel);
  17447 + if (whiteBoardModel) {
  17448 + if (_GlobalConfig2.default.activeDocId == whiteBoardModel.parentId && _GlobalConfig2.default.activeDocCurPage == whiteBoardModel.curPageNo) {
  17449 + loger.log('WHITEBOARD_ANNOTATION_UPDATE 显示到界面上', whiteBoardModel);
  17450 + this._emit(_MessageTypes2.default.WHITEBOARD_ANNOTATION_UPDATE, whiteBoardModel);
  17451 + }
  17452 + }
  17453 +
17412 /* try{ 17454 /* try{
17413 console.log("白板收到数据===tableUpdateHandler "); 17455 console.log("白板收到数据===tableUpdateHandler ");
17414 let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData); 17456 let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData);
@@ -17435,8 +17477,6 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17435,8 +17477,6 @@ return /******/ (function(modules) { // webpackBootstrap
17435 } else { 17477 } else {
17436 loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type)); 17478 loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type));
17437 }*/ 17479 }*/
17438 -  
17439 - this._emit(_MessageTypes2.default.WHITEBOARD_ANNOTATION_UPDATE, whiteBoardModel);  
17440 } 17480 }
17441 }, { 17481 }, {
17442 key: 'tableDeleteHandler', 17482 key: 'tableDeleteHandler',
@@ -17456,6 +17496,45 @@ return /******/ (function(modules) { // webpackBootstrap @@ -17456,6 +17496,45 @@ return /******/ (function(modules) { // webpackBootstrap
17456 } 17496 }
17457 } 17497 }
17458 } 17498 }
  17499 + //文档更新,白板也要更新
  17500 +
  17501 + }, {
  17502 + key: 'docUpdateHandler',
  17503 + value: function docUpdateHandler(_data) {
  17504 + loger.log("白板收到文档更新的消息docUpdateHandler", _data);
  17505 + for (var key in this.annoInfos) {
  17506 + var item = this.annoInfos[key];
  17507 + if (item && item.parentId == _GlobalConfig2.default.activeDocId && item.curPageNo == _GlobalConfig2.default.activeDocCurPage) {
  17508 + loger.log("显示和文档对应的白板数据docUpdateHandler", item);
  17509 + } else {
  17510 + loger.log("不显示白板数据docUpdateHandler", item);
  17511 + }
  17512 + }
  17513 +
  17514 + /* let docItem=_data;
  17515 + for (let key in this.annoInfos){
  17516 + let item=this.annoInfos[key];
  17517 + if(item&&docItem.visible==true&&item.parentId==docItem.itemIdx&&item.curPageNo==docItem.curPageNo){
  17518 + loger.log("显示和文档对应的白板数据docUpdateHandler",item);
  17519 + }else{
  17520 + loger.log("不显示白板数据docUpdateHandler",item);
  17521 + }
  17522 + }*/
  17523 + }
  17524 + //删除白板数据
  17525 +
  17526 + }, {
  17527 + key: 'docDeleteHandler',
  17528 + value: function docDeleteHandler(_parentId) {
  17529 + loger.log("白板收到文档删除的消息docDeleteHandler", _parentId);
  17530 + for (var key in this.annoInfos) {
  17531 + var item = this.annoInfos[key];
  17532 + if (item && item.parentId == _parentId) {
  17533 + loger.log("文档删除,白板数据也删除,itemIdx:" + key, "_parentId:", _parentId);
  17534 + this.sendDeleteAnnotaion({ "itemIdx": key });
  17535 + }
  17536 + }
  17537 + }
17459 }]); 17538 }]);
17460 17539
17461 return WhiteBoardApe; 17540 return WhiteBoardApe;
@@ -51,7 +51,8 @@ export default class MessageEntrance extends Emiter { @@ -51,7 +51,8 @@ export default class MessageEntrance extends Emiter {
51 GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_0); 51 GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_0);
52 52
53 this.on(MessageTypes.MCU_ERROR,this._mcuErrorHandler.bind(this)); 53 this.on(MessageTypes.MCU_ERROR,this._mcuErrorHandler.bind(this));
54 - this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this)); 54 +
  55 + //this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this));
55 56
56 // Sass平台层 57 // Sass平台层
57 _sass = Sass; 58 _sass = Sass;
@@ -70,7 +71,7 @@ export default class MessageEntrance extends Emiter { @@ -70,7 +71,7 @@ export default class MessageEntrance extends Emiter {
70 // 注册所有应用Ape 71 // 注册所有应用Ape
71 _confer_ape = new ConferApe(); 72 _confer_ape = new ConferApe();
72 _confer_ape.on('*', (type, data) => this._emit(type, data)); 73 _confer_ape.on('*', (type, data) => this._emit(type, data));
73 - _confer_ape.on(MessageTypes.DOC_SWITCH, this.docSwitchHandler.bind(this)); 74 + //_confer_ape.on(MessageTypes.DOC_SWITCH, this.docSwitchHandler.bind(this));
74 75
75 _chat_ape = new ChatApe(); 76 _chat_ape = new ChatApe();
76 _chat_ape.on('*', (type, data) => this._emit(type, data)); 77 _chat_ape.on('*', (type, data) => this._emit(type, data));
@@ -87,7 +88,7 @@ export default class MessageEntrance extends Emiter { @@ -87,7 +88,7 @@ export default class MessageEntrance extends Emiter {
87 88
88 _whiteboard_ape = new WhiteBoardApe(); 89 _whiteboard_ape = new WhiteBoardApe();
89 _whiteboard_ape.on('*', (type, data) => this._emit(type, data)); 90 _whiteboard_ape.on('*', (type, data) => this._emit(type, data));
90 - _whiteboard_ape.on(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this)); 91 + //_whiteboard_ape.on(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this));
91 92
92 93
93 //公开外部调用的方法 94 //公开外部调用的方法
@@ -122,7 +123,6 @@ export default class MessageEntrance extends Emiter { @@ -122,7 +123,6 @@ export default class MessageEntrance extends Emiter {
122 this.sendDocumentDelete= this. _sendDocumentDelete;//删除文档 123 this.sendDocumentDelete= this. _sendDocumentDelete;//删除文档
123 this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档 124 this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档
124 this.sendDocumentCommand= this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...) 125 this.sendDocumentCommand= this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...)
125 -  
126 } 126 }
127 127
128 128
@@ -581,20 +581,22 @@ export default class MessageEntrance extends Emiter { @@ -581,20 +581,22 @@ export default class MessageEntrance extends Emiter {
581 } 581 }
582 } 582 }
583 583
584 - // 文档变更  
585 - docUpdateHandler(docItem) {  
586 - loger.log('Doc UpdateId ->' + docItem.id + '| activeDocId ->' + _confer_ape.activeDocId);  
587 - if (docItem.id == _confer_ape.activeDocId) {  
588 - this._emit(MessageTypes.DOC_SHOW, docItem); 584 + //// 文档变更,白板也需要做处理
  585 + docUpdateHandler(_data) {
  586 + loger.log('Doc UpdateId ->',_data);
  587 + if(_whiteboard_ape){
  588 + _whiteboard_ape.docUpdateHandler(_data);
589 } 589 }
590 } 590 }
591 591
592 - //文档删除  
593 - docDeleteHandler(docItem){  
594 - if (docItem.id == _confer_ape.activeDocId) {  
595 - this._emit(MessageTypes.DOC_DELETE, docItem);  
596 - } 592 + //文档删除,白板也需要做处理
  593 + docDeleteHandler(_data){
  594 + if(_whiteboard_ape){
  595 + _whiteboard_ape.docDeleteHandler(_data);
  596 + }
597 } 597 }
  598 +
  599 +
598 //文档加入频道成功,同步到MCU服务器上的数据 600 //文档加入频道成功,同步到MCU服务器上的数据
599 docJoinChannelSuccess(){ 601 docJoinChannelSuccess(){
600 loger.log("docJoinChannelSuccess isHost=",GlobalConfig.isHost); 602 loger.log("docJoinChannelSuccess isHost=",GlobalConfig.isHost);
@@ -628,7 +630,7 @@ export default class MessageEntrance extends Emiter { @@ -628,7 +630,7 @@ export default class MessageEntrance extends Emiter {
628 // "uploadEndTime": "2017-02-03 11:54:27", 630 // "uploadEndTime": "2017-02-03 11:54:27",
629 // "uploadStartTime": "2017-02-03 11:54:27" 631 // "uploadStartTime": "2017-02-03 11:54:27"
630 //} 632 //}
631 - loger.log("上传文档到mcu",value); 633 + loger.log("判断是否需要把提前上传的文档上传到mcu",value);
632 let paramInfo={ 634 let paramInfo={
633 "pageNum": value.pdfSize, 635 "pageNum": value.pdfSize,
634 "fileName": value.name, 636 "fileName": value.name,
@@ -10,7 +10,7 @@ export default function ApeConsts(id) { @@ -10,7 +10,7 @@ export default function ApeConsts(id) {
10 ApeConsts.CLASS_STATUS_WAIT= 0;//课堂还未开始 10 ApeConsts.CLASS_STATUS_WAIT= 0;//课堂还未开始
11 ApeConsts.CLASS_STATUS_STARTED= 1;//直播中 11 ApeConsts.CLASS_STATUS_STARTED= 1;//直播中
12 ApeConsts.CLASS_STATUS_PAUSE= 2;//暂停 12 ApeConsts.CLASS_STATUS_PAUSE= 2;//暂停
13 -ApeConsts.CLASS_STATUS_CLOSE= 3;//结束 13 +ApeConsts.CLASS_STATUS_CLOSE= 3;//结束//这个是点击结束会议,把所有人踢出课堂,然后把状态值还原为0*************
14 ApeConsts.CLASS_STATUS_UPTATE= 4;//更新课堂状态信息 14 ApeConsts.CLASS_STATUS_UPTATE= 4;//更新课堂状态信息
15 15
16 ApeConsts.CLASS_WAIT_START = "class.wait.start";//课堂还未开始 16 ApeConsts.CLASS_WAIT_START = "class.wait.start";//课堂还未开始
@@ -23,6 +23,9 @@ import EngineUtils from 'EngineUtils'; @@ -23,6 +23,9 @@ import EngineUtils from 'EngineUtils';
23 23
24 let loger = Loger.getLoger('DocApe'); 24 let loger = Loger.getLoger('DocApe');
25 let itemIdx=0;//table插入新数据的计数id,目前用时间戳 25 let itemIdx=0;//table插入新数据的计数id,目前用时间戳
  26 +const DOC_ACTION_NORMAL=0;//无操作
  27 +const DOC_ACTION_SWITCH=1;//切换文档
  28 +const DOC_ACTION_COMMAND=2;//文档操作:翻页、滚动、缩放
26 29
27 class DocApe extends Ape { 30 class DocApe extends Ape {
28 constructor() { 31 constructor() {
@@ -139,7 +142,7 @@ class DocApe extends Ape { @@ -139,7 +142,7 @@ class DocApe extends Ape {
139 } 142 }
140 //切换文档 143 //切换文档
141 documentSwitch(paramInfo){ 144 documentSwitch(paramInfo){
142 - console.log(this.docList); 145 + //console.log(this.docList);
143 //获取已经存在的数据 146 //获取已经存在的数据
144 let docDataModel= this.docList[paramInfo.itemIdx]; 147 let docDataModel= this.docList[paramInfo.itemIdx];
145 if(docDataModel==null){ 148 if(docDataModel==null){
@@ -148,11 +151,12 @@ class DocApe extends Ape { @@ -148,11 +151,12 @@ class DocApe extends Ape {
148 return; 151 return;
149 } 152 }
150 //更新数据的字段 153 //更新数据的字段
  154 + docDataModel.action=DOC_ACTION_SWITCH;
151 docDataModel.visible=!docDataModel.visible; 155 docDataModel.visible=!docDataModel.visible;
152 this.updaterDoc(docDataModel,docDataModel.itemIdx); 156 this.updaterDoc(docDataModel,docDataModel.itemIdx);
153 } 157 }
154 158
155 - //操作文档(翻页、缩放、滚动...) 159 + //操作文档(翻页、缩放、滚动...)//0,无操作, 1翻页、缩放/滚动,2.显示/隐藏
156 documentCommand(paramInfo){ 160 documentCommand(paramInfo){
157 console.log(this.docList); 161 console.log(this.docList);
158 //获取已经存在的数据 162 //获取已经存在的数据
@@ -165,6 +169,7 @@ class DocApe extends Ape { @@ -165,6 +169,7 @@ class DocApe extends Ape {
165 return; 169 return;
166 } 170 }
167 //更新数据的字段 171 //更新数据的字段
  172 + docDataModel.action=DOC_ACTION_COMMAND;
168 docDataModel.curPageNo=docDataModel.curPageNo+1; 173 docDataModel.curPageNo=docDataModel.curPageNo+1;
169 this.updaterDoc(docDataModel,docDataModel.itemIdx); 174 this.updaterDoc(docDataModel,docDataModel.itemIdx);
170 } 175 }
@@ -228,7 +233,7 @@ class DocApe extends Ape { @@ -228,7 +233,7 @@ class DocApe extends Ape {
228 optional uint32 cur_H=11; 233 optional uint32 cur_H=11;
229 optional uint32 scale=12; 234 optional uint32 scale=12;
230 optional bool visible=13; 235 optional bool visible=13;
231 - optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏 236 + optional uint32 action=14;//0,无操作, 1翻页 /缩放/滚动、2.显示/隐藏
232 optional string doc_id=15;//文档在服务器数据库中的唯一id 237 optional string doc_id=15;//文档在服务器数据库中的唯一id
233 optional string file_name=16;//文档的名字 238 optional string file_name=16;//文档的名字
234 optional string dynamic_TS=17;//"dynamicTransferStatic": "0" 239 optional string dynamic_TS=17;//"dynamicTransferStatic": "0"
@@ -250,7 +255,7 @@ class DocApe extends Ape { @@ -250,7 +255,7 @@ class DocApe extends Ape {
250 docModelPdu.curH=_param.curH||0; 255 docModelPdu.curH=_param.curH||0;
251 docModelPdu.scale=_param.scale||1; 256 docModelPdu.scale=_param.scale||1;
252 docModelPdu.visible= _param.visible||false; 257 docModelPdu.visible= _param.visible||false;
253 - docModelPdu.action=_param.action||0;//0,无操作, 1翻页、2.显示/隐藏 258 + docModelPdu.action=_param.action||DOC_ACTION_NORMAL;//0,无操作, 1翻页、2.显示/隐藏, 3缩放/滚动
254 docModelPdu.docId=_param.docId||"";//文档在服务器数据库中的唯一id,必须有 259 docModelPdu.docId=_param.docId||"";//文档在服务器数据库中的唯一id,必须有
255 docModelPdu.md5=_param.md5||"";//MD5 260 docModelPdu.md5=_param.md5||"";//MD5
256 docModelPdu.fileName=_param.fileName||"doc_"+_itemIdx;//文档的名字 261 docModelPdu.fileName=_param.fileName||"doc_"+_itemIdx;//文档的名字
@@ -311,6 +316,23 @@ class DocApe extends Ape { @@ -311,6 +316,23 @@ class DocApe extends Ape {
311 if(itemDataInfo!=null){ 316 if(itemDataInfo!=null){
312 this.docList[itemIdx] = itemDataInfo; 317 this.docList[itemIdx] = itemDataInfo;
313 loger.log('tableUpdateHandler',itemDataInfo); 318 loger.log('tableUpdateHandler',itemDataInfo);
  319 +/* switch (itemDataInfo.action){
  320 + case DOC_ACTION_SWITCH:
  321 + break;
  322 + case DOC_ACTION_COMMAND:
  323 + break;
  324 + case DOC_ACTION_NORMAL:
  325 + break;
  326 + default :
  327 + break;
  328 + }*/
  329 + GlobalConfig.activeDocId=0;//默认id
  330 + GlobalConfig.activeDocCurPage=1;//默认页数
  331 +
  332 + if(itemDataInfo.visible=="true"||itemDataInfo.visible==true){
  333 + GlobalConfig.activeDocId=itemDataInfo.itemIdx;//当前激活的文档ID
  334 + GlobalConfig.activeDocCurPage=itemDataInfo.curPageNo;//当前激活的文档的当前页
  335 + }
314 this._emit(MessageTypes.DOC_UPDATE,itemDataInfo); 336 this._emit(MessageTypes.DOC_UPDATE,itemDataInfo);
315 }else { 337 }else {
316 loger.log('tableUpdateHandler 数据无效--> itemIdx',itemIdx); 338 loger.log('tableUpdateHandler 数据无效--> itemIdx',itemIdx);
@@ -41,6 +41,8 @@ class WhiteBoardApe extends Ape { @@ -41,6 +41,8 @@ class WhiteBoardApe extends Ape {
41 ); 41 );
42 // properties 42 // properties
43 this.annoInfos = {}; 43 this.annoInfos = {};
  44 + // 白板延迟
  45 + // this._apeDelayed = true;
44 46
45 //Ape Models 47 //Ape Models
46 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); 48 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
@@ -49,11 +51,7 @@ class WhiteBoardApe extends Ape { @@ -49,11 +51,7 @@ class WhiteBoardApe extends Ape {
49 51
50 // ape listeners 52 // ape listeners
51 this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this)); 53 this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this));
52 -  
53 //this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是会议消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理 54 //this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是会议消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理
54 -  
55 - // 白板延迟  
56 - //this._apeDelayed = true;  
57 } 55 }
58 56
59 _joinSessionHandler(_data) { 57 _joinSessionHandler(_data) {
@@ -126,7 +124,6 @@ class WhiteBoardApe extends Ape { @@ -126,7 +124,6 @@ class WhiteBoardApe extends Ape {
126 } 124 }
127 //删除所有标注 125 //删除所有标注
128 sendDeleteAllAnnotation(_param){ 126 sendDeleteAllAnnotation(_param){
129 - let len=0;  
130 for (let key in this.annoInfos){ 127 for (let key in this.annoInfos){
131 //console.log("key:"+key); 128 //console.log("key:"+key);
132 console.log("删除白板数据,itemIdx:"+key); 129 console.log("删除白板数据,itemIdx:"+key);
@@ -178,7 +175,7 @@ class WhiteBoardApe extends Ape { @@ -178,7 +175,7 @@ class WhiteBoardApe extends Ape {
178 175
179 itemIdx=_param.itemIdx; 176 itemIdx=_param.itemIdx;
180 let whiteBoardModelPdu = this.packPdu(_param,itemIdx); 177 let whiteBoardModelPdu = this.packPdu(_param,itemIdx);
181 - console.log(whiteBoardModelPdu); 178 + //console.log(whiteBoardModelPdu);
182 179
183 if(whiteBoardModelPdu==null){ 180 if(whiteBoardModelPdu==null){
184 loger.log('sendInsetAnnotaion失败,参数错误'); 181 loger.log('sendInsetAnnotaion失败,参数错误');
@@ -238,7 +235,7 @@ class WhiteBoardApe extends Ape { @@ -238,7 +235,7 @@ class WhiteBoardApe extends Ape {
238 return null; 235 return null;
239 } 236 }
240 //判断type类型,根据type设置不同的参数 237 //判断type类型,根据type设置不同的参数
241 - let whiteBoardModelPdu =new pdu['RCWhiteBoardDataModel']; 238 + let whiteBoardModelPdu =new pdu['RCWhiteBoardDataModelPdu'];
242 switch (_param.type){ 239 switch (_param.type){
243 case TYPE_BIGHT: 240 case TYPE_BIGHT:
244 break; 241 break;
@@ -263,22 +260,27 @@ class WhiteBoardApe extends Ape { @@ -263,22 +260,27 @@ class WhiteBoardApe extends Ape {
263 whiteBoardModelPdu.type =_param.type; 260 whiteBoardModelPdu.type =_param.type;
264 whiteBoardModelPdu.itemIdx =_itemIdx; 261 whiteBoardModelPdu.itemIdx =_itemIdx;
265 whiteBoardModelPdu.initiator =GlobalConfig.nodeId; 262 whiteBoardModelPdu.initiator =GlobalConfig.nodeId;
266 - whiteBoardModelPdu.parentId=_param.parentId||0;  
267 - whiteBoardModelPdu.curPage=_param.curPage||1; 263 +
  264 + /* whiteBoardModelPdu.parentId=_param.parentId||0;
  265 + whiteBoardModelPdu.curPage=_param.curPage||1;*/
  266 +
  267 + whiteBoardModelPdu.parentId=GlobalConfig.activeDocId;//当前激活的文档id
  268 + whiteBoardModelPdu.curPageNo=GlobalConfig.activeDocCurPage;//当前激活的文档页码
  269 +
268 whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString(_param.pointGroup); 270 whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString(_param.pointGroup);
269 whiteBoardModelPdu.color=_param.color||"#000000"; 271 whiteBoardModelPdu.color=_param.color||"#000000";
270 272
271 return whiteBoardModelPdu; 273 return whiteBoardModelPdu;
272 } 274 }
273 unPackPdu(owner, itemIdx,itemData){ 275 unPackPdu(owner, itemIdx,itemData){
274 - this.annoInfos[itemIdx] = itemData;  
275 try{ 276 try{
276 console.log("白板收到数据===unPackPdu "); 277 console.log("白板收到数据===unPackPdu ");
277 - let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData); 278 + let whiteBoardModelPdu= pdu['RCWhiteBoardDataModelPdu'].decode(itemData);
278 //console.log(whiteBoardModelPdu); 279 //console.log(whiteBoardModelPdu);
279 //loger.log(whiteBoardModelPdu); 280 //loger.log(whiteBoardModelPdu);
280 let _pointGroup= EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup); 281 let _pointGroup= EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup);
281 whiteBoardModelPdu.pointGroup=_pointGroup; 282 whiteBoardModelPdu.pointGroup=_pointGroup;
  283 + this.annoInfos[itemIdx] = whiteBoardModelPdu;
282 return whiteBoardModelPdu; 284 return whiteBoardModelPdu;
283 }catch (err){ 285 }catch (err){
284 console.log("unPackPdu Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message); 286 console.log("unPackPdu Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message);
@@ -287,7 +289,7 @@ class WhiteBoardApe extends Ape { @@ -287,7 +289,7 @@ class WhiteBoardApe extends Ape {
287 } 289 }
288 290
289 /////收到消息处理///////////////////////////////////////////////////////////////////////////////// 291 /////收到消息处理/////////////////////////////////////////////////////////////////////////////////
290 - whiteboardMsgComingHandler(_data) { 292 +/* whiteboardMsgComingHandler(_data) {
291 //flash RCConferenceSendDataRequestPdu 293 //flash RCConferenceSendDataRequestPdu
292 //loger.warn('whiteboardMsgComingHandler needs to be handled.'); 294 //loger.warn('whiteboardMsgComingHandler needs to be handled.');
293 //const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu); 295 //const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu);
@@ -295,7 +297,7 @@ class WhiteBoardApe extends Ape { @@ -295,7 +297,7 @@ class WhiteBoardApe extends Ape {
295 297
296 let receiveInfo = pdu['RCConferenceSendDataRequestPdu'].decode(_data); 298 let receiveInfo = pdu['RCConferenceSendDataRequestPdu'].decode(_data);
297 loger.log("whiteboardMsgComingHandler",receiveInfo); 299 loger.log("whiteboardMsgComingHandler",receiveInfo);
298 - } 300 + }*/
299 301
300 tableInsertHandler(owner, itemIdx,itemData) { 302 tableInsertHandler(owner, itemIdx,itemData) {
301 /* try{ 303 /* try{
@@ -308,12 +310,24 @@ class WhiteBoardApe extends Ape { @@ -308,12 +310,24 @@ class WhiteBoardApe extends Ape {
308 }*/ 310 }*/
309 let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData); 311 let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
310 loger.log('tableInsertHandler',whiteBoardModel); 312 loger.log('tableInsertHandler',whiteBoardModel);
311 - this._emit(MessageTypes.WHITEBOARD_ANNOTAION_INSERT,whiteBoardModel); 313 + if(whiteBoardModel){
  314 + if(GlobalConfig.activeDocId==whiteBoardModel.parentId&&GlobalConfig.activeDocCurPage==whiteBoardModel.curPageNo){
  315 + loger.log('WHITEBOARD_ANNOTAION_INSERT 显示到界面上',whiteBoardModel);
  316 + this._emit(MessageTypes.WHITEBOARD_ANNOTAION_INSERT,whiteBoardModel);
  317 + }
  318 + }
312 } 319 }
313 320
314 tableUpdateHandler(owner, itemIdx, itemData) { 321 tableUpdateHandler(owner, itemIdx, itemData) {
315 let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData); 322 let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
316 loger.log('tableUpdateHandler',whiteBoardModel); 323 loger.log('tableUpdateHandler',whiteBoardModel);
  324 + if(whiteBoardModel){
  325 + if(GlobalConfig.activeDocId==whiteBoardModel.parentId&&GlobalConfig.activeDocCurPage==whiteBoardModel.curPageNo){
  326 + loger.log('WHITEBOARD_ANNOTATION_UPDATE 显示到界面上',whiteBoardModel);
  327 + this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,whiteBoardModel);
  328 + }
  329 + }
  330 +
317 /* try{ 331 /* try{
318 console.log("白板收到数据===tableUpdateHandler "); 332 console.log("白板收到数据===tableUpdateHandler ");
319 let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData); 333 let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData);
@@ -342,7 +356,6 @@ class WhiteBoardApe extends Ape { @@ -342,7 +356,6 @@ class WhiteBoardApe extends Ape {
342 loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type)); 356 loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type));
343 }*/ 357 }*/
344 358
345 - this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,whiteBoardModel);  
346 } 359 }
347 tableDeleteHandler(object_id, tableDeleteData){ 360 tableDeleteHandler(object_id, tableDeleteData){
348 // console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649 361 // console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649
@@ -360,6 +373,39 @@ class WhiteBoardApe extends Ape { @@ -360,6 +373,39 @@ class WhiteBoardApe extends Ape {
360 } 373 }
361 } 374 }
362 } 375 }
  376 + //文档更新,白板也要更新
  377 + docUpdateHandler(_data){
  378 + loger.log("白板收到文档更新的消息docUpdateHandler",_data);
  379 + for (let key in this.annoInfos){
  380 + let item=this.annoInfos[key];
  381 + if(item&&item.parentId==GlobalConfig.activeDocId&&item.curPageNo==GlobalConfig.activeDocCurPage){
  382 + loger.log("显示和文档对应的白板数据docUpdateHandler",item);
  383 + }else{
  384 + loger.log("不显示白板数据docUpdateHandler",item);
  385 + }
  386 + }
  387 +
  388 + /* let docItem=_data;
  389 + for (let key in this.annoInfos){
  390 + let item=this.annoInfos[key];
  391 + if(item&&docItem.visible==true&&item.parentId==docItem.itemIdx&&item.curPageNo==docItem.curPageNo){
  392 + loger.log("显示和文档对应的白板数据docUpdateHandler",item);
  393 + }else{
  394 + loger.log("不显示白板数据docUpdateHandler",item);
  395 + }
  396 + }*/
  397 + }
  398 + //删除白板数据
  399 + docDeleteHandler(_parentId){
  400 + loger.log("白板收到文档删除的消息docDeleteHandler",_parentId);
  401 + for (let key in this.annoInfos){
  402 + let item=this.annoInfos[key];
  403 + if(item&&item.parentId==_parentId){
  404 + loger.log("文档删除,白板数据也删除,itemIdx:"+key,"_parentId:",_parentId);
  405 + this.sendDeleteAnnotaion({"itemIdx":key});
  406 + }
  407 + }
  408 + }
363 } 409 }
364 410
365 export default WhiteBoardApe; 411 export default WhiteBoardApe;
@@ -142,7 +142,7 @@ class MCU extends Emiter { @@ -142,7 +142,7 @@ class MCU extends Emiter {
142 // 会议发送消息 -- 消息同意序列号 142 // 会议发送消息 -- 消息同意序列号
143 send(msg) { 143 send(msg) {
144 if (this.connected) { 144 if (this.connected) {
145 - loger.log('MCU-发送会议数据....', msg); 145 + loger.log('MCU-发送会议数据....');
146 this._everSocket.send(msg.toArrayBuffer()); 146 this._everSocket.send(msg.toArrayBuffer());
147 } else { 147 } else {
148 loger.log('MCU-发送会议数据失败,MCU底层通道不可用'); 148 loger.log('MCU-发送会议数据失败,MCU底层通道不可用');
@@ -848,12 +848,12 @@ message RCTabUpdateDataRequestPdu { @@ -848,12 +848,12 @@ message RCTabUpdateDataRequestPdu {
848 optional uint32 uncomprLen =3; 848 optional uint32 uncomprLen =3;
849 } 849 }
850 850
851 -message RCWhiteBoardDataModel { 851 +message RCWhiteBoardDataModelPdu {
852 required uint32 type= 1;//白板类型 852 required uint32 type= 1;//白板类型
853 required uint32 itemIdx= 2;//itemIdx 每一次绘制的唯一标识 853 required uint32 itemIdx= 2;//itemIdx 每一次绘制的唯一标识
854 required uint32 initiator=3; //绘制来自谁 854 required uint32 initiator=3; //绘制来自谁
855 required uint32 parentId=4; //父级的id 855 required uint32 parentId=4; //父级的id
856 - required uint32 curPage= 5;//页码 856 + required uint32 cur_page_no= 5;//页码
857 optional string pointGroup=6; //坐标点集数组的JSON字符串 857 optional string pointGroup=6; //坐标点集数组的JSON字符串
858 optional string color=7 [default = "#000000"]; //颜色 858 optional string color=7 [default = "#000000"]; //颜色
859 optional uint32 thickness= 8 ;//线条粗细 859 optional uint32 thickness= 8 ;//线条粗细