using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Net; using System.Threading.Tasks; namespace ZeroLevel.Services.Serialization { public interface IBinaryWriter : IDisposable { void WriteBoolean(bool val); void WriteChar(char val); void WriteByte(byte val); void WriteBytes(byte[] val); void WriteShort(short number); void WriteUShort(ushort number); void WriteDouble(double val); void WriteFloat(float val); void WriteInt32(Int32 number); void WriteUInt32(UInt32 number); void WriteLong(Int64 number); void WriteULong(UInt64 number); void WriteString(string line); void WriteGuid(Guid guid); void WriteDateTime(DateTime? datetime); void WriteDecimal(Decimal number); void WriteTimeSpan(TimeSpan period); void WriteIP(IPAddress ip); void WriteIPEndpoint(IPEndPoint endpoint); #region Extensions #region Arrays void WriteArray(T[] array) where T : IBinarySerializable; void WriteArray(string[] array); void WriteArray(IPAddress[] array); void WriteArray(IPEndPoint[] array); void WriteArray(Guid[] array); void WriteArray(DateTime[] array); void WriteArray(DateTime?[] array); void WriteArray(UInt64[] array); void WriteArray(UInt32[] array); void WriteArray(char[] array); void WriteArray(short[] array); void WriteArray(ushort[] array); void WriteArray(Int64[] array); void WriteArray(Int32[] array); void WriteArray(float[] array); void WriteArray(Double[] array); void WriteArray(bool[] array); void WriteArray(byte[] array); void WriteArray(byte[][] array); void WriteArray(decimal[] array); void WriteArray(TimeSpan[] array); #endregion #region Collections void WriteCollection(IEnumerable collection) where T : IBinarySerializable; void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); void WriteCollection(IEnumerable collection); #endregion void WriteDictionary(IDictionary collection); void WriteDictionary(ConcurrentDictionary collection); void Write(T item) where T : IBinarySerializable; void WriteCompatible(T item); #endregion Extensions Stream Stream { get; } } public interface IAsyncBinaryWriter : IDisposable { Task WriteCharAsync(char val); Task WriteBytesAsync(byte[] val); Task WriteShortAsync(short number); Task WriteUShortAsync(ushort number); Task WriteDoubleAsync(double val); Task WriteFloatAsync(float val); Task WriteInt32Async(Int32 number); Task WriteUInt32Async(UInt32 number); Task WriteLongAsync(Int64 number); Task WriteULongAsync(UInt64 number); Task WriteStringAsync(string line); Task WriteGuidAsync(Guid guid); Task WriteDateTimeAsync(DateTime? datetime); Task WriteDecimalAsync(Decimal number); Task WriteTimeSpanAsync(TimeSpan period); Task WriteIPAsync(IPAddress ip); Task WriteIPEndpointAsync(IPEndPoint endpoint); #region Extensions #region Arrays Task WriteArrayAsync(T[] array) where T : IAsyncBinarySerializable; Task WriteArrayAsync(string[] array); Task WriteArrayAsync(IPAddress[] array); Task WriteArrayAsync(IPEndPoint[] array); Task WriteArrayAsync(Guid[] array); Task WriteArrayAsync(DateTime[] array); Task WriteArrayAsync(DateTime?[] array); Task WriteArrayAsync(UInt64[] array); Task WriteArrayAsync(UInt32[] array); Task WriteArrayAsync(char[] array); Task WriteArrayAsync(short[] array); Task WriteArrayAsync(ushort[] array); Task WriteArrayAsync(Int64[] array); Task WriteArrayAsync(Int32[] array); Task WriteArrayAsync(float[] array); Task WriteArrayAsync(Double[] array); Task WriteArrayAsync(bool[] array); Task WriteArrayAsync(byte[] array); Task WriteArrayAsync(byte[][] array); Task WriteArrayAsync(decimal[] array); Task WriteArrayAsync(TimeSpan[] array); #endregion #region Collections Task WriteCollectionAsync(IEnumerable collection) where T : IAsyncBinarySerializable; Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); Task WriteCollectionAsync(IEnumerable collection); #endregion Task WriteDictionaryAsync(IDictionary collection); Task WriteDictionaryAsync(ConcurrentDictionary collection); Task WriteAsync(T item) where T : IAsyncBinarySerializable; Task WriteCompatibleAsync(T item); #endregion Extensions Stream Stream { get; } } }