logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

ntp_time - Tcl Time Service Client

Authors

       Pat Thoyts

Bugs, Ideas, Feedback

       This  document,  and  the package it describes, will undoubtedly contain bugs and other problems.  Please
       report such in the category ntp of the TcllibTrackers  [http://core.tcl.tk/tcllib/reportlist].   Please
       also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unifieddiffs, i.e the output of diff-u.

       Note  further  that  attachments  are strongly preferred over inlined patches. Attachments can be made by
       going to the Edit form of the ticket immediately after its creation, and then using the left-most  button
       in the secondary navigation bar.

Category

       Networking

Commands

::time::gettime ?options? timeserver ?port?
              Get the time from timeserver. You may specify any of the options listed for the configure  command
              here.  This  command  returns  a token which must then be used with the remaining commands in this
              package. Once you have finished, you should use cleanup to release all resources. The default port
              is 37.

       ::time::getsntp ?options? timeserver ?port?
              Get the time from an SNTP server. This accepts  exactly  the  same  arguments  as  ::time::gettime
              except  that  the  default port is 123. The result is a token as per ::time::gettime and should be
              handled in the same way.

              Note that it is unlikely that any SNTP server will reply using tcp so you will require the  tcludp
              or  the  ceptcl package. If a suitable package can be loaded then the udp protocol will be used by
              default.

       ::time::configure ?options?
              Called with no arguments this command returns all the current configuration  options  and  values.
              Otherwise it should be called with pairs of option name and value.

              -protocolnumber
                     Set  the default network protocol. This defaults to udp if the tcludp package is available.
                     Otherwise it will use tcp.

              -portnumber
                     Set the default port to use. RFC 868 uses port 37, RFC 2030 uses port 123.

              -timeoutnumber
                     Set the default timeout value in milliseconds. The default is 10 seconds.

              -commandnumber
                     Set a command procedure to be run when a reply is received. The procedure  is  called  with
                     the time token appended to the argument list.

              -loglevelnumber
                     Set the logging level. The default is 'warning'.

       ::time::cgetname
              Get the current value for the named configuration option.

       ::time::unixtimetoken
              Format the returned time for the unix epoch. RFC 868 time defines time 0 as 1 Jan 1900, while unix
              time defines time 0 as 1 Jan 1970. This command converts the reply to unix time.

       ::time::statustoken
              Returns  the  status  flag.  For  a  successfully completed query this will be ok. May be error or
              timeout or eof.  See also ::time::error::time::errortoken
              Returns the error message provided for requests whose status is  error.   If  there  is  no  error
              message then an empty string is returned.

       ::time::resettoken?reason?
              Reset or cancel the query optionally specfying the reason to record for the error command.

       ::time::waittoken
              Wait for a query to complete and return the status upon completion.

       ::time::cleanuptoken
              Remove all state variables associated with the request.

              % set tok [::time::gettime ntp2a.mcc.ac.uk]
              % set t [::time::unixtime $tok]
              % ::time::cleanup $tok

              % set tok [::time::getsntp pool.ntp.org]
              % set t [::time::unixtime $tok]
              % ::time::cleanup $tok

              proc on_time {token} {
                 if {[time::status $token] eq "ok"} {
                    puts [clock format [time::unixtime $token]]
                 } else {
                    puts [time::error $token]
                 }
                 time::cleanup $token
              }
              time::getsntp -command on_time pool.ntp.org

Description

       This package implements a client for the RFC 868 TIME protocol (http://www.rfc-editor.org/rfc/rfc868.txt)
       and   also   a   minimal   client  for  the  RFC  2030  Simple  Network  Time  Protocol  (http://www.rfc-editor.org/rfc/rfc2030.txt).  RFC 868 returns the time in seconds since 1 January 1900 to either  tcp  or
       udp  clients. RFC 2030 also gives this time but also provides a fractional part which is not used in this
       client.

Keywords

       NTP, SNTP, rfc 2030, rfc 868, time

Name

       ntp_time - Tcl Time Service Client

See Also

       ntp

Synopsis

       package require Tcl8.59

       package require time?1.2.2?::time::gettime ?options? timeserver ?port?

       ::time::getsntp ?options? timeserver ?port?

       ::time::configure ?options?

       ::time::cgetname::time::unixtimetoken::time::statustoken::time::errortoken::time::resettoken?reason?::time::waittoken::time::cleanuptoken

________________________________________________________________________________________________________________

See Also