public void SendMessage(Message message, MessageReplyCallback replyCallback) { log.DebugFormat("Sending message \"{0}\"", message["message"]); if (replyCallback != null) { outstandingCallbacks.Add(new MessageCallbackInfo() { MessageName = message["message"].ToString(), Callback = replyCallback, ExpireTick = Environment.TickCount + 1000 * 10, Tag = message["tag"].ToString(), }); } var rawData = Encoding.UTF8.GetBytes(message.ToString(Formatting.None, null) + "\r\n"); // TODO: Handle the stream ending source.Write(rawData, 0, rawData.Length); log.Debug("...Done"); }