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();
        }
Exemple #4
0
 void IMessageWriter.WritePayload(WritableBuffer buffer)
 => buffer.WriteUtf8String(value);