示例#1
0
 protected void WriteMessage(BinaryWriter writer, IDictionary <string, object> msg)
 {
     byte[] encoded = PipeMessage.Marshal(msg);
     writer.Write((int)encoded.Length);
     writer.Write(encoded);
     writer.Flush();
 }
示例#2
0
 protected void WriteMessage(BinaryWriter writer, dynamic msg)
 {
     byte[] encoded = PipeMessage.Marshal(msg);
     writer.Write((int)encoded.Length);
     writer.Write(encoded);
     writer.Flush();
 }
示例#3
0
        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);
        }