CSharpRTMP.Core.NetIO.TCPCarrier.OnEvent C# (CSharp) Method

OnEvent() public method

public OnEvent ( SocketAsyncEventArgs e ) : bool
e System.Net.Sockets.SocketAsyncEventArgs
return bool
        public override bool OnEvent(SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.Success)
            {
                switch (e.LastOperation)
                {
                    case SocketAsyncOperation.Receive:
                        if (e.BytesTransferred > 0)
                        {
                            Rx += e.BytesTransferred;
                        }
                        else
                        {
                            Logger.WARN("socket read data error");
                            return false;
                        }
                        //Logger.INFO("rec:{0}",Rx);
                        Protocol.InputBuffer.Published += (uint)e.BytesTransferred;
                        
                        Protocol.SignalInputData(e.BytesTransferred);

                        if (ReadEnabled)
                        {
                           SetReceiveBuffer(Protocol.InputBuffer,e);
                           if (!Socket.ReceiveAsync(e) && !OnEvent(e))
                                IOHandlerManager.EnqueueForDelete(this);
                        }
                        else
                        {
                            //ReadEnabled = false;
                            e.ReturnPool();
                        }
                        break;
                    //case SocketAsyncOperation.Send:
                    //    if (Protocol.OutputBuffer == null)
                    //    {
                    //        DisableWriteData();
                    //    }
                    //    else
                    //    {
                    //        if (e.BytesTransferred < 0)
                    //        {
                    //            Logger.FATAL("Unable to send data.{0}:{1} -> {2}:{3}", FarIP, FarPort, NearIP, NearPort);
                    //            IOHandlerManager.EnqueueForDelete(this);
                    //            return false;
                    //        }
                    //        Protocol.OutputBuffer.Ignore((uint)e.BytesTransferred);
                    //       // if(e.BytesTransferred==4096)Logger.Debug("{0}", e.BytesTransferred);
                    //        Tx += e.BytesTransferred;
                    //        if (Protocol.OutputBuffer != null && WriteEnabled)
                    //        {
                    //            SetSendBuffer( Protocol.OutputBuffer,e);
                    //            if (!OutboundFd.SendAsync(e) && !OnEvent(e)) IOHandlerManager.EnqueueForDelete(this);
                    //        }
                    //        else
                    //        {
                    //            DisableWriteData();
                    //            e.ReturnPool();
                    //        }
                    //    }
                    //    break;
                }
                return true;
            }
            Logger.WARN("{1}({0}):"+e.SocketError,Id,GetType().Name);
            return false;
        }