/// <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); }