public void EndRequest(ushort requestID, int appStatus, ProtocolStatus protocolStatus) { var body = new EndRequestBody(appStatus, protocolStatus); try { if (IsConnected) { byte[] bodyData = body.GetData(); send_buffers.EnforceBodyLength(bodyData.Length); Array.Copy(bodyData, 0, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyData.Length); var record = new Record(1, RecordType.EndRequest, requestID, send_buffers, bodyData.Length); record.Send(socket); } } catch (System.Net.Sockets.SocketException) { } RemoveRequest(requestID); lock (connection_teardown_lock) { if (requests.Count == 0 && (!keep_alive || stop)) { CloseSocket(); if (!stop) { server.EndConnection(this); } receive_buffers.Return(); send_buffers.Return(); } } }
public void SendRecord(RecordType type, ushort requestID, byte [] bodyData, int bodyIndex, int bodyLength) { if (IsConnected) { lock (send_lock) { try { send_buffers.EnforceBodyLength(bodyLength); Array.Copy(bodyData, bodyIndex, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyLength); var record = new Record(1, type, requestID, send_buffers, bodyLength); record.Send(socket); } catch (System.Net.Sockets.SocketException) { } } } }