/// <summary>
        /// 填充用户自定义网络错误事件
        /// </summary>
        /// <param name="socketTcpRoutine">Socket</param>
        /// <param name="customErrorData">用户自定义网络错误</param>
        /// <returns>用户自定义网络错误事件</returns>
        public SocketCustomErrorGameEvent Fill(SocketTcpRoutine socketTcpRoutine, object customErrorData)
        {
            Socket          = socketTcpRoutine;
            CustomErrorData = customErrorData;

            return(this);
        }
Exemple #2
0
 private void OnSocketClosed(SocketTcpRoutine socketTcpRoutine)
 {
     if (socketTcpRoutine.Name.Equals("MainSocket") && !socketTcpRoutine.Connected)
     {
         m_IsConnectToMainSocket = false;
     }
     GameEntry.Event.CommonEvent.Dispatch(this, GameEntry.Pool.SpawnClassObject <SocketClosedGameEvent>().Fill(socketTcpRoutine));
 }
        /// <summary>
        /// 填充网络错误事件
        /// </summary>
        /// <param name="socketTcpRoutine">Socket</param>
        /// <param name="errorCode">获取错误码</param>
        /// <param name="errorMessage">错误信息</param>
        /// <returns>网络错误事件</returns>
        public SocketErrorGameEvent Fill(SocketTcpRoutine socketTcpRoutine, NetworkErrorCode errorCode, string errorMessage)
        {
            Socket       = socketTcpRoutine;
            ErrorCode    = errorCode;
            ErrorMessage = errorMessage;

            return(this);
        }
Exemple #4
0
 private void OnSocketCustomError(SocketTcpRoutine socketTcpRoutine, object customErrorData)
 {
     if (SocketCustomErrorEvent != null)
     {
         lock (SocketCustomErrorEvent)
         {
             SocketCustomErrorEvent(socketTcpRoutine, customErrorData);
         }
     }
 }
Exemple #5
0
 private void OnSocketError(SocketTcpRoutine socketTcpRoutine, NetworkErrorCode errorCode, string errorMessage)
 {
     if (SocketErrorEvent != null)
     {
         lock (SocketErrorEvent)
         {
             SocketErrorEvent(socketTcpRoutine, errorCode, errorMessage);
         }
     }
 }
Exemple #6
0
 private void OnSocketClosed(SocketTcpRoutine socketTcpRoutine)
 {
     if (SocketClosedEvent != null)
     {
         lock (SocketClosedEvent)
         {
             SocketClosedEvent(socketTcpRoutine);
         }
     }
 }
Exemple #7
0
        /// <summary>
        /// 获取Socket
        /// </summary>
        /// <param name="name">Socket名称</param>
        /// <returns>要获取的Socket</returns>
        public SocketTcpRoutine GetSocketTcpRoutine(string name)
        {
            SocketTcpRoutine socketTcpRoutine = null;

            if (m_SocketTcpRoutines.TryGetValue(name ?? string.Empty, out socketTcpRoutine))
            {
                return(socketTcpRoutine);
            }

            return(null);
        }
Exemple #8
0
        /// <summary>
        /// 获取所有Socket
        /// </summary>
        /// <returns>所有Socket</returns>
        public SocketTcpRoutine[] GetAllSocketTcpRoutines()
        {
            int index = 0;

            SocketTcpRoutine[] results = new SocketTcpRoutine[m_SocketTcpRoutines.Count];
            foreach (KeyValuePair <string, SocketTcpRoutine> SocketTcpRoutine in m_SocketTcpRoutines)
            {
                results[index++] = SocketTcpRoutine.Value;
            }

            return(results);
        }
Exemple #9
0
        public override void Dispose()
        {
            foreach (KeyValuePair <string, SocketTcpRoutine> socketTcpRoutines in m_SocketTcpRoutines)
            {
                SocketTcpRoutine socket = socketTcpRoutines.Value;
                socket.SocketConnected   -= OnSocketConnected;
                socket.SocketClosed      -= OnSocketClosed;
                socket.SocketError       -= OnSocketError;
                socket.SocketCustomError -= OnSocketCustomError;
                socket.Shutdown();
            }

            m_SocketTcpRoutines.Clear();
        }
Exemple #10
0
        /// <summary>
        /// 销毁网络频道
        /// </summary>
        /// <param name="name">网络频道名称</param>
        /// <returns>是否销毁网络频道成功</returns>
        public bool DestroySocketTcpRoutine(string name)
        {
            SocketTcpRoutine socketTcpRoutine = null;

            if (m_SocketTcpRoutines.TryGetValue(name ?? string.Empty, out socketTcpRoutine))
            {
                socketTcpRoutine.SocketConnected   -= OnSocketConnected;
                socketTcpRoutine.SocketClosed      -= OnSocketClosed;
                socketTcpRoutine.SocketError       -= OnSocketError;
                socketTcpRoutine.SocketCustomError -= OnSocketCustomError;
                socketTcpRoutine.Shutdown();
                return(m_SocketTcpRoutines.Remove(name));
            }

            return(false);
        }
