コード例 #1
0
 internal static void ResponseCallbackWebExceptionHandler <T> (CustomEventArgs <T> cea, RequestState <T> requestState,
                                                               WebException webEx,
                                                               PubnubErrorFilter.Level errorLevel)
 {
     if ((requestState != null) && (requestState.ChannelEntities != null || requestState.RespType != ResponseType.Time))
     {
         if (requestState.RespType.Equals(ResponseType.SubscribeV2) ||
             requestState.RespType.Equals(ResponseType.PresenceV2)
             )
         {
             if (webEx.Message.IndexOf("The request was aborted: The request was canceled") == -1 ||
                 webEx.Message.IndexOf("Machine suspend mode enabled. No request will be processed.") == -1)
             {
                 PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (webEx, requestState,
                                                                       PubnubErrorSeverity.Warn, errorLevel);
             }
         }
         else
         {
             PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (webEx, requestState,
                                                                   PubnubErrorSeverity.Warn, errorLevel);
         }
     }
     ProcessResponseCallbackWebExceptionHandler <T> (webEx, requestState, errorLevel);
 }
コード例 #2
0
ファイル: ExceptionHandlers.cs プロジェクト: laiqiqi/unity
 internal static void ResponseCallbackWebExceptionHandler <T> (CustomEventArgs <T> cea, RequestState <T> requestState,
                                                               WebException webEx, string channel, SafeDictionary <PubnubChannelCallbackKey, object> channelCallbacks,
                                                               PubnubErrorFilter.Level errorLevel)
 {
     if (requestState.Channels != null || requestState.RespType == ResponseType.Time)
     {
         if (requestState.RespType == ResponseType.Subscribe ||
             requestState.RespType == ResponseType.Presence)
         {
             if (webEx.Message.IndexOf("The request was aborted: The request was canceled") == -1 ||
                 webEx.Message.IndexOf("Machine suspend mode enabled. No request will be processed.") == -1)
             {
                 PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (webEx, requestState,
                                                                       PubnubErrorSeverity.Warn, channelCallbacks,
                                                                       true, errorLevel);
             }
         }
         else
         {
             PubnubCallbacks.CallErrorCallback <T> (webEx, requestState, channel,
                                                    PubnubErrorSeverity.Warn, requestState.ErrorCallback, errorLevel);
         }
     }
     ProcessResponseCallbackWebExceptionHandler <T> (webEx, requestState, channel, errorLevel);
 }
コード例 #3
0
        internal static void ResponseToConnectCallback <T> (List <object> result, ResponseType type, string[] channels,
                                                            Action <T> connectCallback, SafeDictionary <string, long> multiChannelSubscribe, SafeDictionary <PubnubChannelCallbackKey,
                                                                                                                                                             object> channelCallbacks, IJsonPluggableLibrary jsonPluggableLibrary)
        {
            //Check callback exists and make sure previous timetoken = 0
            if (channels != null && connectCallback != null &&
                channels.Length > 0)
            {
                IEnumerable <string> newChannels = from channel in multiChannelSubscribe
                                                   where channel.Value == 0
                                                   select channel.Key;
                foreach (string channel in newChannels)
                {
                    switch (type)
                    {
                    case ResponseType.Subscribe:
                        var connectResult = Helpers.CreateJsonResponse("Connected", channel, jsonPluggableLibrary);
                        PubnubCallbacks.SendConnectCallback <T> (jsonPluggableLibrary, connectResult, channel, type, channelCallbacks);

                        break;

                    case ResponseType.Presence:
                        var connectResult2 = Helpers.CreateJsonResponse("Presence Connected",
                                                                        channel.Replace(Utility.PresenceChannelSuffix, ""), jsonPluggableLibrary);
                        PubnubCallbacks.SendConnectCallback <T> (jsonPluggableLibrary, connectResult2, channel, type, channelCallbacks);

                        break;

                    default:
                        break;
                    }
                }
            }
        }
