/// <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(); } }
///// <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); }
///// <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); }
/// <summary> /// 达到空闲时间 /// </summary> /// <param name="session"></param> public void LeisureTimeout(ServerSession session) { this.logManager.Message.WriteLine("{0} LeisureTimeout, SessionId: {1}", DateTime.Now, session.Id); }
/// <summary> /// 客户端关闭 /// </summary> /// <param name="session"></param> public void SessionClose(ServerSession session) { this.logManager.Message.WriteLine("{0} SessionClose, SessionId: {1}", DateTime.Now, session.Id); }