summaryrefslogtreecommitdiff
path: root/ACE/ace/System_Time.h
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
commit99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch)
treebda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/ace/System_Time.h
parentc4078c377d74290ebe4e66da0b4975da91732376 (diff)
downloadATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz
undoing accidental deletion
Diffstat (limited to 'ACE/ace/System_Time.h')
-rw-r--r--ACE/ace/System_Time.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/ACE/ace/System_Time.h b/ACE/ace/System_Time.h
new file mode 100644
index 00000000000..e40b21299f5
--- /dev/null
+++ b/ACE/ace/System_Time.h
@@ -0,0 +1,99 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file System_Time.h
+ *
+ * $Id$
+ *
+ * @author Prashant Jain
+ * @author Tim H. Harrison
+ * @author Douglas C. Schmidt
+ */
+//=============================================================================
+
+#ifndef ACE_SYSTEM_TIME_H
+#define ACE_SYSTEM_TIME_H
+#include /**/ "ace/pre.h"
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Global_Macros.h"
+#include "ace/os_include/os_time.h" /* For time_t. */
+#include "ace/os_include/os_limits.h" /* For MAXPATHLEN. */
+#include "ace/MMAP_Memory_Pool.h"
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+template<ACE_MEM_POOL_1, class ACE_LOCK> class ACE_Malloc;
+template<class MALLOC> class ACE_Allocator_Adapter;
+
+class ACE_Null_Mutex;
+class ACE_Time_Value;
+class ACE_MMAP_Memory_Pool;
+
+/**
+ * @class ACE_System_Time
+ *
+ * @brief Defines the timer services of the OS interface to access the
+ * system time either on the local host or on the central time
+ * server in the network.
+ */
+class ACE_Export ACE_System_Time
+{
+public:
+ /**
+ * Enumeration types to specify mode of synchronization with master
+ * clock. Jump will set local system time directly (thus possibly
+ * producing time gaps or ambiguous local system times. Adjust will
+ * smoothly slow down or speed up the local system clock to reach
+ * the system time of the master clock.
+ */
+ enum Sync_Mode { Jump, Adjust };
+
+ /// Default constructor.
+ ACE_System_Time (const ACE_TCHAR *poolname = 0);
+
+ /// Default destructor.
+ ~ACE_System_Time (void);
+
+ /// Get the local system time, i.e., the value returned by
+ /// ACE_OS::time().
+ static int get_local_system_time (time_t & time_out);
+
+ /// Get the local system time, i.e., the value returned by
+ /// ACE_OS::time().
+ static int get_local_system_time (ACE_Time_Value &time_out);
+
+ /// Get the system time of the central time server.
+ int get_master_system_time (time_t & time_out);
+
+ /// Get the system time of the central time server.
+ int get_master_system_time (ACE_Time_Value &time_out);
+
+ /// Synchronize local system time with the central time server using
+ /// specified mode.
+ int sync_local_system_time (ACE_System_Time::Sync_Mode mode);
+
+private:
+ typedef ACE_Malloc<ACE_MMAP_MEMORY_POOL, ACE_Null_Mutex> MALLOC;
+ typedef ACE_Allocator_Adapter<MALLOC> ALLOCATOR;
+
+ /// Our allocator (used for obtaining system time from shared memory).
+ ALLOCATOR * shmem_;
+
+ /// The name of the pool used by the allocator.
+ ACE_TCHAR poolname_[MAXPATHLEN + 1];
+
+ /// Pointer to delta time kept in shared memory.
+ long * delta_time_;
+};
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#include /**/ "ace/post.h"
+#endif /* ACE_SYSTEM_TIME_H */