protected void WriteMessage(BinaryWriter writer, IDictionary <string, object> msg) { byte[] encoded = PipeMessage.Marshal(msg); writer.Write((int)encoded.Length); writer.Write(encoded); writer.Flush(); }
protected void WriteMessage(BinaryWriter writer, dynamic msg) { byte[] encoded = PipeMessage.Marshal(msg); writer.Write((int)encoded.Length); writer.Write(encoded); writer.Flush(); }
protected bool DefaultMessageHandler(BinaryReader reader, BinaryWriter writer, Func <IDictionary <string, object>, IDictionary <string, object> > callback) { int len = reader.ReadInt32(); byte[] bytes = reader.ReadBytes(len); IDictionary <string, object> msg = PipeMessage.Demarshal(bytes); IDictionary <string, object> reply = callback(msg); if (reply != null) { WriteMessage(writer, reply); if (((IDictionary <String, Object>)reply).ContainsKey("LastMessage")) { ((IDictionary <String, Object>)reply).Remove("LastMessage"); // Don't marshal this property return(false); } } return(reply != null); }