Exemple #1
0
        /// <summary>
        /// 创建网络频道
        /// </summary>
        /// <param name="name">网络频道名称</param>
        /// <param name="networkChannelHelper">网络频道辅助器</param>
        /// <returns>要创建的网络频道</returns>
        public NetworkChannel CreateNetworkChannel(string name, NetworkChannelHelperBase networkChannelHelper)
        {
            if (networkChannelHelper == null)
            {
                Debug.LogError("用来创建网络频道的辅助器为空,无法创建");
                return(null);
            }

            if (networkChannelHelper.PacketHeaderLength <= 0)
            {
                Debug.LogError("用来创建网络频道的辅助器为空,无法创建");
                return(null);
            }

            if (HasNetworkChannel(name))
            {
                Debug.LogError("用来创建网络频道的辅助器为空,无法创建");
                return(null);
            }

            NetworkChannel networkChannel = new NetworkChannel(name, networkChannelHelper);

            networkChannel.NetworkChannelConnected     += OnNetworkChannelConnected;
            networkChannel.NetworkChannelClosed        += OnNetworkChannelClosed;
            networkChannel.NetworkChannelMissHeartBeat += OnNetworkChannelMissHeartBeat;
            networkChannel.NetworkChannelError         += OnNetworkChannelError;
            networkChannel.NetworkChannelCustomError   += OnNetworkChannelCustomError;
            m_NetworkChannels.Add(name, networkChannel);
            return(networkChannel);
        }
        public NetworkChannel(string name, NetworkChannelHelperBase networkChannelHelper)
        {
            Name                   = name ?? string.Empty;
            m_SendPacketPool       = new Queue <PacketBase>();
            m_ReceivePacketPool    = new EventPool <PacketBase>();
            m_NetworkChannelHelper = networkChannelHelper;
            NetworkType            = NetworkType.Unknown;
            ResetHeartBeatElapseSecondsWhenReceivePacket = false;
            HeartBeatInterval = DefaultHeartBeatInterval;
            m_Socket          = null;
            m_SendState       = new SendState();
            m_ReceiveState    = new ReceiveState();
            m_HeartBeatState  = new HeartBeatState();
            m_Active          = false;
            m_Disposed        = false;

            NetworkChannelConnected     = null;
            NetworkChannelClosed        = null;
            NetworkChannelMissHeartBeat = null;
            NetworkChannelError         = null;
            NetworkChannelCustomError   = null;

            networkChannelHelper.Initialize(this);
        }