Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        public void AddUserStatusListener(UserStatusChanged callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException("callback", "the callback argument cannot be null");
            }

            IRTCallback rtCallback = new RTCallback <UserStatusResponse>((Delegate)callback, result =>
            {
                try
                {
                    UserStatusResponse userStatusResponse = (UserStatusResponse)result.adapt(typeof(UserStatusResponse));
                    callback?.Invoke(userStatusResponse);
                }
                catch (System.Exception ex)
                {
                    ErrorHandler?.Invoke(RTErrorType.USERSTATUSLISTENER, new Exception.BackendlessFault(ex));
                }
            }, fault =>
            {
                ErrorHandler?.Invoke(RTErrorType.USERSTATUSLISTENER, fault);
            });

            AddUserListener(rtCallback);
        }
Exemplo n.º 3
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);
        }