Ejemplo n.º 1
0
 public void SendBufferedOps()
 {
     if (write_ops != null)
     {
         while (write_ops.Count > 0)
         {
             var op = write_ops.Dequeue();
             if (op is ByteBuffer)
             {
                 SocketStream.Write((ByteBuffer)op);
             }
             else if (op is string)
             {
                 SendFileImpl((string)op);
                 return;
             }
             else if (op is Action)
             {
                 SocketStream.Write(SendCallback((Action)op));
             }
             else
             {
                 throw new InvalidOperationException();
             }
         }
     }
 }
Ejemplo n.º 2
0
 public void WriteReadModeThrows()
 {
     using (var s = new SocketStream(GetSocket(), RecordType.FCGIStdin, true))
     {
         byte[] buf = new byte[1];
         Assert.Throws <InvalidOperationException>(() => s.Write(buf, 0, 1));
     }
 }
Ejemplo n.º 3
0
        [Test] public void StringIsWrittenWithLengthPrefix()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketStream(testSocket);

            socketStream.Write("h\u2019llo", "{0}:");
            Assert.AreEqual(new byte[] { 55, 58, 104, 226, 128, 153, 108, 108, 111 }, testSocket.GetBytes());
        }
Ejemplo n.º 4
0
        [Test] public void SimpleStringIsWritten()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketStream(testSocket);

            socketStream.Write("hello");
            Assert.AreEqual(new byte[] { 104, 101, 108, 108, 111 }, testSocket.GetBytes());
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Writes a FTP response to a client
 /// </summary>
 /// <param name="response">The response to write to the client</param>
 internal void Write([NotNull] FtpResponse response)
 {
     if (!_closed)
     {
         Log?.Log(response);
         var data = Encoding.GetBytes($"{response}\r\n");
         SocketStream.Write(data, 0, data.Length);
         response.AfterWriteAction?.Invoke();
     }
 }
Ejemplo n.º 6
0
        public void SendFinalChunk(Action callback)
        {
            EnsureMetadata();

            if (!chunk_encode || final_chunk_sent)
            {
                return;
            }

            final_chunk_sent = true;

            SendChunk(0, true);
            SocketStream.Write(SendCallback(callback));
        }
Ejemplo n.º 7
0
 void SendFileData(string fileName)
 {
     if (SocketStream is ISendfileCapable)
     {
         ((ISendfileCapable)SocketStream).SendFile(fileName);
     }
     else
     {
         SocketStream.PauseWriting();
         var fs = HttpEntity.Context.OpenFile(fileName, FileAccess.Read, 64 * 1024);
         SocketStream.Write(new StreamCopySequencer(fs, SocketStream, true));
     }
     SocketStream.Write(SendCallback(SendBufferedOps));
 }
Ejemplo n.º 8
0
        private void QueueBuffer(ByteBuffer buffer)
        {
            if (chunk_encode)
            {
                SocketStream.Write(buffer);
                return;
            }

            if (write_ops == null)
            {
                write_ops = new Queue <object> ();
            }

            write_ops.Enqueue(buffer);
        }
Ejemplo n.º 9
0
 void SendFileData(string fileName)
 {
     if (SocketStream is ISendfileCapable)
     {
         ((ISendfileCapable)SocketStream).SendFile(fileName);
     }
     else
     {
         SocketStream.PauseWriting();
         var fs = Libev.LibEvLoop.IsWindows
                                 ? (IO.Stream)Manos.Managed.FileStream.OpenRead(fileName, 64 * 1024)
                                 : (IO.Stream)Manos.IO.Libev.FileStream.OpenRead(fileName, 64 * 1024);
         SocketStream.Write(new StreamCopySequencer(fs, SocketStream, true));
     }
     SocketStream.Write(SendCallback(SendBufferedOps));
 }
Ejemplo n.º 10
0
        void WriteMetadata()
        {
            if (AddHeaders)
            {
                if (chunk_encode)
                {
                    HttpEntity.Headers.SetNormalizedHeader("Transfer-Encoding", "chunked");
                }
                else
                {
                    HttpEntity.Headers.ContentLength = Length;
                }
            }

            StringBuilder builder = new StringBuilder();

            HttpEntity.WriteMetadata(builder);

            byte [] data = Encoding.ASCII.GetBytes(builder.ToString());

            metadata_written = true;

            SocketStream.Write(data);
        }
Ejemplo n.º 11
0
 public void Write(string message)
 {
     stream.Write(message, "{0:000000}:");
 }
Ejemplo n.º 12
0
 public Messenger(SocketModel socket)
 {
     this.socket = socket;
     stream      = new SocketStream(socket);
     stream.Write("Slim -- V0.3\n");
 }
Ejemplo n.º 13
0
 public void SendDocument(string document)
 {
     socketStream.Write(Protocol.FormatDocument(document));
 }