コード例 #4
0
ファイル: PubnubCallbacks.cs プロジェクト: laiqiqi/unity
        internal static void SendCallbacksBasedOnType <T>(SafeDictionary <PubnubChannelCallbackKey, object> channelCallbacks,
                                                          IJsonPluggableLibrary jsonPluggableLibrary, string currentChannel, List <object> itemMessage)
        {
            var callbackKey = PubnubCallbacks.GetPubnubChannelCallbackKey(currentChannel,
                                                                          (Utility.IsPresenceChannel(currentChannel)) ? ResponseType.Presence : ResponseType.Subscribe);

            #if (ENABLE_PUBNUB_LOGGING)
            LoggingMethod.WriteToLog(string.Format("DateTime {0}, currentChannel: {1}", DateTime.Now.ToString(),
                                                   currentChannel.ToString()), LoggingMethod.LevelInfo);
            #endif
            if (channelCallbacks.Count > 0 && channelCallbacks.ContainsKey(callbackKey))
            {
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, typeof(T): {1}", DateTime.Now.ToString(), typeof(T).ToString()), LoggingMethod.LevelInfo);
                #endif
                if ((typeof(T) == typeof(string) && channelCallbacks[callbackKey].GetType().Name.Contains("[System.String]")) ||
                    (typeof(T) == typeof(object) && channelCallbacks[callbackKey].GetType().Name.Contains("[System.Object]")))
                {
                    CallCallback <T>(callbackKey, channelCallbacks, jsonPluggableLibrary, itemMessage);
                }
                else if (channelCallbacks[callbackKey].GetType().FullName.Contains("[System.String"))
                {
                    CallCallbackKnownType <string>(callbackKey, channelCallbacks, jsonPluggableLibrary, itemMessage);
                }
                else if (channelCallbacks[callbackKey].GetType().FullName.Contains("[System.Object"))
                {
                    CallCallbackKnownType <object>(callbackKey, channelCallbacks, jsonPluggableLibrary, itemMessage);
                }
            }
        }
コード例 #5
0
        internal static void ResponseToUserCallbackForSubscribeSendCallbacks <T> (List <object> result, string cipherKey, SafeDictionary <PubnubChannelCallbackKey,
                                                                                                                                          object> channelCallbacks, IJsonPluggableLibrary jsonPluggableLibrary, object[] messages)
        {
            #if (ENABLE_PUBNUB_LOGGING)
            LoggingMethod.WriteToLog(string.Format("DateTime {0}, messageList typeOF: {1}", DateTime.Now.ToString(),
                                                   messages [0].GetType().ToString()), LoggingMethod.LevelInfo);
            #endif

            var messageList = messages [0] as object[];
            messageList = CreateMessageList(result, messageList);

            string[] messageChannels = messages [2].ToString().Split(',');

            #if (ENABLE_PUBNUB_LOGGING)
            LoggingMethod.WriteToLog(string.Format("DateTime {0}, (messageChannels: {1}", DateTime.Now.ToString(), messageChannels.ToString()), LoggingMethod.LevelInfo);
            #endif

            if (messageList != null && messageList.Length > 0)
            {
                for (int messageIndex = 0; messageIndex < messageList.Length; messageIndex++)
                {
                    string currentChannel = (messageChannels.Length == 1) ? (string)messageChannels[0] : (string)messageChannels[messageIndex];
                    var    itemMessage    = AddMessageToList(cipherKey, jsonPluggableLibrary, messages, messageIndex, currentChannel, messageList);

                    PubnubCallbacks.SendCallbacksBasedOnType <T>(channelCallbacks, jsonPluggableLibrary, currentChannel, itemMessage);
                }
            }
        }
