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(); } } } }
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)); } }
[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()); }
[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()); }
/// <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(); } }
public void SendFinalChunk(Action callback) { EnsureMetadata(); if (!chunk_encode || final_chunk_sent) { return; } final_chunk_sent = true; SendChunk(0, true); SocketStream.Write(SendCallback(callback)); }
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)); }
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); }
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)); }
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); }
public void Write(string message) { stream.Write(message, "{0:000000}:"); }
public Messenger(SocketModel socket) { this.socket = socket; stream = new SocketStream(socket); stream.Write("Slim -- V0.3\n"); }
public void SendDocument(string document) { socketStream.Write(Protocol.FormatDocument(document)); }