// -*- C++ -*- #ifndef TAO_TIME_IDL #define TAO_TIME_IDL #include "tao/TimeBase.pidl" #pragma prefix "omg.org" module CosTime { // = TITLE // CosTime Module // // = DESCRIPTION // This module has all the interfaces, and associated enum // and exception declarations for the time service. enum TimeComparison { // = TITLE // TimeComparison defines the possible values that can be // returned as a result of comparing two UTOs. TCEqualTo, TCLessThan, TCGreaterThan, TCIndeterminate }; enum ComparisonType { // = TITLE // ComparisonType defines the possible ways in which the times can // be compared. IntervalC, MidC }; enum OverlapType { // = TITLE // OverlapType specifies the type of overlap between two time // intervals. OTContainer, OTContained, OTOverlap, OTNoOverlap }; exception TimeUnavailable { // = TITLE // TimeUnavailable exception is raised by the Timeservice when // it cannot successfully return time. }; interface TIO; // forward declaration. interface UTO { // = TITLE // The interface UTO is an encapsulation of time. // // = DESCRIPTION // This interface provides the following // operations on basic time : // - Construction of a UTO from piece parts, and extraction of the // piece parts from a UTO. The piece parts are the readonly // attributes : // time // inaccuracy // time displacement factor // structure with all the above. // // - Comparison of time. // // - Conversion from relative to absolute time, and conversion to // an interval (TIO) readonly attribute TimeBase::TimeT time; // absolute tine value. readonly attribute TimeBase::InaccuracyT inaccuracy; // inaccuracy in the time. readonly attribute TimeBase::TdfT tdf; // the time displacement factor. readonly attribute TimeBase::UtcT utc_time; // structure having the absolute time, the inaccuracy and the time // displacement factor. UTO absolute_time (); // This returns the absolute time by adding the base time to the // relative time in the object. TimeComparison compare_time (in ComparisonType comparison_type, in UTO otu); // Compares the time contained in the object with the time in // the supplied uto according to the supplied comparison type. TIO time_to_interval (in UTO otu); // Returns a TIO representing the time interval between the time // in the object and the time in the UTO passed as a // parameter. The interval returned is the interval between the // mid-points of the two UTOs. Inaccuracies are ignored. Note // the result of this operation is meaningless if the base times // of UTOs are different. TIO interval (); // Returns a TIO object representing the error interval around // the time value in the UTO. }; interface TIO { // = TITLE // The TIO represents a time interval. // // = DESCRIPTION // This interface has operations to compare itself with a UTO or // another TIO. It also has an operation to create a UTO from // the value of it's time interval. readonly attribute TimeBase::IntervalT time_interval; // Consists of a lower and an upper bound for the time interval. CosTime::OverlapType spans (in UTO time, out TIO overlap); // This operation compares the time in this interface with the time // in the supplied UTO and returns the overlap type as well as the // interval of overlap in the form of a TIO. CosTime::OverlapType overlaps (in TIO interval, out TIO overlap); // This operation compares the time in this interface with the time // in the supplied TIO and returns the overlap type as well as the // interval of overlap in the form of a TIO. UTO time (); // Converts the time interval in this interface into a UTO object by // taking the midpoint of the interval as the time and the interval // as the error envelope around the time. }; interface TimeService { // = TITLE // The time service manages the UTOs and the TIOs. This is the first // interface seen by the clients requesting time. UTO universal_time () raises (TimeUnavailable); // This operation returns the current time and an estimate of // inaccuracy in a UTO. UTO secure_universal_time () raises(TimeUnavailable); // This operation returns the current time in a UTO only if the // time can be guaranteed to have been obtained securely. UTO new_universal_time (in TimeBase::TimeT time, in TimeBase::InaccuracyT inaccuracy, in TimeBase::TdfT tdf); // This creates a new UTO based on the given parameters. UTO uto_from_utc (in TimeBase::UtcT utc); // This creates a new UTO given a time in the UtcT form. TIO new_interval (in TimeBase::TimeT lower, in TimeBase::TimeT upper ); // This creates a new TIO with the given parameters. }; }; #endif /* TAO_TIME_IDL */