public virtual bool Write(WireMessage[] messages, bool flush = true) { ThrowIfDisposed(); var conn = _connnection; if (conn == null) { return(false); } var socket = conn.Connection; if (!socket.IsConnected()) { return(false); } using (var stream = new ChunkedStream()) { if (!Write(stream, messages)) { return(false); } var buffer = ByteArrayCache.Default.Acquire(); try { var bufferLen = buffer.Length; using (var reader = stream.NewReader(0)) { int readLen; while ((readLen = reader.Read(buffer, 0, bufferLen)) > 0) { Send(socket, buffer, readLen); } } } finally { ByteArrayCache.Default.Release(buffer); } } return(true); }