Ejemplo n.º 1
0
        public void Send(Stream stream, Message message)
        {
            if (!stream.CanWrite)
            {
                return;
            }

            if (message.ID == null)
            {
                throw new InvalidOperationException("Can not serialize a message without an ID!");
            }

            message.SentFromReceivingThread = NetworkThreadContext.IsSentFromReceivingThread();

            var writer = new BinaryWriter(stream);

            using (var memory = new MemoryStream())
            {
                Serializer.Serialize(memory, message);
                var length = (int)memory.Position;
                memory.Seek(0, SeekOrigin.Begin);
                var reader   = new BinaryReader(memory);
                var bytes    = reader.ReadBytes(length);
                var checksum = this.CalculateChecksum(length, bytes);


                writer.Write(length);
                writer.Write(checksum);
                writer.Write(bytes);
            }
        }