private void NewClientAccepted(System.Net.Sockets.Socket client, SuperSocket.ISocketSession session) { var ass = session as SuperSocket.AsyncSocketSession; var tcpConn = mPool.AllocConnect(); lock (TcpConnects) { TcpConnects[tcpConn.IndexInPool] = tcpConn; } tcpConn.Session = ass; tcpConn.Host = this; ass.ExtObject = tcpConn; ass.SetReceiveHandler(arg => { unsafe { fixed(byte *ptr = &arg.Buffer[arg.Offset]) { tcpConn.OnReceiveData((IntPtr)ptr, arg.BytesTransferred); } } }); if (OnTcpConnected != null) { OnTcpConnected(tcpConn); } }
private void CloseClientConnect(SuperSocket.ISocketSession session) { var ass = session as SuperSocket.AsyncSocketSession; var conn = ass.ExtObject as TcpConnect; lock (TcpConnects) { TcpConnects.Remove(conn.IndexInPool); } if (OnTcpDisConnected != null) { OnTcpDisConnected(conn); } conn.Session = null; conn.Host = null; mPool.FreeConnect(conn); }