Esempio n. 1
0
        private void ChangeStatus(SESSION_STATUS status)
        {
            m_cStatus = status;
            if (status == SESSION_STATUS.CONNECT_SUCCESS)
            {
                if (mCallback != null)
                {
                    mCallback(EVENT.CONNECTED, null, null);
                }
            }

            if (status == SESSION_STATUS.CONNECT_FAILED_CONNECT_ERROR)
            {
                if (mCallback != null)
                {
                    mCallback(EVENT.CONNECT_FAILED, null, "connect error");
                }
            }

            if (status == SESSION_STATUS.CONNECT_FAILED_TIME_OUT)
            {
                if (mCallback != null)
                {
                    mCallback(EVENT.CONNECT_FAILED, null, "connect time out");
                }
            }

            if (status == SESSION_STATUS.CONNECT_EXIT)
            {
                if (mCallback != null)
                {
                    mCallback(EVENT.CONNECT_DISCONNECT, null, "disconnect");
                }
            }
        }
Esempio n. 2
0
        private SESSION_STATUS m_cStatus;               //会话状态

        public ClientSession(DispatchFactoryBase dispatchFactory)
        {
            this.m_cStatus          = SESSION_STATUS.NO_CONNECT;
            this.m_cDispatchFactory = dispatchFactory;

            this.m_cReceiveBuffer = new StreamBuffer();
            this.m_cSendBuffer    = new StreamBuffer();

            this.m_cSendQueue = new NetQueue <PacketBase>(64 * 256);
            this.m_cSendQueue.Clear();

            this.m_bStartReConnect = false;
        }
Esempio n. 3
0
        private string m_strAddress; //连接地址

        #endregion Fields

        #region Constructors

        public ClientSession( DispatchFactoryBase dispatchFactory )
        {
            this.m_cStatus = SESSION_STATUS.NO_CONNECT;
            this.m_cDispatchFactory = dispatchFactory;

            this.m_cReceiveBuffer = new StreamBuffer();
            this.m_cSendBuffer = new StreamBuffer();

            this.m_cSendQueue = new NetQueue<PacketBase>(64 * 256);
            this.m_cSendQueue.Clear();

            this.m_bStartReConnect = false;
        }
Esempio n. 4
0
        public TCPSession(System.Action <EVENT, byte[], string> _callback)
        {
            mReceiveArray = new byte[RECEIVE_MAX_NUM];

            m_cStatus = SESSION_STATUS.NO_CONNECT;

            m_cReceiveBuffer = new StreamBuffer();
            m_cSendBuffer    = new StreamBuffer();

            mQueSend        = new Queue <byte[]>();
            m_cReceiveQueue = new SwitchQueue <byte[]>(128);

            mCallback = _callback;
        }
Esempio n. 5
0
        /// <summary>
        /// 逻辑更新
        /// </summary>
        /// <returns></returns>
        public override bool Update()
        {
            if (this.m_cStatus == SESSION_STATUS.CONNECT_SUCCESS)
            {
                if (this.m_cDispatch != null)
                {
                    this.m_cDispatch.Update();
                }
            }

            //判断连接异常断开
            if (this.m_cStatus == SESSION_STATUS.CONNECT_SUCCESS && !this.m_cSocket.Connected)
            {
                this.m_cDispatch.OnDisconnect();
                this.m_cStatus = SESSION_STATUS.NO_CONNECT;
                if (this.m_iReConnectSecond >= 0)   //设置重连
                {
                    this.m_bStartReConnect     = true;
                    this.m_lStartReConnectTime = DateTime.Now.Ticks;
                }
            }

            //判断重连
            if (this.m_bStartReConnect)
            {
                if (DateTime.Now.Ticks - this.m_lStartReConnectTime >= this.m_iReConnectSecond)
                {
                    this.m_bStartReConnect = false;
                    ReConnect();
                }
            }

            for (int i = 0; i < 5; i++)
            {
                Send();
            }

            return(true);
        }
Esempio n. 6
0
        public SESSION_STATUS GetSessionStatus(string Token)
        {
            SESSION_STATUS sessionStatus = SESSION_STATUS.UNKNOW;
            SessionModel   session       = GetSession(Token);

            if (session == null)
            {
                sessionStatus = SESSION_STATUS.NOTEXIST;
                return(sessionStatus);
            }

            if (DateTime.Compare((DateTime)session.ValidDay, DateTime.Now) > 0)
            {
                sessionStatus = SESSION_STATUS.AVAILABLE;
            }
            else
            {
                sessionStatus = SESSION_STATUS.EXPIRED;
            }

            return(sessionStatus);
        }
Esempio n. 7
0
 /// <summary>
 /// 更换
 /// </summary>
 /// <param name="status"></param>
 protected override void ChangeStatus(SESSION_STATUS status)
 {
     this.m_cStatus = status;
 }
Esempio n. 8
0
 public abstract SESSION_STATUS GetStatus();                  //获取会话状态
 protected abstract void ChangeStatus(SESSION_STATUS status); //更换状态
Esempio n. 9
0
 /// <summary>
 /// 更改会话状态
 /// </summary>
 /// <param name="status"></param>
 protected override void ChangeStatus(SESSION_STATUS status)
 {
     this.m_cStatus = status;
 }
Esempio n. 10
0
        /// <summary>
        /// 逻辑更新
        /// </summary>
        /// <returns></returns>
        public override bool Update()
        {
            if (this.m_cStatus == SESSION_STATUS.CONNECT_SUCCESS)
            {
                if (this.m_cDispatch != null)
                {
                    this.m_cDispatch.Update();
                }
            }

            //判断连接异常断开
            if (this.m_cStatus == SESSION_STATUS.CONNECT_SUCCESS && !this.m_cSocket.Connected)
            {
                this.m_cDispatch.OnDisconnect();
                this.m_cStatus = SESSION_STATUS.NO_CONNECT;
                if (this.m_iReConnectSecond >= 0)   //设置重连
                {
                    this.m_bStartReConnect = true;
                    this.m_lStartReConnectTime = DateTime.Now.Ticks;
                }
            }

            //判断重连
            if (this.m_bStartReConnect)
            {
                if (DateTime.Now.Ticks - this.m_lStartReConnectTime >= this.m_iReConnectSecond)
                {
                    this.m_bStartReConnect = false;
                    ReConnect();
                }
            }

            for (int i = 0; i < 5; i++)
            {
                Send();
            }

            return true;
        }
Esempio n. 11
0
 protected abstract void ChangeStatus(SESSION_STATUS status);