private void receiveDescriptor() { rcvdMode = receivingMode.receivingDescriptor; receivingOrder++; AsyncState asyncState = new AsyncState(receivingOrder, MESSAGE_DESCRIPTOR_LENGTH); try { clientSocket.BeginReceive(rcvdByteBuffer, 0, MESSAGE_DESCRIPTOR_LENGTH, 0, new AsyncCallback(ReadCallback), asyncState); } catch (SocketException e) { DebuggerIX.WriteLine(DebuggerTag.Net, role, "SocketException: " + e.Message); throw; } }
private void receiveMessage(int length) { rcvdMode = receivingMode.receivingMessage; receivingOrder++; // Reallocating if needed if (length < 1000000) { if (length > rcvdByteBuffer.Length) rcvdByteBuffer = new byte[length]; AsyncState asyncState = new AsyncState(receivingOrder, length); try { clientSocket.BeginReceive(rcvdByteBuffer, 0, length, 0, new AsyncCallback(ReadCallback), asyncState); } catch (SocketException se) { DebuggerIX.WriteLine(DebuggerTag.Net, role, "SocketException: " + se.Message); throw; } } else { throw new SocketException(); } }
/// <summary> /// called in locked area: sendAsyncCallbackLock /// </summary> private void ProcessSendingQueue() { Triple<int, int, byte[]> t = null; if (sendBuffer.Count > 0) { t = sendBuffer.Dequeue(); } if (t != null) { isSending = true; AsyncState asyncState = new AsyncState(t.First, t.Second); try { clientSocket.BeginSend(t.Third, 0, t.Second, SocketFlags.None, new AsyncCallback(SendAsyncCallback), asyncState); } catch (SocketException e) { DebuggerIX.WriteLine(DebuggerTag.Net, role, "ProcessSendingQueue, SocketException: " + e.Message); throw; } } else { isSending = false; allSentHandle.Set(); } }