public void RefleshBlockConnect(ConferenceClientAcceptType conferenceClientAcceptType) { try { ClientSocket clientSocket = default(ClientSocket); switch (conferenceClientAcceptType) { case ConferenceClientAcceptType.ConferenceTree: clientSocket = this.TreeClientSocket; this.RefleshBlockConnectHelper(clientSocket, conferenceClientAcceptType); break; case ConferenceClientAcceptType.ConferenceAudio: clientSocket = this.AudioClientSocket; this.RefleshBlockConnectHelper(clientSocket, conferenceClientAcceptType); break; default: break; } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }
public PortTypeEntity RunServerSocket(int conferenceID, ConferenceClientAcceptType conferenceClientAcceptType) { //上锁,达到线程互斥作用 lock (objRunServerSocket) { //返回会议端口 PortTypeEntity portTypeEntity = new PortTypeEntity(); try { //服务器通讯机制启动 int MeetPort = Constant.ServerSocketInitAndRetunPort(conferenceID, conferenceClientAcceptType); //服务端口 portTypeEntity.ServerPoint = MeetPort; //服务类型 portTypeEntity.conferenceClientAcceptType = conferenceClientAcceptType; } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } return(portTypeEntity); } }
public void Repair_ClientSocket(ClientSocket clientSocket, ConferenceClientAcceptType conferenceClientAcceptType, bool NeedReflesh) { try { if (clientSocket != null && clientSocket._clientSocket != null) { if (clientSocket._clientSocket.Poll(10, SelectMode.SelectRead)) { //移除知识树通讯节点 ModelManage.ConferenceInfo.RemoveSelfClientSocket(CommunicationCodeEnterEntity.ConferenceID, conferenceClientAcceptType, CommunicationCodeEnterEntity.SelfUri, null); //获取知识树服务端口 ModelManage.ConferenceInfo.GetMeetPort(CommunicationCodeEnterEntity.ConferenceID, conferenceClientAcceptType, new Action <bool, PortTypeEntity>((Successed, portTypeEntity) => { //通知服务端进行套接字的收集 this.Communication_Server_Client(clientSocket, portTypeEntity.ServerPoint); if (NeedReflesh) { if (this.PageRefleshCallBack != null) { this.PageRefleshCallBack(); } } })); } } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }
public void Repair_ClientSocket(ClientSocket clientSocket, ConferenceClientAcceptType conferenceClientAcceptType, ViewSelectedItemEnum viewSelectedItemEnum) { try { if (clientSocket != null && clientSocket._clientSocket != null) { if (clientSocket._clientSocket.Poll(10, SelectMode.SelectRead)) { //移除知识树通讯节点 ModelManage.ConferenceInfo.RemoveSelfClientSocket(Constant.ConferenceName, conferenceClientAcceptType, Constant.SelfUri, null); //获取知识树服务端口 ModelManage.ConferenceInfo.GetMeetPort(Constant.ConferenceName, conferenceClientAcceptType, new Action <bool, PortTypeEntity>((Successed, portTypeEntity) => { //通知服务端进行套接字的收集 this.Communication_Server_Client(clientSocket, portTypeEntity.ServerPoint); if (viewSelectedItemEnum != ConferenceCommon.EnumHelper.ViewSelectedItemEnum.None) { this.Dispatcher.BeginInvoke(new Action(() => { //刷新页面 MainWindow.MainPageInstance.PageReflesh(viewSelectedItemEnum); })); } })); } } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }
/// <summary> /// 自我删除通讯节点 /// </summary> public void RemoveSelfClientSocket(string conferenceName, ConferenceClientAcceptType conferenceClientAcceptType, string contactUri, Action <bool> callback) { try { this.RemoveSelfClientSocket_CallBack = callback; ConferenceInfo.Client.RemoveClientSocketAsync(conferenceName, conferenceClientAcceptType, contactUri); } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } }
/// <summary> /// 获取会议通讯端口 /// </summary> /// <param name="conferenceName">会议名称</param> public void GetMeetPort(string conferenceName, ConferenceClientAcceptType conferenceClientAcceptType, Action <bool, PortTypeEntity> callBack) { try { if (ConferenceInfo.client != null) { //绑定会议通讯节点回调 this.GetMeetPort_CallBack = callBack; //异步获取会议通讯节点 ConferenceInfo.Client.RunServerSocketAsync(conferenceName, conferenceClientAcceptType); } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }
public void RefleshBlockConnectHelper(ClientSocket clientSocket, ConferenceClientAcceptType conferenceClientAcceptType) { try { //移除知识树通讯节点 ModelManage.ConferenceInfo.RemoveSelfClientSocket(CommunicationCodeEnterEntity.ConferenceID, conferenceClientAcceptType, CommunicationCodeEnterEntity.SelfUri, null); //获取知识树服务端口 ModelManage.ConferenceInfo.GetMeetPort(CommunicationCodeEnterEntity.ConferenceID, conferenceClientAcceptType, new Action <bool, PortTypeEntity>((Successed, portTypeEntity) => { //通知服务端进行套接字的收集 this.Communication_Server_Client(clientSocket, portTypeEntity.ServerPoint); //callBack(); })); } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }
/// <summary> /// 服务器通讯节点初始化 /// </summary> /// <param name="conferenceName">会议名称</param> /// <returns>返回端口号</returns> public static int ServerSocketInitAndRetunPort(int conferenceID, ConferenceClientAcceptType conferenceClientAcceptType) { int ConferencePort = 0; try { //声明一个服务集合 Dictionary <int, MeetServerSocket> DicmeetServerSocket = null; switch (conferenceClientAcceptType) { case ConferenceClientAcceptType.ConferenceTree: //知识树服务 DicmeetServerSocket = Constant.DicTreeMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceAudio: //语音服务 DicmeetServerSocket = Constant.DicAudioMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceFileSync: //甩屏服务 DicmeetServerSocket = Constant.DicFileMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceSpaceSync: //甩屏服务 DicmeetServerSocket = Constant.DicSpaceMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceInfoSync: //消息服务 DicmeetServerSocket = Constant.DicInfoMeetServerSocket; break; case ConferenceClientAcceptType.LyncConversationSync: //lync通讯服务 DicmeetServerSocket = Constant.DicLyncMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceMatrixSync: //矩阵应用 DicmeetServerSocket = Constant.DicMatrixMeetServerSocket; break; default: break; } //判断是否包含该会议通讯节点 if (!DicmeetServerSocket.ContainsKey(conferenceID)) { //生成一个服务器通讯节点 MeetServerSocket meetServerSocket = new MeetServerSocket(); //服务处理类型 meetServerSocket.ConferenceClientAcceptType = conferenceClientAcceptType; //加载一个新的会议节点 DicmeetServerSocket.Add(conferenceID, meetServerSocket); //设置会议的数量 Constant.MeetCount = DicmeetServerSocket.Count; //服务器通讯节点初始化辅助 Constant.DicServerSocketInitHelper(meetServerSocket); //返回端口 ConferencePort = meetServerSocket.ServerPort; } else { //返回端口 ConferencePort = DicmeetServerSocket[conferenceID].ServerPort; } } catch (Exception ex) { LogManage.WriteLog(typeof(Constant), ex); } //返回指定端口 return(ConferencePort); }
public void RemoveClientSocket(int conferenceID, ConferenceClientAcceptType conferenceClientAcceptType, string contactUrl) { //上锁,达到线程互斥作用 lock (objRemoveClientSocket) { try { //会议名称不为空 if (conferenceID == 0) { return; } //声明一个服务集合 Dictionary <int, MeetServerSocket> DicmeetServerSocket = null; switch (conferenceClientAcceptType) { case ConferenceClientAcceptType.ConferenceTree: //知识树服务 DicmeetServerSocket = Constant.DicTreeMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceAudio: //语音服务 DicmeetServerSocket = Constant.DicAudioMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceFileSync: //甩屏服务 DicmeetServerSocket = Constant.DicFileMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceSpaceSync: //office服务 DicmeetServerSocket = Constant.DicSpaceMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceInfoSync: //消息服务 DicmeetServerSocket = Constant.DicInfoMeetServerSocket; break; case ConferenceClientAcceptType.LyncConversationSync: //lync通讯服务 DicmeetServerSocket = Constant.DicLyncMeetServerSocket; break; case ConferenceClientAcceptType.ConferenceMatrixSync: //矩阵应用通讯服务 DicmeetServerSocket = Constant.DicMatrixMeetServerSocket; break; default: break; } //会议通讯节点集合是否包含该项 if (DicmeetServerSocket.ContainsKey(conferenceID)) { //获取客户端通讯节点字典集合 Dictionary <string, SocketModel> dicSocket = DicmeetServerSocket[conferenceID].DicClientSocket; //获取指定客户端通讯节点 if (dicSocket.ContainsKey(contactUrl)) { //移除指定客户端通讯节点 dicSocket.Remove(contactUrl); } } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } } }