public static BooruPost FromReader(ReaderWriter Reader) { return(new BooruPost() { ID = Reader.ReadULong(), User = Reader.ReadString(), Private = Reader.ReadBool(), Source = Reader.ReadString(), Description = Reader.ReadString(), Rating = Reader.ReadByte(), Width = Reader.ReadUInt(), Height = Reader.ReadUInt(), CreationDate = Helper.UnixTimeToDateTime(Reader.ReadUInt()), ViewCount = Reader.ReadULong(), EditCount = Reader.ReadULong(), Score = Reader.ReadLong(), ImageHash = Reader.ReadBytes() }); }
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()); } } }
/* * public void ToWriter(BinaryWriter Writer, Action<float> ProgressCallback) * { * Writer.Write(Bytes.Length); * if (ProgressCallback != null) * { * int chunkSize = 1024 * 5; * int chunkCount = Bytes.Length / chunkSize; * for (int i = 0; i < chunkCount; i++) * { * Writer.Write(Bytes, i * chunkSize, chunkSize); * ProgressCallback(i * (float)chunkSize / Bytes.Length); * } * Writer.Write(Bytes, chunkCount * chunkSize, Bytes.Length % chunkSize); * ProgressCallback(1f); * } * else Writer.Write(Bytes); * } */ public static BooruImage FromReader(ReaderWriter Reader) { return(BooruImage.FromBytes(Reader.ReadBytes())); }