Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
ClockSynchronization.cs
1using System;
2using System.Collections.Generic;
3using System.Diagnostics;
4using System.Text;
5using System.Threading.Tasks;
7
9{
13 public static class ClockSynchronization
14 {
20 internal static Task RequestHandler(object Sender, IqEventArgs e)
21 {
23 StringBuilder Xml = new StringBuilder();
24
25 Xml.Append("<resp xmlns='");
26 Xml.Append(e.Query.NamespaceURI);
27
28 if (Now.Ticks.HasValue)
29 {
30 Xml.Append("' hf='");
31 Xml.Append(Now.Ticks.Value.ToString());
32 Xml.Append("' freq='");
33 Xml.Append(Stopwatch.Frequency.ToString());
34 }
35
36 Xml.Append("'>");
37 Encode(Now, Xml);
38 Xml.Append("</resp>");
39
40 e.IqResult(Xml.ToString(), e.To);
41
42 return Task.CompletedTask;
43 }
44
50 public static void Encode(DateTimeHF Timestamp, StringBuilder Xml)
51 {
52 Xml.Append(Timestamp.Year.ToString("D4"));
53 Xml.Append('-');
54 Xml.Append(Timestamp.Month.ToString("D2"));
55 Xml.Append('-');
56 Xml.Append(Timestamp.Day.ToString("D2"));
57 Xml.Append('T');
58 Xml.Append(Timestamp.Hour.ToString("D2"));
59 Xml.Append(':');
60 Xml.Append(Timestamp.Minute.ToString("D2"));
61 Xml.Append(':');
62 Xml.Append(Timestamp.Second.ToString("D2"));
63 Xml.Append('.');
64 Xml.Append(Timestamp.Millisecond.ToString("D3"));
65 Xml.Append(Timestamp.Microsecond.ToString("D3"));
66 Xml.Append(Timestamp.Nanosecond100.ToString("D1"));
67 Xml.Append('Z');
68 }
69
75 internal static Task ClockSourceReq(object Sender, IqEventArgs e)
76 {
77 XmppServer Server = XmppServerModule.Server;
78
79 if (!string.IsNullOrEmpty(Server.Domain))
80 {
81 StringBuilder Xml = new StringBuilder();
82
83 Xml.Append("<sourceResp xmlns='");
84 Xml.Append(e.Query.NamespaceURI);
85 Xml.Append("'>");
86 Xml.Append(Server.Domain);
87 Xml.Append("</sourceResp>");
88
89 e.IqResult(Xml.ToString(), e.To);
90 }
91 else
92 e.IqErrorItemNotFound(e.To, "Clock source not used.", "en");
93
94 return Task.CompletedTask;
95 }
96 }
97}
Event arguments for IQ queries.
Definition: IqEventArgs.cs:12
Task IqResult(string Xml, string From)
Returns a response to the current request.
Definition: IqEventArgs.cs:113
Task IqErrorItemNotFound(XmppAddress From, string ErrorText, string Language)
Returns a item-not-found error.
Definition: IqEventArgs.cs:201
XmlElement Query
Query element, if found, null otherwise.
Definition: IqEventArgs.cs:70
XmppAddress To
To address attribute
Definition: IqEventArgs.cs:88
CaseInsensitiveString Domain
Domain name.
Definition: XmppServer.cs:882
Service helping services synchronize their clocks over the Internet.
static void Encode(DateTimeHF Timestamp, StringBuilder Xml)
Encodes a high-frequency based Date and Time value to XML.
Date and Time value based on the intenal high-frequency timer.
Definition: DateTimeHF.cs:10
long? Ticks
High-resolution timer ticks.
Definition: DateTimeHF.cs:115
Service Module hosting the XMPP broker and its components.
static DateTimeHF Now
Current high-resolution date and time