nine のサーバー時刻取得機能は、通信相手の時刻を得る機能である。
時刻を提供する側をサーバー、時刻を取得する側をクライアントとする。 サーバーとクライアントの時刻のずれや、時刻取得にかかる通信時間を補正し、関数呼び出し時のサーバーの時刻を計算して返す。
この機能は、時刻同期用のメッセージを交換することで実現されている。 サーバー側の処理は nine 内部で実装されているため、特にコードを記述する必要はない。 クライアント側では以降で説明するようにプログラミングが必要である。
サーバー時刻取得機能はメッセージ層の機能であり、ストリーム通信では使用できない。 機能は MessageServer クラスの関数として提供される。メッセージ通信では MessageServer 具象クラス実装するので、そのインスタンスを用いれば良い。
MessageServer の enableServerTime() を呼ぶことで、サーバー時刻取得機能を有効にする。
bool MessageServer::enableServerTime(int id, uint32_t period, double max_doffset, double min_step)
enableServerTime() を行えば、後はいつでもサーバー時刻を取得できる。
UnixTime getServerTime(int id);
id はサーバーと通信しているコミュニケータID である。戻り値の UnixTime は、nine の提供する時刻クラスで、1970年1月1日からの経過時間を表す。