summaryrefslogtreecommitdiff
path: root/TAO/tao/TimeBase.pidl
blob: 4e12365871b67d2722cc5d7c80899a677e330ce7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// -*- IDL -*-

/**
 *  @file TimeBase.pidl
 */

#ifndef TIME_BASE_PIDL
#define TIME_BASE_PIDL

#pragma prefix "omg.org"

/**
 * @brief COS Time Service basic types.
 *
 *
 * The standard CORBA Time Service defines a number of data structures
 * to manipulate and express time.
 * Over time these data structures have found their way into core
 * components of CORBA, such as CORBA Messaging, RT CORBA, etc.
 */
module TimeBase
{
  /// Time in TimeT is expressed in units of 100 nano seconds
  /**
   * In other words each TimeT is 10^-7 seconds.
   * When used for absolute time 0 is to October 15, 1582. Please read
   * the spec for further details.
   */
  typedef unsigned long long TimeT;

  /// To express an error estimate for time.
  typedef TimeT InaccuracyT;

  /// Minutes of displacement from the Greenwich time.
  typedef short TdfT;

  /**
   * @brief A timestamp in UTC time
   *
   * The inaccuracy is packed into inacclo & inacchi.
   * tdf holds the time displacement factor.
   *
   * There are a total of 16 octets in this struct.
   *
   * @todo What is exactly the range of time here?
   *       Is it [time-inacclo,time+inacchi]?
   */
  struct UtcT
  {
    /// The actual time
    TimeT time;

    /// The lowest bound for innacuracy
    unsigned long inacclo;

    /// The upper bound for the innacuracy
    unsigned short inacchi;

    /// @todo please document
    TdfT tdf;
  };

  /**
   * @brief An UTC time interval
   *
   */
  struct IntervalT
  {
    /// Lower bound of the interval.
    TimeT lower_bound;

    /// Upper bound of the interval.
    TimeT upper_bound;
  };
};

#endif /* TIME_BASE_PIDL */