コード例 #6
0
        internal static void CommonExceptionHandler <T> (RequestState <T> requestState, string message, bool requestTimeout,
                                                         PubnubErrorFilter.Level errorLevel
                                                         )
        {
            if (requestTimeout)
            {
                message = "Operation Timeout";
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, {1} CommonExceptionHandler response={2}", DateTime.Now.ToString(),
                                                       requestState.RespType.ToString(), message), LoggingMethod.LevelInfo);
                #endif

                PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (message, requestState,
                                                                      PubnubErrorSeverity.Critical, Helpers.GetTimeOutErrorCode(requestState.RespType), errorLevel);
            }
            else
            {
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, {1} CommonExceptionHandler response={2}", DateTime.Now.ToString(), requestState.RespType.ToString(), message), LoggingMethod.LevelInfo);
                #endif

                PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (message, requestState,
                                                                      PubnubErrorSeverity.Critical, PubnubErrorCode.None, errorLevel);
            }
        }
コード例 #7
0
        internal static void CheckSubscribedChannelsAndSendCallbacks <T> (string[] channels, bool isPresence,
                                                                          ResponseType type, int pubnubNetworkCheckRetries, SafeDictionary <PubnubChannelCallbackKey,
                                                                                                                                            object> channelCallbacks, PubnubErrorFilter.Level errorLevel)
        {
            if (channels != null && channels.Length > 0)
            {
                string          message     = string.Format("Unsubscribed after {0} failed retries", pubnubNetworkCheckRetries);;
                PubnubErrorCode pnErrorCode = PubnubErrorCode.UnsubscribedAfterMaxRetries;

                if (isPresence)
                {
                    message     = string.Format("Presence Unsubscribed after {0} failed retries", pubnubNetworkCheckRetries);
                    pnErrorCode = PubnubErrorCode.PresenceUnsubscribedAfterMaxRetries;
                }

                PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (message, null, channels,
                                                                      PubnubErrorSeverity.Critical, channelCallbacks,
                                                                      false, pnErrorCode, type, errorLevel);

                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, {1} Subscribe JSON network error response={2}",
                                                       DateTime.Now.ToString(), (isPresence)?"Presence":"", message), LoggingMethod.LevelInfo);
                #endif
            }
        }
