## NAME

ACE_Time_Value - Operations on "timeval" structures.

## SYNOPSIS

    #include <ace/OS.h>

    class ACE_Time_Value
    {
      public:
        static const ACE_Time_Value zero;
        static const ACE_Time_Value max_time;
        ACE_Time_Value (void);
        ACE_Time_Value (long sec, long usec = 0);
        ACE_Time_Value (const struct timeval &t);
        ACE_Time_Value (const timespec_t &t);
        ACE_Time_Value (const ACE_Time_Value &tv);
        ACE_Time_Value (const FILETIME &ft);
        void set (long sec, long usec);
        void set (double d);
        void set (const timeval &t);
        void set (const timespec_t &t);
        void set (const FILETIME &ft);
        long msec (void) const;
        void msec (long);
        operator timespec_t () const;
        operator timeval () const;
        operator const timeval *() const;
        operator FILETIME () const;
        long sec (void) const;
        void sec (long sec);
        long usec (void) const;
        void usec (long usec);
        void operator += (const ACE_Time_Value &tv);
        void operator -= (const ACE_Time_Value &tv);
        friend ACE_Export ACE_Time_Value operator + (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export ACE_Time_Value operator - (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator < (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator > (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator <= (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator >= (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator == (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        friend ACE_Export int operator != (
            const ACE_Time_Value &tv1,
            const ACE_Time_Value &tv2
            );
        void dump (void) const;
        static const DWORDLONG FILETIME_to_timval_skew;
      private:
        void normalize (void);
        timeval tv_;
    };

## DESCRIPTION

This class centralizes all the time related processing in ACE. These timers are typically used in conjunction with OS mechanisms like `select`, `poll`, or `cond_timedwait`. `ACE_Time_Value` makes the use of these mechanisms portable across OS platforms,

## Useful constants.

    static const ACE_Time_Value zero;

Constant "0".

    static const ACE_Time_Value max_time;

Constant for maximum time representable. Note that this time is not intended for use with `select` or other calls that may have *their own* implementation-specific maximum time representations. Its primary use is in time computations such as those used by the dynamic subpriority strategies in the `ACE_Dynamic_Message_Queue` class.

## Initialization methods.

    ACE_Time_Value (void);

Default Constructor.

    ACE_Time_Value (long sec, long usec = 0);

Constructor.

## Methods for converting to/from various time formats.

    ACE_Time_Value (const struct timeval &t);

Construct the `ACE_Time_Value` from a `timeval`.

    ACE_Time_Value (const timespec_t &t);

Initializes the `ACE_Time_Value` object from a `timespec_t`.

    ACE_Time_Value (const ACE_Time_Value &tv);

Copy constructor.

    ACE_Time_Value (const FILETIME &ft);

Initializes the ACE_Time_Value object from a Win32 FILETIME

    void set (long sec, long usec);

Construct a `Time_Value` from two `long`s.

    void set (double d);

Construct a `Time_Value` from a `double`, which is assumed to be in second format, with any remainder treated as microseconds.

    void set (const timeval &t);

Construct a `Time_Value` from a `timeval`.

    void set (const timespec_t &t);

Initializes the `Time_Value` object from a `timespec_t`.

    void set (const FILETIME &ft);

Initializes the `Time_Value` object from a `timespec_t`.

    long msec (void) const;

Converts from `Time_Value` format into milli-seconds format.

    void msec (long);

Converts from milli-seconds format into `Time_Value` format.

    operator timespec_t () const;

Returns the value of the object as a `timespec_t`.

    operator timeval () const;

Returns the value of the object as a `timeval`.

    operator const timeval *() const;

Returns a pointer to the object as a `timeval`.

    operator FILETIME () const;

Returns the value of the object as a Win32 FILETIME.

## The following are accessor/mutator methods.

    long sec (void) const;

Get seconds.

    void sec (long sec);

Set seconds.

    long usec (void) const;

Get microseconds.

    void usec (long usec);

Set microseconds.

## The following are arithmetic methods for operating on

Time_Values.

    void operator += (const ACE_Time_Value &tv);

Add `tv` to this.

    void operator -= (const ACE_Time_Value &tv);

Subtract `tv` to this.

    friend ACE_Export ACE_Time_Value operator + (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

Adds two ACE_Time_Value objects together, returns the sum.

    friend ACE_Export ACE_Time_Value operator - (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

Subtracts two ACE_Time_Value objects, returns the difference.

    friend ACE_Export int operator < (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 `tv2.`

    friend ACE_Export int operator > (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 tv2.

    friend ACE_Export int operator <= (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 `= tv2.`

    friend ACE_Export int operator >= (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 = tv2.

    friend ACE_Export int operator == (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 == tv2.

    friend ACE_Export int operator != (
        const ACE_Time_Value &tv1,
        const ACE_Time_Value &tv2
        );

True if tv1 != tv2.

    void dump (void) const;

Dump the state of an object.

    static const DWORDLONG FILETIME_to_timval_skew;

Const time difference between FILETIME and POSIX time.

## AUTHOR

Doug Schmidt `schmidt@cs.wustl.edu`, Jesper S. M|ller `stophph@diku.dk`, and a cast of thousands...

## The ACE_Sched_Priority type should be used for platform-

independent thread and process priorities, by convention. int should be used for OS-specific priorities.

## typedef for the _stat data structure

## Giving unique ACE scoped names for some important

RTSignal-Related constants. Becuase sometimes, different platforms use different names for these constants.

## LIBRARY

ace