public void WriteTo(ref WritableBuffer buffer) { buffer.WriteBigEndian((ushort)Status); if (!string.IsNullOrEmpty(Description)) { buffer.WriteUtf8String(Description); } }
public void CopyTo(bool chunk, WritableBuffer buffer) { foreach (var header in _headers) { buffer.Write(_headersStartBytes); buffer.WriteUtf8String(header.Key); buffer.Write(_headersSeperatorBytes); buffer.WriteUtf8String(header.Value.ToString()); } if (chunk) { buffer.Write(_chunkedHeaderBytes); } buffer.Write(_serverHeaderBytes); var date = _dateHeaderValueManager.GetDateHeaderValues().Bytes; buffer.Write(date); buffer.Write(_headersEndBytes); }
private static void RunServerForNode() { UvThread uvThread = new UvThread(); var ip = IPAddress.Any; UvTcpListener listener = new UvTcpListener(uvThread, new IPEndPoint(ip, port)); listener.OnConnection(async connection => { Interlocked.Increment(ref connectionCounter); var input = connection.Input; var output = connection.Output; var flag = false; //Used for stop sending info to connected client. await Task.Factory.StartNew(async() => { //Wait for client disconnection. var result = await input.ReadAsync(); flag = true; }); while (!flag) { try { WritableBuffer oBuffer = output.Alloc(); oBuffer.WriteUtf8String(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss:ms")); await oBuffer.FlushAsync(); Interlocked.Increment(ref sendCounter); await Task.Delay(r.Next(0, 500)); } catch (Exception e) { break; } } }); listener.Start(); var pid = System.Diagnostics.Process.GetCurrentProcess().Id; Console.WriteLine($"Listening on {ip} on port {port} / PID {pid}"); Console.ReadKey(); listener.Stop(); uvThread.Dispose(); }
void IMessageWriter.WritePayload(WritableBuffer buffer) => buffer.WriteUtf8String(value);