コード例 #1
0
        private static void AddCallBack(int seq, CustomHandler.PcCallBack callBack)
        {
            if (callBack == null)
            {
                return;
            }

            lock (callbackMapLock)
            {
                if (!callbacks.ContainsKey(seq))
                {
                    callbacks.Add(seq, callBack);
                }
            }
        }
コード例 #2
0
        public static void Invoke(string name, string value, CustomHandler.PcCallBack callback)
        {
            if (functions.ContainsKey(name) || socket == null)
            {
                throw new Exception("Not Register Callback");
            }
            Command command = new Command();

            command.cmd    = Cmd.RPC_METHOD;
            command.socket = socket;
            RPCRequestBody rpcBody = new RPCRequestBody();

            rpcBody.name    = name;
            rpcBody.value   = value;
            rpcBody.seq     = ++seq;
            command.sendObj = rpcBody;
            AddCallBack(rpcBody.seq, callback);
            CommandDispatcher.SendCommand(command);
        }
コード例 #3
0
        public static void InvokeSeqCallBack(Command command)
        {
            RPCResponseBody rPCResponseBody = JsonParser.Deserialization <RPCResponseBody>(command);
            int             seq             = rPCResponseBody.seq;
            int             status          = rPCResponseBody.status;
            String          name            = rPCResponseBody.name;
            String          value           = rPCResponseBody.returnValue;

            if (status != 0)
            {
                Logger.w("RPC method call error,reponse = " + command.recvObj);
            }
            CustomHandler.PcCallBack pcCallBack = null;
            lock (callbackMapLock)
            {
                if (callbacks.ContainsKey(seq))
                {
                    pcCallBack = callbacks[seq];
                    callbacks.Remove(seq);
                }
            }

            if (pcCallBack == null)
            {
                Logger.w("RPC method can't find callback function, reponse = " + command.recvObj);
            }

            try
            {
                pcCallBack(status, value);
            }
            catch (System.Exception ex)
            {
                Logger.w(ex.Message, ex);
            }
        }