コード例 #8
0
        internal static void ResponseCallbackErrorOrTimeoutHandler <T> (CustomEventArgs <T> cea, RequestState <T> requestState,
                                                                        PubnubErrorFilter.Level errorLevel)
        {
            WebException webEx = new WebException(cea.Message);

            if ((cea.Message.Contains("NameResolutionFailure") ||
                 cea.Message.Contains("ConnectFailure") ||
                 cea.Message.Contains("ServerProtocolViolation") ||
                 cea.Message.Contains("ProtocolError")
                 ))
            {
                webEx = new WebException("Network connnect error", WebExceptionStatus.ConnectFailure);

                PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (cea.Message, requestState,
                                                                      PubnubErrorSeverity.Warn, PubnubErrorCode.NoInternetRetryConnect, errorLevel);
            }
            else if (cea.IsTimeout || Utility.CheckRequestTimeoutMessageInError(cea))
            {
            }
            else if ((cea.Message.Contains("403")) ||
                     (cea.Message.Contains("java.io.FileNotFoundException")) ||
                     ((PubnubUnity.Version.Contains("UnityWeb")) && (cea.Message.Contains("Failed downloading"))))
            {
                CreateErrorCodeAndCallErrorCallback <T> (403, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("500"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (500, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("502"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (502, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("503"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (503, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("504"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (504, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("414"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (414, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("451"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (451, cea, requestState, errorLevel);
            }
            else if (cea.Message.Contains("481"))
            {
                CreateErrorCodeAndCallErrorCallback <T> (481, cea, requestState, errorLevel);
            }
            else
            {
                CreateErrorCodeAndCallErrorCallback <T> (400, cea, requestState, errorLevel);
            }
            ProcessResponseCallbackWebExceptionHandler <T> (webEx, requestState, errorLevel);
        }
コード例 #9
0
 internal static void CheckResultListAndCallCallback <T>(List <object> result, Action <T> userCallback,
                                                         IJsonPluggableLibrary jsonPluggableLibrary)
 {
     if (result != null && result.Count > 0)
     {
         PubnubCallbacks.GoToCallback <T> (result, userCallback, jsonPluggableLibrary);
     }
 }
コード例 #10
0
ファイル: ExceptionHandlers.cs プロジェクト: laiqiqi/unity
        internal static void ResponseCallbackErrorOrTimeoutHandler <T> (CustomEventArgs <T> cea, RequestState <T> requestState, string channel,
                                                                        PubnubErrorFilter.Level errorLevel, IJsonPluggableLibrary jsonPluggableLibrary)
        {
            WebException webEx = new WebException(cea.Message);

            if ((cea.Message.Contains("NameResolutionFailure") ||
                 cea.Message.Contains("ConnectFailure") ||
                 cea.Message.Contains("ServerProtocolViolation") ||
                 cea.Message.Contains("ProtocolError")
                 ))
            {
                webEx = new WebException("Network connnect error", WebExceptionStatus.ConnectFailure);

                PubnubCallbacks.CallErrorCallback <T> (cea.Message, null, channel,
                                                       PubnubErrorCode.NoInternetRetryConnect, PubnubErrorSeverity.Warn, requestState.ErrorCallback, errorLevel);
            }
            else if (cea.IsTimeout || Utility.CheckRequestTimeoutMessageInError(cea))
            {
            }
            else if ((cea.Message.Contains("403")) ||
                     (cea.Message.Contains("java.io.FileNotFoundException")) ||
                     ((PubnubUnity.Version.Contains("UnityWeb")) && (cea.Message.Contains("Failed downloading"))))
            {
                PubnubClientError error = new PubnubClientError(403, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else if (cea.Message.Contains("500"))
            {
                PubnubClientError error = new PubnubClientError(500, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else if (cea.Message.Contains("502"))
            {
                PubnubClientError error = new PubnubClientError(503, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else if (cea.Message.Contains("503"))
            {
                PubnubClientError error = new PubnubClientError(503, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else if (cea.Message.Contains("504"))
            {
                PubnubClientError error = new PubnubClientError(504, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else if (cea.Message.Contains("414"))
            {
                PubnubClientError error = new PubnubClientError(414, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            else
            {
                PubnubClientError error = new PubnubClientError(400, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server, requestState.Request, requestState.Response, cea.Message, channel);
                PubnubCallbacks.GoToCallback(error, requestState.ErrorCallback, jsonPluggableLibrary);
            }
            ProcessResponseCallbackWebExceptionHandler <T> (webEx, requestState, channel, errorLevel);
        }
コード例 #11
0
        internal static void CreateErrorCodeAndCallErrorCallback <T> (int statusCode, CustomEventArgs <T> cea, RequestState <T> requestState,
                                                                      PubnubErrorFilter.Level errorLevel)
        {
            PubnubClientError error = new PubnubClientError(statusCode, PubnubErrorSeverity.Critical, cea.Message, PubnubMessageSource.Server,
                                                            requestState.Request, requestState.Response, cea.Message, requestState.ChannelEntities);

            PubnubCallbacks.CallErrorCallback <T> (requestState.ErrorCallback, requestState.ChannelEntities,
                                                   error, errorLevel);
        }
コード例 #12
0
 internal static void PushNotificationExceptionHandler <T>(RequestState <T> requestState, bool requestTimeout,
                                                           PubnubErrorFilter.Level errorLevel)
 {
     if (requestTimeout)
     {
         string message = (requestTimeout) ? "Operation Timeout" : "Network connnect error";
         #if (ENABLE_PUBNUB_LOGGING)
         LoggingMethod.WriteToLog(string.Format("DateTime {0}, PushExceptionHandler response={1}", DateTime.Now.ToString(), message), LoggingMethod.LevelInfo);
         #endif
         PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (message, requestState,
                                                               PubnubErrorSeverity.Critical, PubnubErrorCode.PushNotificationTimeout, errorLevel);
     }
 }
コード例 #13
0
ファイル: PubnubCallbacks.cs プロジェクト: laiqiqi/unity
        internal static void SendConnectCallback <T> (IJsonPluggableLibrary jsonPluggableLibrary,
                                                      List <object> connectResult, string channel, ResponseType type, SafeDictionary <PubnubChannelCallbackKey, object> channelCallbacks)
        {
            var callbackKey = GetPubnubChannelCallbackKey(channel, type);

            if (channelCallbacks.Count > 0 && channelCallbacks.ContainsKey(callbackKey))
            {
                PubnubChannelCallback <T> currentPubnubCallback = channelCallbacks [callbackKey] as PubnubChannelCallback <T>;
                if (currentPubnubCallback != null && currentPubnubCallback.ConnectCallback != null)
                {
                    PubnubCallbacks.GoToCallback <T> (connectResult, currentPubnubCallback.ConnectCallback, jsonPluggableLibrary);
                }
            }
        }
コード例 #14
0
ファイル: PubnubCallbacks.cs プロジェクト: laiqiqi/unity
        internal static void FireErrorCallbacksForAllChannels <T> (string message, RequestState <T> requestState, string[] channels,
                                                                   PubnubErrorSeverity severity, SafeDictionary <PubnubChannelCallbackKey,
                                                                                                                 object> channelCallbacks, bool callbackObjectType, PubnubErrorCode errorType,
                                                                   ResponseType responseType, PubnubErrorFilter.Level errorLevel)
        {
            for (int index = 0; index < channels.Length; index++)
            {
                string            activeChannel = channels [index].ToString();
                PubnubClientError error         = Helpers.CreatePubnubClientError <T> (message, requestState,
                                                                                       activeChannel, errorType, severity);

                PubnubCallbacks.FireErrorCallback <T> (activeChannel, channelCallbacks,
                                                       callbackObjectType, responseType, errorLevel, error);
            }
        }
コード例 #15
0
        internal static object DecodeMessage(PubnubCrypto aes, object element, string[] channels,
                                             Action <PubnubClientError> errorCallback, IJsonPluggableLibrary jsonPluggableLibrary,
                                             PubnubErrorFilter.Level errorLevel)
        {
            string decryptMessage = "";

            try {
                decryptMessage = aes.Decrypt(element.ToString());
            }
            catch (Exception ex) {
                decryptMessage = "**DECRYPT ERROR**";
                string multiChannel = string.Join(",", channels);
                PubnubCallbacks.CallErrorCallback <object> (ex, null, multiChannel, PubnubErrorCode.None,
                                                            PubnubErrorSeverity.Critical, errorCallback, errorLevel);
            }
            object decodeMessage = (decryptMessage == "**DECRYPT ERROR**") ? decryptMessage : jsonPluggableLibrary.DeserializeToObject(decryptMessage);

            return(decodeMessage);
        }
コード例 #16
0
ファイル: ExceptionHandlers.cs プロジェクト: laiqiqi/unity
        internal static void PushNotificationExceptionHandler <T>(string[] channels, bool requestTimeout,
                                                                  Action <PubnubClientError> errorCallback, PubnubErrorFilter.Level errorLevel)
        {
            string channel = "";

            if (channels != null)
            {
                channel = string.Join(",", channels);
            }
            if (requestTimeout)
            {
                string message = (requestTimeout) ? "Operation Timeout" : "Network connnect error";
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, PushExceptionHandler response={1}", DateTime.Now.ToString(), message), LoggingMethod.LevelInfo);
                #endif
                PubnubCallbacks.CallErrorCallback <T>(message, null, channel,
                                                      PubnubErrorCode.PushNotificationTimeout, PubnubErrorSeverity.Critical, errorCallback, errorLevel);
            }
        }
コード例 #17
0
        internal static List <string> GetValidChannels <T>(ResponseType type, Action <PubnubClientError> errorCallback,
                                                           string[] rawChannels, SafeDictionary <string, long> multiChannelSubscribe, PubnubErrorFilter.Level errorLevel)
        {
            List <string> validChannels = new List <string>();

            if (rawChannels.Length > 0)
            {
                for (int index = 0; index < rawChannels.Length; index++)
                {
                    if (rawChannels[index].Trim().Length > 0)
                    {
                        string channelName = rawChannels[index].Trim();
                        if (type == ResponseType.PresenceUnsubscribe)
                        {
                            channelName = string.Format("{0}{1}", channelName, Utility.PresenceChannelSuffix);
                        }
                        if (!multiChannelSubscribe.ContainsKey(channelName))
                        {
                            string          message   = string.Format("{0}Channel Not Subscribed", (Utility.IsPresenceChannel(channelName)) ? "Presence " : "");
                            PubnubErrorCode errorType = (Utility.IsPresenceChannel(channelName)) ? PubnubErrorCode.NotPresenceSubscribed : PubnubErrorCode.NotSubscribed;
                            #if (ENABLE_PUBNUB_LOGGING)
                            LoggingMethod.WriteToLog(string.Format("DateTime {0}, channel={1} unsubscribe response={2}", DateTime.Now.ToString(), channelName, message), LoggingMethod.LevelInfo);
                            #endif
                            PubnubCallbacks.CallErrorCallback <T>(message, null, channelName, errorType, PubnubErrorSeverity.Info, errorCallback, errorLevel);
                        }
                        else
                        {
                            validChannels.Add(channelName);
                        }
                    }
                    else
                    {
                        string message = "Invalid Channel Name For Unsubscribe";
                        #if (ENABLE_PUBNUB_LOGGING)
                        LoggingMethod.WriteToLog(string.Format("DateTime {0}, channel={1} unsubscribe response={2}", DateTime.Now.ToString(), rawChannels[index], message), LoggingMethod.LevelInfo);
                        #endif
                        PubnubCallbacks.CallErrorCallback <T>(message, null, rawChannels[index].ToString(), PubnubErrorCode.InvalidChannel, PubnubErrorSeverity.Info, errorCallback, errorLevel);
                    }
                }
            }
            return(validChannels);
        }
コード例 #18
0
 internal static void ProcessWrapResultBasedOnResponseTypeException <T> (ResponseType type, string[] channels,
                                                                         Action <PubnubClientError> errorCallback, SafeDictionary <PubnubChannelCallbackKey, object> channelCallbacks,
                                                                         PubnubErrorFilter.Level errorLevel, Exception ex)
 {
     if (channels != null)
     {
         if (type == ResponseType.Subscribe || type == ResponseType.Presence)
         {
             PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (ex, channels, PubnubErrorSeverity.Critical,
                                                                   channelCallbacks, false, PubnubErrorCode.None, type, errorLevel);
         }
         else
         {
             if (errorCallback != null)
             {
                 PubnubCallbacks.CallErrorCallback <T> (ex, null, string.Join(",", channels), PubnubErrorCode.None,
                                                        PubnubErrorSeverity.Critical, errorCallback, errorLevel);
             }
         }
     }
 }
コード例 #19
0
 internal static void ResponseCallbackExceptionHandler <T> (CustomEventArgs <T> cea, RequestState <T> requestState,
                                                            Exception ex, PubnubErrorFilter.Level errorLevel)
 {
     #if (ENABLE_PUBNUB_LOGGING)
     LoggingMethod.WriteToLog(string.Format("DateTime {0}, Process Response Exception: = {1}", DateTime.Now.ToString(), ex.ToString()), LoggingMethod.LevelError);
     #endif
     if (requestState.ChannelEntities != null)
     {
         if (requestState.RespType.Equals(ResponseType.SubscribeV2) ||
             requestState.RespType.Equals(ResponseType.PresenceV2)
             )
         {
             PubnubCallbacks.FireErrorCallbacksForAllChannels(ex, requestState,
                                                              PubnubErrorSeverity.Warn, PubnubErrorCode.None, errorLevel);
         }
         else
         {
             PubnubCallbacks.FireErrorCallbacksForAllChannels <T> (ex, requestState,
                                                                   PubnubErrorSeverity.Critical, PubnubErrorCode.None, errorLevel);
         }
     }
     ProcessResponseCallbackExceptionHandler <T> (ex, requestState, errorLevel);
 }
コード例 #20
0
ファイル: ExceptionHandlers.cs プロジェクト: laiqiqi/unity
        internal static void CommonExceptionHandler <T> (string message, string channelName, bool requestTimeout,
                                                         Action <PubnubClientError> errorCallback, PubnubErrorFilter.Level errorLevel, ResponseType responseType)
        {
            if (requestTimeout)
            {
                message = "Operation Timeout";
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, {1} response={2}", DateTime.Now.ToString(), responseType.ToString(), message), LoggingMethod.LevelInfo);
                #endif

                PubnubCallbacks.CallErrorCallback <T> (message, null, channelName,
                                                       Helpers.GetTimeOutErrorCode(responseType), PubnubErrorSeverity.Critical, errorCallback, errorLevel);
            }
            else
            {
                #if (ENABLE_PUBNUB_LOGGING)
                LoggingMethod.WriteToLog(string.Format("DateTime {0}, {1} response={2}", DateTime.Now.ToString(), responseType.ToString(), message), LoggingMethod.LevelInfo);
                #endif

                PubnubCallbacks.CallErrorCallback <T> (message, null, channelName,
                                                       PubnubErrorCode.None, PubnubErrorSeverity.Critical, errorCallback, errorLevel);
            }
        }
コード例 #21
0
 internal static List <string> RemoveDuplicateChannelsAndCheckForAlreadySubscribedChannels <T>(ResponseType type,
                                                                                               string channel, Action <PubnubClientError> errorCallback, string[] rawChannels, List <string> validChannels,
                                                                                               bool networkConnection, SafeDictionary <string, long> multiChannelSubscribe, PubnubErrorFilter.Level errorLevel)
 {
     if (rawChannels.Length > 0 && networkConnection)
     {
         if (rawChannels.Length != rawChannels.Distinct().Count())
         {
             rawChannels = rawChannels.Distinct().ToArray();
             string message = "Detected and removed duplicate channels";
             PubnubCallbacks.CallErrorCallback <T>(message, null, channel, PubnubErrorCode.DuplicateChannel, PubnubErrorSeverity.Info, errorCallback, errorLevel);
         }
         for (int index = 0; index < rawChannels.Length; index++)
         {
             if (rawChannels[index].Trim().Length > 0)
             {
                 string channelName = rawChannels[index].Trim();
                 if (type == ResponseType.Presence)
                 {
                     channelName = string.Format("{0}{1}", channelName, Utility.PresenceChannelSuffix);
                 }
                 if (multiChannelSubscribe.ContainsKey(channelName))
                 {
                     string          message   = string.Format("{0}Already subscribed", (Utility.IsPresenceChannel(channelName)) ? "Presence " : "");
                     PubnubErrorCode errorType = (Utility.IsPresenceChannel(channelName)) ? PubnubErrorCode.AlreadyPresenceSubscribed : PubnubErrorCode.AlreadySubscribed;
                     PubnubCallbacks.CallErrorCallback <T>(message, null, channelName.Replace(Utility.PresenceChannelSuffix, ""), errorType, PubnubErrorSeverity.Info, errorCallback, errorLevel);
                 }
                 else
                 {
                     validChannels.Add(channelName);
                 }
             }
         }
     }
     return(validChannels);
 }