예제 #1
0
        private void mallocRoom(GroupClass group_val, string theme_info_val)
        {
            string uplink_data = Protocols.FabricThemeProtocolClass.FABRIC_THEME_PROTOCOL_COMMAND_IS_SETUP_ROOM;

            uplink_data = uplink_data + group_val.GroupIdStr();
            uplink_data = uplink_data + theme_info_val;
            this.FabricRootObject().UFabricObject().TransmitData(uplink_data);
        }
예제 #2
0
        public GroupClass MallocGroup(string theme_data_val)
        {
            GroupClass group = new GroupClass(theme_data_val);

            PhwangUtils.ListEntryClass list_entry = this.listMgr.MallocEntry(group);
            group.BindListEntry(list_entry);
            return(group);
        }
예제 #3
0
        public GroupClass GetGroupByGroupId(int group_id_val)
        {
            PhwangUtils.ListEntryClass list_entry = this.listMgr.GetEntryById(group_id_val);
            if (list_entry == null)
            {
                return(null);
            }
            GroupClass room_object = (GroupClass)list_entry.Data();

            return(room_object);
        }
예제 #4
0
        private void processPutRoomDataResponse(string input_data_val)
        {
            string     group_id_str = input_data_val.Substring(0, Protocols.FabricThemeProtocolClass.FABRIC_GROUP_ID_SIZE);
            string     input_data   = input_data_val.Substring(Protocols.FabricThemeProtocolClass.FABRIC_GROUP_ID_SIZE);
            GroupClass group        = this.GroupMgrObject().GetGroupByGroupIdStr(group_id_str);

            if (group != null)
            {
                int      session_array_size = group.GetSessionArraySize();
                object[] session_array      = group.GetSessionArray();
                for (int i = 0; i < session_array_size; i++)
                {
                    SessionClass session = (SessionClass)session_array[i];
                    session.EnqueuePendingDownLinkData(input_data);
                }
            }
        }
예제 #5
0
        private string processSetupSession2Request(string input_data_val)
        {
            this.debugIt(true, "processSetupSession3Request", "input_data_val = " + input_data_val);
            SetupSession2RequestFormat format_data;

            using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(input_data_val)))
            {
                DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(SetupSession2RequestFormat));
                format_data = (SetupSession2RequestFormat)deseralizer.ReadObject(ms);// //反序列化ReadObject
                this.debugIt(true, "processSetupSession3Request", "link_id = " + format_data.link_id);
                this.debugIt(true, "processSetupSession3Request", "session_id = " + format_data.session_id);
                this.debugIt(true, "processSetupSession3Request", "theme_id = " + format_data.theme_id_str);
                this.debugIt(true, "processSetupSession3Request", "accept = " + format_data.accept);
                this.debugIt(true, "processSetupSession3Request", "theme_data = " + format_data.theme_data);
            }

            LinkClass link = this.LinkMgrObject().GetLinkById(format_data.link_id);

            if (link == null)
            {
                return(errorProcessSetupSession2(format_data.link_id, "null link"));
            }
            SessionClass session = link.SessionMgrObject().GetSessionBySessionId(format_data.session_id);

            if (session == null)
            {
                return(errorProcessSetupSession2(format_data.link_id, "null session"));
            }
            session.SetBrowserThemeIdStr(format_data.theme_id_str);
            GroupClass group = session.GroupObject();

            if (group == null)
            {
                return(errorProcessSetupSession2(format_data.link_id, "null group"));
            }
            this.mallocRoom(group, format_data.theme_data);

            string response_data = this.dFabricResponseObject.GenerateSetupSession2Response(link.LinkIdStr(), session.SessionIdStr(), session.BrowserThemeIdStr());

            return(response_data);
        }
