static unsafe void ProcessSocket(RioBufferSegment s, ServeState state) { uint current = 0; var r = s.CurrentContentLength; var reqs = 0; if (r == 0) { state.reader.Dispose(); state.socket.Dispose(); return; } for (int i = 0; state.leftoverLength != 0 && i < 4 - state.leftoverLength; i++) { current += s.DataPointer[i]; current = current << 8; if (current == endOfRequest) { reqs++; } } state.leftoverLength = r % 4; var length = r - state.leftoverLength; byte *currentPtr = s.DataPointer + state.oldleftoverLength; var start = currentPtr; var end = currentPtr + length; for (; start <= end; start++) { if (*(uint *)start == endOfRequest) { reqs++; } } state.oldleftoverLength = state.leftoverLength; for (int i = r - state.leftoverLength; i < r; i++) { current += s.DataPointer[i]; current = current << 4; } state.socket.Send(reqz[reqs]); }
static unsafe void ProcessSocket(RioBufferSegment s, ServeState state) { uint current = 0; var r = s.CurrentContentLength; var reqs = 0; if (r == 0) { state.reader.Dispose(); state.socket.Dispose(); return; } for (int i = 0; state.leftoverLength != 0 && i < 4 - state.leftoverLength; i++) { current += s.DataPointer[i]; current = current << 8; if (current == endOfRequest) reqs++; } state.leftoverLength = r % 4; var length = r - state.leftoverLength; byte* currentPtr = s.DataPointer + state.oldleftoverLength; var start = currentPtr; var end = currentPtr + length; for (; start <= end; start++) { if (*(uint*)start == endOfRequest) reqs++; } state.oldleftoverLength = state.leftoverLength; for (int i = r - state.leftoverLength; i < r; i++) { current += s.DataPointer[i]; current = current << 4; } state.socket.Send(reqz[reqs]); }