示例#1
0
        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);
     }
 }
示例#3
0
 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
     {
     }
 }
示例#4
0
 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
     {
     }
 }
示例#5
0
 /// <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);
     }
 }
示例#6
0
 /// <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
     {
     }
 }
示例#7
0
 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
     {
     }
 }
示例#8
0
        /// <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);
                }
            }
        }