private static void Request(Stream str, RequestCode RQ, Action <ReaderWriter> ReqCB, Action <ReaderWriter> RespCB) { using (ReaderWriter rw = new ReaderWriter(str)) { rw.Write((ushort)RQ); using (MemoryStream ms = new MemoryStream()) { using (ReaderWriter req_rw = new ReaderWriter(ms)) ReqCB(req_rw); rw.Write(ms.ToArray(), true); } rw.Flush(); if (rw.ReadBool()) { using (MemoryStream ms = new MemoryStream(rw.ReadBytes())) using (ReaderWriter resp_rw = new ReaderWriter(ms)) RespCB(resp_rw); } else { throw new Exception(rw.ReadString()); } } }