示例#1
0
        private void SocketArg_Completed(object sender, SocketAsyncEventArgs e)
        {
            lock (locker)
            {
                switch (e.LastOperation)
                {
                case SocketAsyncOperation.Receive:
                    //数据接收成功且不为0,则将收到数据写入缓存池,并触发接收完成事件
                    if (e.SocketError == SocketError.Success && e.BytesTransferred > 0)
                    {
                        bufferPool.EnCache(socketArg.Buffer, socketArg.BytesTransferred);

                        ///收到报文记录
                        byte[] logByte = new byte[socketArg.BytesTransferred];
                        Array.Copy(socketArg.Buffer, logByte, logByte.Length);
                        log.ByteSteamLog(ActionType.RECEIVE, logByte);

                        ReadComplete?.Invoke(this);
                    }
                    else
                    {
                        Clear();
                        if (_m_ConnectStatePool != null)
                        {
                            _m_ConnectStatePool.Return(this);
                        }
                    }
                    break;

                case SocketAsyncOperation.Send:
                    //数据发送成功且不为0,触发发送完成事件
                    if (e.SocketError == SocketError.Success && e.BytesTransferred > 0)
                    {
                        SendComplete?.Invoke(this);
                    }
                    else
                    {
                        Clear();
                        if (_m_ConnectStatePool != null)
                        {
                            _m_ConnectStatePool.Return(this);
                        }
                    }
                    break;

                default:
                    Clear();
                    if (_m_ConnectStatePool != null)
                    {
                        _m_ConnectStatePool.Return(this);
                    }
                    break;
                }
            }
        }
示例#2
0
 public void RaiseReadComplete(string content)
 {
     ReadComplete?.Invoke(this, content);
 }
示例#3
0
 private void ConnectState_ReadComplete(SaeaConnectState obj)
 {
     ReadComplete?.Invoke(obj);
 }
示例#4
0
 private void APMServer_ReadComplete(APMConnectState arg1, int arg2)
 {
     ReadComplete?.Invoke(arg1);
 }
示例#5
0
 private void OnReadComplete(ReadCompleteEventArgs e)
 {
     ReadComplete?.Invoke(this, e);
 }
示例#6
0
 public void MarkComplete()
 {
     ReadComplete?.Invoke(this, null);
 }