// Called when the heartbeat server responds. static void ResponseCallback([NotNull] IAsyncResult result) { if (Server.IsShuttingDown) { return; } HeartbeatRequestState state = (HeartbeatRequestState)result.AsyncState; try { string responseText; using (HttpWebResponse response = (HttpWebResponse)state.Request.EndGetResponse(result)) { // ReSharper disable AssignNullToNotNullAttribute using (StreamReader responseReader = new StreamReader(response.GetResponseStream())) { // ReSharper restore AssignNullToNotNullAttribute responseText = responseReader.ReadToEnd(); } RaiseHeartbeatSentEvent(state.Data, response, responseText); } // try parse response as server Url, if needed string replyString = responseText.Trim(); ParseHeartbeatResponse(replyString); } catch (Exception ex) { LogHeartbeatError(state, ex); heartBeatRequest.ServicePoint.CloseConnectionGroup(null); } }
// 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)) { // ReSharper disable AssignNullToNotNullAttribute using (StreamReader responseReader = new StreamReader(response.GetResponseStream())) { // ReSharper restore AssignNullToNotNullAttribute 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; RaiseUriChangedEvent(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); } } }
static void SendMinecraftNetBeat() { HeartbeatData data = new HeartbeatData( MinecraftNetUri ); if( !RaiseHeartbeatSendingEvent( data, MinecraftNetUri, true ) ) { return; } minecraftNetRequest = CreateRequest( data.CreateUri() ); var state = new HeartbeatRequestState( minecraftNetRequest, data ); minecraftNetRequest.BeginGetResponse( ResponseCallback, state ); }
static void SendMinecraftNetBeat() { HeartbeatData data = new HeartbeatData( MinecraftNetUri ); if( !RaiseHeartbeatSendingEvent( data, MinecraftNetUri, true ) ) { return; } HttpWebRequest request = CreateRequest( data.CreateUri() ); var state = new HeartbeatRequestState( request, data, true ); request.BeginGetResponse( ResponseCallback, state ); }
static void SendClassiCubeBeat() { HeartbeatData data = new HeartbeatData(ClassiCubeNetUri); if (!RaiseHeartbeatSendingEvent(data, ClassiCubeNetUri, true)) { return; } minecraftNetRequest = CreateRequest(data.CreateUri(Salt2)); var state = new HeartbeatRequestState(minecraftNetRequest, data, true); minecraftNetRequest.BeginGetResponse(ResponseCallback, state); }
static void SendMinecraftNetBeat() { HeartbeatData data = new HeartbeatData(HeartbeatServerUrl); if (!RaiseHeartbeatSendingEvent(data, HeartbeatServerUrl)) { return; } minecraftNetRequest = CreateRequest(data.CreateUri()); var state = new HeartbeatRequestState(minecraftNetRequest, data); minecraftNetRequest.BeginGetResponse(ResponseCallback, state); }
static void SendWoMDirectBeat() { HeartbeatData data = new HeartbeatData( WoMDirectUri ); // we dont want WoM redirecting back to minecraft.net data.CustomData["noforward"] = "1"; if( !RaiseHeartbeatSendingEvent( data, WoMDirectUri, false ) ) { return; } HttpWebRequest request = CreateRequest( data.CreateUri() ); var state = new HeartbeatRequestState( request, data, false ); request.BeginGetResponse( ResponseCallback, state ); }
static void SendHeartBeat() { HeartbeatData data = new HeartbeatData(HeartbeatServerUrl); if (!RaiseHeartbeatSendingEvent(data, HeartbeatServerUrl)) { return; } try { heartBeatRequest = CreateRequest(data.CreateUri()); } catch (Exception ex) { Logger.Log(LogType.Debug, ex.ToString()); return; } var state = new HeartbeatRequestState(heartBeatRequest, data); heartBeatRequest.BeginGetResponse(ResponseCallback, state); }
static void SendWoMDirectBeat() { HeartbeatData data = new HeartbeatData(WoMDirectUri); // we dont want WoM redirecting back to minecraft.net data.CustomData["noforward"] = "1"; // wom description and flags data.CustomData["desc"] = ConfigKey.WoMDirectDescription.GetString(); data.CustomData["flags"] = ConfigKey.WoMDirectFlags.GetString(); if (!RaiseHeartbeatSendingEvent(data, WoMDirectUri, false)) { return; } womDirectRequest = CreateRequest(data.CreateUri()); var state = new HeartbeatRequestState(womDirectRequest, data, false); womDirectRequest.BeginGetResponse(ResponseCallback, state); }
static void LogHeartbeatError(HeartbeatRequestState state, Exception ex) { if (ex is WebException || ex is IOException) { string host = state.Request.RequestUri.Host; Logger.Log(LogType.Warning, "Heartbeat: {0} is probably down ({1})", host, ex.Message); // avoid leaking resources in case of error try { WebException webEx = ex as WebException; if (webEx != null && webEx.Response != null) { webEx.Response.Close(); } } catch { } } else { Logger.Log(LogType.Error, "Heartbeat: {0}", ex); } }
static void SendWoMDirectBeat() { HeartbeatData data = new HeartbeatData( WoMDirectUri ); // we dont want WoM redirecting back to minecraft.net data.CustomData["noforward"] = "1"; // wom description and flags data.CustomData["desc"] = ConfigKey.WoMDirectDescription.GetString(); data.CustomData["flags"] = ConfigKey.WoMDirectFlags.GetString(); if( !RaiseHeartbeatSendingEvent( data, WoMDirectUri, false ) ) { return; } womDirectRequest = CreateRequest( data.CreateUri() ); var state = new HeartbeatRequestState( womDirectRequest, data, false ); womDirectRequest.BeginGetResponse( ResponseCallback, state ); }
static void SendWoMDirectBeat() { HeartbeatData data = new HeartbeatData( WoMDirectUri ); // we dont want WoM redirecting back to minecraft.net data.CustomData["noforward"] = "1"; if( !RaiseHeartbeatSendingEvent( data, WoMDirectUri, false ) ) { return; } womDirectRequest = CreateRequest( data.CreateUri() ); var state = new HeartbeatRequestState( womDirectRequest, data, false ); womDirectRequest.BeginGetResponse( ResponseCallback, state ); }
static void SendHeartBeat() { HeartbeatData data = new HeartbeatData(HeartbeatServerUrl); if (!RaiseHeartbeatSendingEvent(data, HeartbeatServerUrl)) { return; } try { heartBeatRequest = CreateRequest(data.CreateUri()); } catch (Exception UriFormatException) { Logger.Log(LogType.Debug, UriFormatException.ToString()); return; } var state = new HeartbeatRequestState(heartBeatRequest, data); heartBeatRequest.BeginGetResponse(ResponseCallback, state); }