public bool Receive(out Message.Base message) { uint read = 0; uint size = 0; message = null; if (stream != null && parent != null) { if (ReceiveData(stream, headerBuffer, headerSize)) { message = Pattern.Factory <Message.Base, byte> .CreateInstance(headerBuffer[0]); size = new Converter32(headerBuffer[1], headerBuffer[2], headerBuffer[3], headerBuffer[4]); Binary.Buffer buffer = parent.Serializer.GetBuffer(size); if (ReceiveData(stream, buffer.Data, size)) { read = parent.Serializer.FromBytesOverwrite(buffer, 0, message); } } } return(message != null && read == size); }
public void Send(Message.Base message) { if (stream != null && parent != null) { Binary.Buffer buffer = parent.Serializer.GetBuffer(256); uint written = parent.Serializer.ToBytes(ref buffer, 0, message); Converter32 converter = new Converter32(written); stream.WriteByte(Pattern.Factory <Message.Base, byte> .Get(message.GetType())); stream.WriteByte(converter.Byte1); stream.WriteByte(converter.Byte2); stream.WriteByte(converter.Byte3); stream.WriteByte(converter.Byte4); stream.Write(buffer.Data, 0, (int)written); } }