public bool AddPublicCallbackHandler(string request, RequestProcessor.Callback callback)
        {
            if (!this.broadcastCallbacksHandlers_.ContainsKey(request))
            {
                this.broadcastCallbacksHandlers_.TryAdd(request, callback);
                return(true);
            }

            return(false);
        }
        private HasCallbackBeenRecieved AddCallback(JObject response, RequestProcessor.Callback callback)
        {
            HasCallbackBeenRecieved callbackRecieved = new HasCallbackBeenRecieved();

            callbackRecieved.ResponseState = requestProcessor_.AddPrivateCallbackHandler(response, (JObject o) =>
            {
                callback(o);
                callbackRecieved.SignalEvent.Set();
            });

            callbackRecieved.SetupAsyncSignal();

            return(callbackRecieved);
        }
        /// <summary>
        /// Sends json to the server
        /// </summary>
        /// <param name="obj">The Json object</param>
        /// <param name="callback">A callback function which will be called when a response is recived</param>
        /// <param name="broadcastCallback">if it's a broadcast callback it will return a HasCallbackBeenRecieved which will trigger when the broadcast is recived</param>
        /// <returns></returns>
        public HasCallbackBeenRecieved SendJson(JObject obj, RequestProcessor.Callback callback = null, bool broadcastCallback = false)
        {
            HasCallbackBeenRecieved state = new HasCallbackBeenRecieved();
            JObject o = (JObject)obj.DeepClone();

            if (client_.Connected)
            {
                o["signature"] = Guid.NewGuid().ToString();

                NetworkStream ns = client_.GetStream();
                if (broadcastCallback)
                {
                    state = AddBroadcastCallback(o);
                }
                else if (callback != null)
                {
                    state = AddCallback(o, callback);
                }
                byte[] bytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(o));
                ns.Write(bytes, 0, bytes.Length);
            }

            return(state);
        }
 public bool AddBroadcastCallbackHandler(string request, RequestProcessor.Callback callback)
 {
     return(requestProcessor_.AddPublicCallbackHandler(request, callback));
 }