Esempio n. 1
0
        /// <summary>
        /// new session
        /// </summary>
        /// <param name="socket"></param>
        private void NewSession(Socket socket)
        {
            var headBuffer           = SocketHelper.Receive(socket, 4);
            var clientInfoDataLength = BitConverter.ToInt32(headBuffer, 0);

            if (clientInfoDataLength >= 0 && clientInfoDataLength < 65535)
            {
                //旧有版本使用的BitConvert.GetBytes序列化因此 根据旧版本长度不可能超过1000字节的依据,使用 >  [0,0,0,0] = 0 && < [255,255,0,0] = 65535

                CsInfo clientInfo = null;
                //body
                using (var m = SocketHelper.Receive(socket, clientInfoDataLength, CsSocket.BODY_BUFFER_SIZE))
                {
                    try
                    {
                        clientInfo = CsSerializer.Deserialize(typeof(CsInfo), m) as CsInfo;
                    }
                    catch (Exception)
                    {
                        socket.Close();
                        return;
                    }
                }
                //
                if (clientInfo != null)
                {
                    var session = new ServerSession(socket, this.serverLogger, this, clientInfo);
                    lock (this.sessionCountLock)
                    {
                        session.Disposed += this.SessionDisposedCallback;
                        this.sessionCount++;
                    }

                    session.ReceiveCommand();
                }
            }
            //client >= 1.4
            else
            {
                var session = new ServerSession2(socket, this.logManager, headBuffer);
                //
                lock (this.sessionCountLock)
                {
                    session.Disposed += this.Session2DisposedCallback;
                    this.sessionCount++;
                }
                session.ReceiveCommand();
            }
        }
Esempio n. 2
0
        ///// <summary>
        ///// accept exception
        ///// </summary>
        ///// <param name="exception"></param>
        //public void AcceptException(Exception exception)
        //{
        //    this.logManager.Error.WriteLine("{0} AcceptException: {1}", DateTime.Now, exception);

        //   // this.logManager.Exception(exception);
        //}

        ///// <summary>
        /////  new session exception
        ///// </summary>
        ///// <param name="exception"></param>
        //public void NewSessionException(Exception exception)
        //{
        //    this.logManager.Error.WriteLine("{0} NewSessionException: {1}", DateTime.Now, exception);

        //   // this.logManager.Exception(exception);
        //}

        /// <summary>
        ///  session exception
        /// </summary>
        /// <param name="exception"></param>
        /// <param name="session"></param>
        public void SessionException(ServerSession session, Exception exception)
        {
            this.logManager.Error.WriteLine("{0} SessionException SessionId: {1},  {2}", DateTime.Now, session.Id, exception);
        }
Esempio n. 3
0
        ///// <summary>
        ///// 新连接未成功
        ///// </summary>
        ///// <param name="clientIp"></param>
        ///// <param name="clientPort"></param>
        //public void NewSessionConnectionUnfinished(string clientIp, int clientPort)
        //{
        //    this.logManager.Message.WriteLine("{0} NewSession, Connection Unfinished: Client: {1}:{2}", DateTime.Now, clientIp, clientPort);
        //}

        /// <summary>
        /// 命令执行
        /// </summary>
        /// <param name="session"></param>
        /// <param name="serverName"></param>
        /// <param name="commandName"></param>
        /// <param name="cacheType"></param>
        /// <param name="invokeSeconds"></param>
        /// <param name="seconds"></param>
        /// <param name="result"></param>
        public void Command(ServerSession session, string serverName, string commandName, bool result, ServerCacheType cacheType, double invokeSeconds, double seconds)
        {
            this.logManager.Message.WriteLine("{0} SessionId: {1}, {2}.{3}:{4}, Cache:{5}, InvokeSeconds:{6},Seconds:{7}",
                                              DateTime.Now, session.Id, serverName, commandName, result ? "Success" : "Failure", cacheType, invokeSeconds, seconds);
        }
Esempio n. 4
0
 /// <summary>
 /// 达到空闲时间
 /// </summary>
 /// <param name="session"></param>
 public void LeisureTimeout(ServerSession session)
 {
     this.logManager.Message.WriteLine("{0} LeisureTimeout, SessionId: {1}", DateTime.Now, session.Id);
 }
Esempio n. 5
0
 /// <summary>
 /// 客户端关闭
 /// </summary>
 /// <param name="session"></param>
 public void SessionClose(ServerSession session)
 {
     this.logManager.Message.WriteLine("{0} SessionClose, SessionId: {1}", DateTime.Now, session.Id);
 }