private async void ReceiveAsyncInternal(SocketReceiveTask task) { if (tlsStreams != null) //damn you sslstream { try { byte[] byt = new byte[1]; int ret = await tlsStreams.SslStream.ReadAsync(byt, 0, 1); if (ret == 0) { Disconnect(); return; } else { readStream.Write(byt, 0, 1); } } catch (Exception ex) { OnException(ex); return; } } task.Count = SocketManager.BufferSize;//bufferSize? task.TlsStreams = tlsStreams; if (IsConnected) { Socket.QueueReceive(task); } }
public void Dispose() { Close(); Formatter = null; sendHandler = null; recvTask.Completed -= ReceiveComplete; recvTask = null; }
public AresUdpSocket(IPacketFormatter formatter) { Formatter = formatter; Socket = SocketManager.CreateUdp(); Monitor = new IOMonitor(); recvTask = new SocketReceiveTask(8192); recvTask.Completed += ReceiveComplete; sendHandler = new EventHandler <IOTaskCompleteEventArgs <SocketSendTask> >(SendComplete); }
private void ReceiveAsyncInternal(SocketReceiveTask task) { State = ReceiveStatus.Header; task.Count = HeaderLength; task.SslStream = sslStream; if (IsConnected) { Socket.QueueReceive(task); } }
public void ReceiveAsync() { SocketReceiveTask task = new SocketReceiveTask(8192); task.Completed += ReceiveComplete; task.RemoteEndPoint = receiveEp; if (Socket != null) { Socket.QueueReceive(task); } }
public virtual void ReceiveAsync() { if (receiving) { throw new InvalidOperationException("Socket is already receiving."); } receiving = true; var task = new SocketReceiveTask(HeaderLength); task.Completed += ReceiveCompleted; ReceiveAsyncInternal(task); }
public static void QueueReceive(this Socket socket, SocketReceiveTask task) { task.Socket = socket ?? throw new ArgumentNullException("socket", "socket cannot be null"); task.Exception = null; IO.QueueRead(task); }