Ejemplo n.º 1
0
        public static extern void WriteTo(this IBinaryMessage message, BinaryWriter writer)
        {
            using (var buffer = new Uno.IO.MemoryStream())
                using (var bufferWriter = new BinaryWriter(buffer))
                {
                    message.WriteDataTo(bufferWriter);
                    var length = (int)buffer.Position;

                    writer.Write(message.Type);
                    writer.Write(length);
                    writer.Write(buffer.GetBuffer().SubArray(0, length));
                }
        }
Ejemplo n.º 2
0
        public static Optional <T> TryParse <T>(this IBinaryMessage message, string type, Func <BinaryReader, T> action)
        {
            if (type != message.Type)
            {
                return(Optional.None <T>());
            }

            using (var buffer = new Uno.IO.MemoryStream())
                using (var bufferWriter = new BinaryWriter(buffer))
                    using (var bufferReader = new BinaryReader(buffer))
                    {
                        message.WriteDataTo(bufferWriter);
                        buffer.Seek(0, Uno.IO.SeekOrigin.Begin);
                        return(action(bufferReader));
                    }

            throw new Exception("It has happened.");
        }