Exemple #11
0
        /// <summary>
        /// 创建SocketTcp访问器
        /// </summary>
        /// <param name="name">SocketTcp名称</param>
        /// <returns></returns>
        public SocketTcpRoutine CreateSocketTcpRoutine(string name)
        {
            if (HasSocketTcp(name))
            {
                throw new Exception(TextUtil.Format("Already exist network channel '{0}'.", name ?? string.Empty));
            }

            SocketTcpRoutine socketTcpRoutine = new SocketTcpRoutine(name);

            socketTcpRoutine.SocketConnected   += OnSocketConnected;
            socketTcpRoutine.SocketClosed      += OnSocketClosed;
            socketTcpRoutine.SocketError       += OnSocketError;
            socketTcpRoutine.SocketCustomError += OnSocketCustomError;
            m_SocketTcpRoutines.Add(name, socketTcpRoutine);
            return(socketTcpRoutine);
        }
Exemple #12
0
        private void DrawSocketTcp(SocketTcpRoutine socketTcpRoutine)
        {
            EditorGUILayout.BeginVertical("box");
            {
                EditorGUILayout.LabelField(socketTcpRoutine.Name, socketTcpRoutine.Connected ? "Connected" : "Disconnected");
                EditorGUILayout.LabelField("Network Type", socketTcpRoutine.NetworkType.ToString());
                EditorGUILayout.LabelField("Local Address", socketTcpRoutine.Connected ? TextUtil.Format("{0}:{1}", socketTcpRoutine.LocalIPAddress.ToString(), socketTcpRoutine.LocalPort.ToString()) : "Unavailable");
                EditorGUILayout.LabelField("Remote Address", socketTcpRoutine.Connected ? TextUtil.Format("{0}:{1}", socketTcpRoutine.RemoteIPAddress.ToString(), socketTcpRoutine.RemotePort.ToString()) : "Unavailable");
                EditorGUILayout.LabelField("Send Packet", TextUtil.Format("{0} / {1}", socketTcpRoutine.SendPacketCount.ToString(), socketTcpRoutine.SentPacketCount.ToString()));
                EditorGUILayout.LabelField("Receive Packet", TextUtil.Format("{0} / {1}", socketTcpRoutine.ReceivePacketCount.ToString(), socketTcpRoutine.ReceivedPacketCount.ToString()));
                EditorGUI.BeginDisabledGroup(!socketTcpRoutine.Connected);
                {
                    if (GUILayout.Button("Disconnect"))
                    {
                        socketTcpRoutine.Close();
                    }
                }
                EditorGUI.EndDisabledGroup();
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
        }
Exemple #13
0
 // Use this for initialization
 void Start()
 {
     sc = new SocketTcpRoutine();
 }
Exemple #14
0
        /// <summary>
        /// 填充网络连接关闭事件
        /// </summary>
        /// <param name="socketTcpRoutine">socket</param>
        /// <returns>网络连接关闭事件</returns>
        public SocketClosedGameEvent Fill(SocketTcpRoutine socketTcpRoutine)
        {
            SocketTcpRoutine = socketTcpRoutine;

            return(this);
        }
Exemple #15
0
 private void OnSocketError(SocketTcpRoutine socketTcpRoutine, NetworkErrorCode errorCode, string errorMessage)
 {
     GameEntry.Event.CommonEvent.Dispatch(this, GameEntry.Pool.SpawnClassObject <SocketErrorGameEvent>().Fill(socketTcpRoutine, errorCode, errorMessage));
     Debug.LogError(errorMessage);
 }
Exemple #16
0
 private void OnSocketCustomError(SocketTcpRoutine socketTcpRoutine, object customErrorData)
 {
     Debug.LogError(customErrorData);
     GameEntry.Event.CommonEvent.Dispatch(this, GameEntry.Pool.SpawnClassObject <SocketCustomErrorGameEvent>().Fill(socketTcpRoutine, customErrorData));
 }
        /// <summary>
        /// 填充网络连接成功事件
        /// </summary>
        /// <param name="socketTcpRoutine">socket</param>
        /// <returns>网络连接成功事件</returns>
        public SocketConnectedGameEvent Fill(SocketTcpRoutine socketTcpRoutine)
        {
            Socket = socketTcpRoutine;

            return(this);
        }