public AsyncSocketSession(Socket client, SocketAsyncEventArgsProxy socketAsyncProxy, bool isReset) : base(client) { m_AsyncSender = new AsyncSocketSender(client); SocketAsyncProxy = socketAsyncProxy; m_IsReset = isReset; }
public AsyncSocketSession(Socket client, SocketAsyncEventArgsProxy socketAsyncProxy, bool isReset) : base(client) { SocketAsyncProxy = socketAsyncProxy; m_OrigOffset = socketAsyncProxy.SocketEventArgs.Offset; m_IsReset = isReset; }
/// <summary> /// Add a SocketAsyncEventArg instance to the pool /// </summary> /// <param name="item">The SocketAsyncEventArgs instance to add to the pool</param> public void Push(SocketAsyncEventArgsProxy item) { if (item == null) { throw new ArgumentNullException("Items added to a SocketAsyncEventArgsPool cannot be null"); } lock (m_pool) { item.Socket = null; m_pool.Push(item); } }
public AsyncStreamSocketSession(Socket client, SslProtocols security, SocketAsyncEventArgsProxy socketAsyncProxy, bool isReset) : base(client) { SecureProtocol = security; SocketAsyncProxy = socketAsyncProxy; var e = socketAsyncProxy.SocketEventArgs; m_ReadBuffer = e.Buffer; m_Offset = e.Offset; m_Length = e.Count; m_IsReset = isReset; }
void AceptNewClient(SocketAsyncEventArgs e) { if (e.SocketError != SocketError.Success) { m_MaxConnectionSemaphore.Release(); m_TcpClientConnected.Set(); return; } var client = e.AcceptSocket; m_TcpClientConnected.Set(); var session = RegisterSession(client, new AsyncSocketSession <TAppSession, TCommandInfo>(client, Protocol.CreateCommandReader(AppServer))); if (session != null) { //Get the socket for the accepted client connection and put it into the //ReadEventArg object user token //////SocketAsyncEventArgsProxy socketEventArgsProxy; //////if (m_ReadWritePool.TryPop(out socketEventArgsProxy)) //////{ ////// session.SocketAsyncProxy = socketEventArgsProxy; ////// session.Closed += new EventHandler<SocketSessionClosedEventArgs>(session_Closed); ////// session.Start(); ////// return; //////} SocketAsyncEventArgsProxy socketEventArgsProxy = m_ReadWritePool.Pop().Value; session.SocketAsyncProxy = socketEventArgsProxy; session.Closed += new EventHandler <SocketSessionClosedEventArgs>(session_Closed); session.Start(); return; AppServer.Logger.LogError("There is no enough buffer block to arrange to new accepted client!"); } Async.Run(() => client.SafeCloseClientSocket(AppServer.Logger)); ////////SmartThreadPool smartThreadPool = new SmartThreadPool(); ////////IWorkItemResult wir1 = smartThreadPool.QueueWorkItem(() => { //////// client.SafeCloseClientSocket(AppServer.Logger); ////////}); ////////bool success = SmartThreadPool.WaitAll(new IWorkItemResult[] { wir1 }); //////////if (success) result1 = (int)wir1.Result; ////////smartThreadPool.Shutdown(); m_MaxConnectionSemaphore.Release(); }
void AceptNewClient(SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success) { //Get the socket for the accepted client connection and put it into the //ReadEventArg object user token SocketAsyncEventArgsProxy socketEventArgsProxy = m_ReadWritePool.Pop(); socketEventArgsProxy.Socket = e.AcceptSocket; TSocketSession session = RegisterSession(e.AcceptSocket); session.SocketAsyncProxy = socketEventArgsProxy; session.Closed += new EventHandler <SocketSessionClosedEventArgs>(session_Closed); m_TcpClientConnected.Set(); session.Start(); } else { m_TcpClientConnected.Set(); } }
public AsyncSocketSession(Socket client, SocketAsyncEventArgsProxy socketAsyncProxy) : this(client, socketAsyncProxy, false) { }
public AsyncStreamSocketSession(Socket client, SslProtocols security, SocketAsyncEventArgsProxy socketAsyncProxy) : this(client, security, socketAsyncProxy, false) { }