Пример #1
0
        /// <summary>
        /// 添加多个连接端口的数据传过来
        /// </summary>
        public void AddConnecter(Connecter connecter)
        {
            if (connecter == null)
            {
                throw new Exception("MessagePump.AddConnecter(...) - connecter == null error!");
            }

            if (connecter.World != null)
            {
                throw new ArgumentException("MessagePump.AddConnecter(...) - connecter.World != null error!", "connecter.World");
            }

            m_OnlyLockAddConnecter.Enter();
            {
                // 创建新的Listener数组,添加数据,交换数组数据,不需要锁定,没有引用时自动会回收数据
                Connecter[] tempConnecter = new Connecter[m_Connecters.Length + 1];

                for (int iIndex = 0; iIndex < m_Connecters.Length; ++iIndex)
                {
                    tempConnecter[iIndex] = m_Connecters[iIndex];
                }

                tempConnecter[m_Connecters.Length] = connecter;
                connecter.World = m_World;

                m_Connecters = tempConnecter;
            }
            m_OnlyLockAddConnecter.Exit();
        }
        /// <summary>
        ///
        /// </summary>
        internal ClientSocketManager(Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer)
        {
            if (connecter == null)
            {
                throw new Exception("ClientSocketHandler.ClientSocketManager(...) - listener == null error!");
            }

            if (connectHandler == null)
            {
                throw new Exception("ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!");
            }

            if (receiveBuffer == null)
            {
                throw new Exception("ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!");
            }

            m_Connecter     = connecter;
            m_ConnectHandle = connectHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // 清空数据
                m_ReceiveBuffer.Clear();
            }

            // 初始化数据 表示还没调用过Free(...)函数
            m_LockFree.SetValid();
        }
        /// <summary>
        /// 
        /// </summary>
        internal ClientSocketManager( Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer  )
        {
            if ( connecter == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" );

            if ( connectHandler == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" );

            if ( receiveBuffer == null )
                throw new Exception( "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" );

            m_Connecter = connecter;
            m_ConnectHandle = connectHandler;
            m_ReceiveBuffer = receiveBuffer;
            {
                // 清空数据
                m_ReceiveBuffer.Clear();
            }

            // 初始化数据 表示还没调用过Free(...)函数
            m_LockFree.SetValid();
        }
Пример #4
0
        /// <summary>
        /// 添加多个连接端口的数据传过来
        /// </summary>
        public void AddConnecter( Connecter connecter )
        {
            if ( connecter == null )
                throw new Exception( "MessagePump.AddConnecter(...) - connecter == null error!" );

            if ( connecter.World != null )
                throw new ArgumentException( "MessagePump.AddConnecter(...) - connecter.World != null error!", "connecter.World" );

            m_OnlyLockAddConnecter.Enter();
            {
                // 创建新的Listener数组,添加数据,交换数组数据,不需要锁定,没有引用时自动会回收数据
                Connecter[] tempConnecter = new Connecter[m_Connecters.Length + 1];

                for ( int iIndex = 0; iIndex < m_Connecters.Length; ++iIndex )
                    tempConnecter[iIndex] = m_Connecters[iIndex];

                tempConnecter[m_Connecters.Length] = connecter;
                connecter.World = m_World;

                m_Connecters = tempConnecter;
            }
            m_OnlyLockAddConnecter.Exit();
        }