예제 #6
0
        private void processSetupRoomResponse(string input_data_val)
        {
            string group_id_str = input_data_val.Substring(0, Protocols.FabricThemeProtocolClass.FABRIC_GROUP_ID_SIZE);
            string room_id_str  = input_data_val.Substring(Protocols.FabricThemeProtocolClass.FABRIC_GROUP_ID_SIZE);

            GroupClass group = this.GroupMgrObject().GetGroupByGroupIdStr(group_id_str);

            if (group != null)
            {
                group.SetRoomIdStr(room_id_str);
                int      session_array_size = group.GetSessionArraySize();
                object[] session_array      = group.GetSessionArray();
                //group->setSessionTableArray((SessionClass**)phwangArrayMgrGetArrayTable(group->sessionArrayMgr(), &session_array_size));
                //printf("++++++++++++++++++++++++++++++++++++++++++++%d\n", session_array_size);
                for (int i = 0; i < session_array_size; i++)
                {
                    SessionClass session = (SessionClass)session_array[i];
                    session.LinkObject().SetPendingSessionSetup3(session.BrowserThemeIdStr(), session.SessionIdStr(), "");
                }
            }
        }
예제 #7
0
 public GroupSessionMgrClass(GroupClass group_object_val)
 {
     this.groupObject    = group_object_val;
     this.arrayMgrObject = new PhwangUtils.ArrayMgrClass(this.objectName, 'o', MAX_SESSION_ARRAY_SIZE);
 }
예제 #8
0
 public void BindGroup(GroupClass group_object_val)
 {
     this.groupObject = group_object_val;
 }
예제 #9
0
        private string processSetupSessionRequest(string input_data_val)
        {
            this.debugIt(true, "processSetupSessionRequest", "input_data_val = " + input_data_val);
            SetupSessionRequestFormat format_data;

            using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(input_data_val)))
            {
                DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(SetupSessionRequestFormat));
                format_data = (SetupSessionRequestFormat)deseralizer.ReadObject(ms);// //反序列化ReadObject
                this.debugIt(true, "processSetupSessionRequest", "link_id = " + format_data.link_id);
                this.debugIt(true, "processSetupSessionRequest", "his_name = " + format_data.his_name);
                this.debugIt(true, "processSetupSessionRequest", "theme_data = " + format_data.theme_data);
            }

            string theme_id_str = format_data.theme_data.Substring(0, Protocols.FabricFrontEndProtocolClass.BROWSER_THEME_ID_SIZE);
            string theme_data   = format_data.theme_data.Substring(Protocols.FabricFrontEndProtocolClass.BROWSER_THEME_ID_SIZE);

            LinkClass    link    = this.LinkMgrObject().GetLinkByIdStr(format_data.link_id);
            SessionClass session = link.MallocSession();

            session.SetBrowserThemeIdStr(theme_id_str);
            GroupClass group = this.GroupMgrObject().MallocGroup(theme_data);

            if (group == null)
            {
                return(this.errorProcessSetupSession(format_data.link_id, "null group"));
            }
            group.InsertSession(session);
            session.BindGroup(group);

            if (format_data.his_name == link.MyName())
            {
                this.mallocRoom(group, theme_data);
            }
            else
            {
                LinkClass his_link = this.LinkMgrObject().GetLinkByMyName(format_data.his_name);
                if (his_link == null)
                {
                    return(this.errorProcessSetupSession(format_data.link_id, "his_link does not exist"));
                }
                SessionClass his_session = his_link.MallocSession();
                if (his_session == null)
                {
                    return(this.errorProcessSetupSession(format_data.link_id, "null his_session"));
                }

                group.InsertSession(his_session);
                his_session.BindGroup(group);

                his_link.SetPendingSessionSetup(his_link.LinkIdStr() + his_session.SessionIdStr(), theme_data);
            }
            //char* data_ptr;
            //char* downlink_data = data_ptr = (char*)phwangMalloc(LINK_MGR_DATA_BUFFER_SIZE + 4, "DFS1");
            //*data_ptr++ = WEB_FABRIC_PROTOCOL_RESPOND_IS_SETUP_SESSION;
            //memcpy(data_ptr, ajax_id, WEB_FABRIC_PROTOCOL_AJAX_ID_SIZE);
            //data_ptr += WEB_FABRIC_PROTOCOL_AJAX_ID_SIZE;
            //strcpy(data_ptr, session->sessionIdIndex());
            //this->transmitFunction(tp_transfer_object_val, downlink_data);

            string response_data = this.dFabricResponseObject.GenerateSetupSessionResponse(link.LinkIdStr(), session.SessionIdStr());

            return(response_data);
        }