예제 #1
0
 public static void UriChangedPriority([NotNull] EventHandler <UriChangedEventArgs> callback, Priority priority)
 {
     if (callback == null)
     {
         throw new ArgumentNullException("callback");
     }
     UriChangedEvent.Add(callback, priority);
 }
예제 #2
0
        // Called when the heartbeat server responds.
        static void ResponseCallback(IAsyncResult result)
        {
            if (Server.IsShuttingDown)
            {
                return;
            }
            HeartbeatRequestState state = (HeartbeatRequestState)result.AsyncState;

            try {
                string responseText;
                using (HttpWebResponse response = (HttpWebResponse)state.Request.EndGetResponse(result)) {
                    using (StreamReader responseReader = new StreamReader(response.GetResponseStream())) {
                        responseText = responseReader.ReadToEnd();
                    }
                    RaiseHeartbeatSentEvent(state.Data, response, responseText);
                }

                // try parse response as server Uri, if needed
                if (state.GetServerUri)
                {
                    string replyString = responseText.Trim();
                    if (replyString.StartsWith("bad heartbeat", StringComparison.OrdinalIgnoreCase))
                    {
                        Logger.Log(LogType.Error, "Heartbeat: {0}", replyString);
                    }
                    else
                    {
                        try {
                            Uri newUri = new Uri(replyString);
                            Uri oldUri = Server.Uri;
                            if (newUri != oldUri)
                            {
                                Server.Uri = newUri;
                                UriChangedEvent.Raise(new UriChangedEventArgs(oldUri, newUri));
                            }
                        } catch (UriFormatException) {
                            Logger.Log(LogType.Error,
                                       "Heartbeat: Server replied with: {0}",
                                       replyString);
                        }
                    }
                }
            } catch (Exception ex) {
                if (ex is WebException || ex is IOException)
                {
                    Logger.Log(LogType.Warning,
                               "Heartbeat: {0} is probably down ({1})",
                               state.Request.RequestUri.Host,
                               ex.Message);
                }
                else
                {
                    Logger.Log(LogType.Error, "Heartbeat: {0}", ex);
                }
            }
        }
예제 #3
0
 private void wv_LoadCompleted(
     object sender,
     NavigationEventArgs e)
 {
     if (UriChangedEvent != null)
     {
         UriChangedEvent.Invoke(
             this, new AdnWebAuthViewEventArgs()
         {
             Uri = e.Uri
         });
     }
 }