TNTPClient

From Ultibo.org
Revision as of 06:04, 13 September 2022 by Ultibo (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Return to Unit Services


Description


To be documented

Class definitions



TNTPClient = class(TWinsock2UDPClient)

public
constructor Create;  
destructor Destroy; override;  
private
FLock:TMutexHandle;  
 
FPollInterval:LongWord; How often to poll the server (in seconds)
FPollTimeout:LongWord; How long before receive or send timeout occurs (in milliseconds)
FPollRetries:LongWord; How many times to retry a poll
 
FRetryTimeout:LongWord; How long to wait between poll retries (in milliseconds)
 
FUseClockOffset:Boolean; Use the calculated NTP clock offset to update the local time
FClockTolerance:LongWord; Milliseconds difference between local and remote to trigger a clock set
 
FInitialClockGet:Boolean; Has the time been obtained at least once
FInitialClockCount:LongWord; How many times have we tried to obtain the initial clock
FInitialClockRetry:Boolean; Should the client setup a worker thread to retry until the initial clock has been set (Default: True)
 
FTimerHandle:TTimerHandle; Handle for the NTP update timer
 
function AcquireLock:Boolean;  
function ReleaseLock:Boolean;  
 
procedure SetPollInterval(APollInterval:LongWord);  
procedure SetPollTimeout(APollTimeout:LongWord);  
procedure SetPollRetries(APollRetries:LongWord);  
 
procedure SetRetryTimeout(ARetryTimeout:LongWord);  
 
procedure SetUseClockOffset(AUseClockOffset:Boolean);  
procedure SetClockTolerance(AClockTolerance:LongWord);  
 
procedure SetInitialClockGet(AInitialClockGet:Boolean);  
procedure SetInitialClockCount(AInitialClockCount:LongWord);  
 
procedure SetTimerHandle(ATimerHandle:TTimerHandle);  
public
property PollInterval:LongWord read FPollInterval write SetPollInterval;  
property PollTimeout:LongWord read FPollTimeout write SetPollTimeout;  
property PollRetries:LongWord read FPollRetries write SetPollRetries;  
 
property RetryTimeout:LongWord read FRetryTimeout write SetRetryTimeout;  
 
property UseClockOffset:Boolean read FUseClockOffset write SetUseClockOffset;  
property ClockTolerance:LongWord read FClockTolerance write SetClockTolerance;  
 
property InitialClockGet:Boolean read FInitialClockGet write SetInitialClockGet;  
property InitialClockCount:LongWord read FInitialClockCount write SetInitialClockCount;  
property InitialClockRetry:Boolean read FInitialClockRetry write SetInitialClockRetry;  
 
property TimerHandle:TTimerHandle read FTimerHandle write SetTimerHandle;  
 
function GetTime:Int64;  
 
procedure IncrementInitialClockCount;  
 
function FormatTime(Time:Int64):String;  
function FormatOffset(Offset:Int64):String;  
 
function CalculateClockOffset(T1,T2,T3,T4:Int64):Int64;  
function CalculateRoundtripDelay(T1,T2,T3,T4:Int64):Int64;  


Function declarations



constructor TNTPClient.Create;
Description: To be documented
Note None documented


destructor TNTPClient.Destroy;
Description: To be documented
Note None documented


function TNTPClient.AcquireLock:Boolean;
Description: To be documented
Note None documented


function TNTPClient.ReleaseLock:Boolean;
Description: To be documented
Note None documented


procedure TNTPClient.SetPollInterval(APollInterval:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetPollTimeout(APollTimeout:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetPollRetries(APollRetries:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetRetryTimeout(ARetryTimeout:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetUseClockOffset(AUseClockOffset:Boolean);
Description: To be documented
Note None documented


procedure TNTPClient.SetClockTolerance(AClockTolerance:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetInitialClockGet(AInitialClockGet:Boolean);
Description: To be documented
Note None documented


procedure TNTPClient.SetInitialClockCount(AInitialClockCount:LongWord);
Description: To be documented
Note None documented


procedure TNTPClient.SetInitialClockRetry(AInitialClockRetry:Boolean);
Description: To be documented
Note None documented


procedure TNTPClient.SetTimerHandle(ATimerHandle:TTimerHandle);
Description: To be documented
Note None documented


function TNTPClient.GetTime:Int64;
Description: To be documented
Note None documented


procedure TNTPClient.IncrementInitialClockCount;
Description: To be documented
Note None documented


function TNTPClient.FormatTime(Time:Int64):String;
Description: To be documented
Note None documented


function TNTPClient.FormatOffset(Offset:Int64):String;
Description: To be documented
Note None documented


function TNTPClient.CalculateClockOffset(T1,T2,T3,T4:Int64):Int64;
Description: To be documented
Note T1 = Originate Timestamp (time request sent by client) T2 = Receive Timestamp (time request received by server) T3 = Transmit Timestamp (time reply sent by server) T4 = Destination Timestamp (time reply received by client)


function TNTPClient.CalculateRoundtripDelay(T1,T2,T3,T4:Int64):Int64;
Description: To be documented
Note T1 = Originate Timestamp (time request sent by client) T2 = Receive Timestamp (time request received by server) T3 = Transmit Timestamp (time reply sent by server) T4 = Destination Timestamp (time reply received by client)


Return to Unit Reference