private string CreateXml(TimerInfoEventArgs timerInfo, DateTime now) { var sb = new StringBuilder(); sb.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); sb.AppendLine("<root>"); switch (timerInfo.Mode) { case ClockServerMode.Nameplate: sb.AppendLine(" <clock mode=\"Nameplate\" mins=\"0\" secs=\"0\" ms=\"0\" targetSecs=\"0\" />"); break; case ClockServerMode.TimeOfDay: // in this mode mins and secs hold the total offset time into the day int use24Hrs = timerInfo.Use24HrFormat ? 1 : 0; sb.AppendLine( $" <clock mode=\"TimeOfDay\" mins=\"{(now.Hour * 60) + now.Minute}\" secs=\"{now.Second}\" ms=\"{now.Millisecond}\" targetSecs=\"0\" use24Hr=\"{use24Hrs}\"/>"); break; case ClockServerMode.Timer: int countingUp = timerInfo.IsCountingUp ? 1 : 0; sb.AppendLine( $" <clock mode=\"Timer\" mins=\"{timerInfo.Mins}\" secs=\"{timerInfo.Secs}\" ms=\"{timerInfo.Millisecs}\" targetSecs=\"{timerInfo.TargetSecs}\" countUp=\"{countingUp}\"/>"); break; } sb.AppendLine("</root>"); return(sb.ToString()); }
private void HandleRequestForClockWebPageTimerData( HttpListenerRequest request, HttpListenerResponse response) { if (_optionsService.Options.IsWebClockEnabled) { _apiThrottler.CheckRateLimit(ApiRequestType.ClockData, request); var timerInfo = new TimerInfoEventArgs(); OnRequestForTimerDataEvent(timerInfo); WebPageController.HandleRequestForTimerData(response, timerInfo, _dateTimeService.Now()); } }
public void HandleRequestForTimerData(HttpListenerResponse response, TimerInfoEventArgs timerInfo) { response.ContentType = "text/xml"; response.ContentEncoding = Encoding.UTF8; string responseString = CreateXml(timerInfo); byte[] buffer = Encoding.UTF8.GetBytes(responseString); response.ContentLength64 = buffer.Length; using (System.IO.Stream output = response.OutputStream) { output.Write(buffer, 0, buffer.Length); } }
private void OnRequestForTimerDataEvent(TimerInfoEventArgs timerInfo) { RequestForTimerDataEvent?.Invoke(this, timerInfo); }