コード例 #1
0
        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());
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 private void OnRequestForTimerDataEvent(TimerInfoEventArgs timerInfo)
 {
     RequestForTimerDataEvent?.Invoke(this, timerInfo);
 }