/// <summary>
            /// 初始化网络频道基类的新实例。
            /// </summary>
            /// <param name="name">网络频道名称。</param>
            /// <param name="networkChannelHelper">网络频道辅助器。</param>
            public NetworkChannelBase(string name, INetworkChannelHelper networkChannelHelper)
            {
                m_Name                 = name ?? string.Empty;
                m_SendPacketPool       = new Queue <Packet>();
                m_ReceivePacketPool    = new EventPool <Packet>(EventPoolMode.Default);
                m_NetworkChannelHelper = networkChannelHelper;
                m_AddressFamily        = AddressFamily.Unknown;
                m_ResetHeartBeatElapseSecondsWhenReceivePacket = false;
                m_HeartBeatInterval   = DefaultHeartBeatInterval;
                m_Socket              = null;
                m_SendState           = new SendState();
                m_ReceiveState        = new ReceiveState();
                m_HeartBeatState      = new HeartBeatState();
                m_SentPacketCount     = 0;
                m_ReceivedPacketCount = 0;
                m_Active              = false;
                m_Disposed            = false;

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

                networkChannelHelper.Initialize(this);
            }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建网络频道。
        /// </summary>
        /// <param name="name">网络频道名称。</param>
        /// <param name="networkChannelHelper">网络频道辅助器。</param>
        /// <returns>要创建的网络频道。</returns>
        public INetworkChannel CreateNetworkChannel(string name, INetworkChannelHelper networkChannelHelper)
        {
            if (networkChannelHelper == null)
            {
                throw new GameFrameworkException("Network channel helper is invalid.");
            }

            if (networkChannelHelper.PacketHeaderLength <= 0)
            {
                throw new GameFrameworkException("Packet header length is invalid.");
            }

            if (HasNetworkChannel(name))
            {
                throw new GameFrameworkException(Utility.Text.Format("Already exist network channel '{0}'.", name ?? string.Empty));
            }

            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);
        }
 /// <summary>
 /// 初始化网络频道的新实例。
 /// </summary>
 /// <param name="name">网络频道名称。</param>
 /// <param name="networkChannelHelper">网络频道辅助器。</param>
 public TcpNetworkChannel(string name, INetworkChannelHelper networkChannelHelper)
     : base(name, networkChannelHelper)
 {
     m_ConnectCallback = ConnectCallback;
     m_SendCallback    = SendCallback;
     m_ReceiveCallback = ReceiveCallback;
 }
            public NetworkChannel(string name, INetworkChannel networkChannelHelper)
            {
                m_Name = name ?? string.Empty;
                m_EventPool = new EventPool<Packet>(EventPoolMode.Defalut);
                m_NetworkChannelHelper = networkChannelHelper;
                m_Socket = null;
                m_ReceiveState = new ReceiveState();
                m_Disposed = false;

                NetworkChannelConnected = null;

                networkChannelHelper.Initialize(this);
            }
Ejemplo n.º 5
0
        public INetworkChannel CreateNetworkChannel(string name, INetworkChannelHelper networkChannelHelper)
        {
            if (networkChannelHelper == null)
            {
                throw;
            }
            if (networkChannelHelper.PacketHeaderLength <= 0)
            {
                throw;
            }
            if (HasNetworkChannel(name))
            {
            }

            NetworkChannel nc = new NetworkChannel(name, networkChannelHelper);

            nc.NetworkChannelConnected += OnNetworkChannelConnected;
            m_NetworkChannels.Add(name, nc);
            return(networkChannel);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 创建网络频道。
        /// </summary>
        /// <param name="name">网络频道名称。</param>
        /// <param name="serviceType">网络服务类型。</param>
        /// <param name="networkChannelHelper">网络频道辅助器。</param>
        /// <returns>要创建的网络频道。</returns>
        public INetworkChannel CreateNetworkChannel(string name, ServiceType serviceType, INetworkChannelHelper networkChannelHelper)
        {
            if (networkChannelHelper == null)
            {
                throw new GameFrameworkException("Network channel helper is invalid.");
            }

            if (networkChannelHelper.PacketHeaderLength < 0)
            {
                throw new GameFrameworkException("Packet header length is invalid.");
            }

            if (HasNetworkChannel(name))
            {
                throw new GameFrameworkException(Utility.Text.Format("Already exist network channel '{0}'.", name ?? string.Empty));
            }

            NetworkChannelBase networkChannel = null;

            switch (serviceType)
            {
            case ServiceType.Tcp:
                networkChannel = new TcpNetworkChannel(name, networkChannelHelper);
                break;

            case ServiceType.TcpWithSyncReceive:
                networkChannel = new TcpWithSyncReceiveNetworkChannel(name, networkChannelHelper);
                break;

            default:
                throw new GameFrameworkException(Utility.Text.Format("Not supported service type '{0}'.", serviceType.ToString()));
            }

            networkChannel.NetworkChannelConnected     += OnNetworkChannelConnected;
            networkChannel.NetworkChannelClosed        += OnNetworkChannelClosed;
            networkChannel.NetworkChannelMissHeartBeat += OnNetworkChannelMissHeartBeat;
            networkChannel.NetworkChannelError         += OnNetworkChannelError;
            networkChannel.NetworkChannelCustomError   += OnNetworkChannelCustomError;
            m_NetworkChannels.Add(name, networkChannel);
            return(networkChannel);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// 创建网络频道。
 /// </summary>
 /// <param name="name">网络频道名称。</param>
 /// <param name="serviceType">网络服务类型。</param>
 /// <param name="networkChannelHelper">网络频道辅助器。</param>
 /// <returns>要创建的网络频道。</returns>
 public INetworkChannel CreateNetworkChannel(string name, ServiceType serviceType, INetworkChannelHelper networkChannelHelper)
 {
     return(m_NetworkManager.CreateNetworkChannel(name, serviceType, networkChannelHelper));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 创建网络频道
 /// </summary>
 /// <param name="name"></param>
 /// <param name="networkChannelHelper"></param>
 /// <returns></returns>
 public INetworkChannel CreateNetworkChannel(string name, INetworkChannelHelper networkChannelHelper)
 {
     return(this.m_NetworkManager.CreateNetworkChannel(name, networkChannelHelper));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 创建TcpSync网络频道。
 /// </summary>
 /// <param name="name">网络频道名称。</param>
 /// <param name="networkChannelHelper">网络频道辅助器。</param>
 /// <returns>要创建的网络频道。</returns>
 public INetworkChannel CreateTcpSyncChannel(string name, INetworkChannelHelper networkChannelHelper)
 {
     return(m_NetworkManager.CreateNetworkChannel(name, ServiceType.TcpWithSyncReceive, networkChannelHelper));
 }