コード例 #1
0
        private Emitter MetReq(RTMethodRequest methodRequest)
        {
            Emitter emitter = connectionManager.Socket.Emit("MET_REQ", WeborbSerializationHelper.Serialize(methodRequest.ToArgs()));

            Log.log(Backendless.BACKENDLESSLOG, "metReq called");
            return(emitter);
        }
コード例 #2
0
        private Emitter SubOff(String subscriptionId)
        {
            Emitter emitter = connectionManager.Socket.Emit("SUB_OFF", WeborbSerializationHelper.Serialize(subscriptionId));

            Log.log(Backendless.BACKENDLESSLOG, "subOff called");
            return(emitter);
        }
コード例 #3
0
        private Emitter SubOn(RTSubscription subscription)
        {
            Emitter emitter = connectionManager.Socket.Emit("SUB_ON", WeborbSerializationHelper.Serialize(subscription.ToArgs()));

            Log.log(Backendless.BACKENDLESSLOG, "subOn called");
            return(emitter);
        }
コード例 #4
0
        public void AddMessageListener <T>(string selector, MessageReceived <T> callback)
        {
            IRTCallback rtCallback = new RTCallback <T>((Delegate)callback, result =>
            {
                try
                {
                    IAdaptingType message;

                    if (!typeof(T).Equals(typeof(Message)))
                    {
                        message = WeborbSerializationHelper.AsAdaptingType(result, "message");
                    }
                    else
                    {
                        message = result;
                    }

                    T adaptedResponse = (T)message.adapt(typeof(T));

                    callback(adaptedResponse);
                }
                catch (System.Exception ex)
                {
                    ErrorHandler?.Invoke(RTErrorType.MESSAGELISTENER, new Exception.BackendlessFault(ex));
                }
            }, fault =>
            {
                ErrorHandler?.Invoke(RTErrorType.MESSAGELISTENER, fault);
            });

            AddMessageListener(selector, rtCallback);
        }
コード例 #5
0
        public void AddCommandListener <TR>(CommandReceived <TR> callback, IChannel channel)
        {
            IRTCallback rtCallback = new RTCallback <TR>(callback, result =>
            {
                try
                {
                    Command <TR> command = new Command <TR>();

                    UserInfo userInfo = new UserInfo();

                    command.UserInfo = userInfo;

                    userInfo.ConnectionId = WeborbSerializationHelper.AsString(result, "connectionId");
                    userInfo.UserId       = WeborbSerializationHelper.AsString(result, "userId");

                    command.Type = WeborbSerializationHelper.AsString(result, "type");

                    IAdaptingType data = WeborbSerializationHelper.AsAdaptingType(result, "data");

                    command.Data = (TR)data.adapt(typeof(TR));
                    callback(command);
                }
                catch (System.Exception e)
                {
                    channel.ErrorHandler?.Invoke(RTErrorType.COMMAND, new BackendlessFault(e));
                }
            }, fault =>
            {
                channel.ErrorHandler?.Invoke(RTErrorType.COMMAND, fault);
            });

            AddCommandListener(rtCallback);
        }
コード例 #6
0
        private IRTRequest HandleResult <T>(Object[] args, IDictionary <String, T> requestMap, String resultKey) where T : IRTRequest
        {
            if (args == null || args.Length < 1)
            {
                Log.log(Backendless.BACKENDLESSLOG, "subscription result is null or empty");
                return(null);
            }

            AnonymousObject result = (AnonymousObject)WeborbSerializationHelper.Deserialize((byte[])args[0]);

            String id = WeborbSerializationHelper.AsString(result, "id");

            Log.log(Backendless.BACKENDLESSLOG, String.Format("Got result for subscription {0}", id));

            IRTRequest request = requestMap[id];

            if (request == null)
            {
                Log.log(Backendless.BACKENDLESSLOG, String.Format("There is no handler for subscription {0}", id));
                return(null);
            }

            Object error = WeborbSerializationHelper.AsObject(result, "error");

            if (error != null)
            {
                Log.log(Backendless.BACKENDLESSLOG, String.Format("got error {0}", error));
                BackendlessFault fault = new BackendlessFault(error.ToString());
                request.Callback.errorHandler(fault);
                return(request);
            }

            IAdaptingType data = WeborbSerializationHelper.AsAdaptingType(result, resultKey);

            request.Callback.responseHandler(data);
            return(request);
        }