#include <System_Time.h>
Public Types | |
enum | Sync_Mode { Jump, Adjust } |
Public Member Functions | |
ACE_System_Time (const ACE_TCHAR *poolname=0) | |
Default constructor. | |
~ACE_System_Time (void) | |
Default destructor. | |
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) |
Get the system time of the central time server. | |
int | sync_local_system_time (ACE_System_Time::Sync_Mode mode) |
Static Public Member Functions | |
int | get_local_system_time (time_t &time_out) |
int | get_local_system_time (ACE_Time_Value &time_out) |
Private Types | |
typedef ACE_Malloc< ACE_MMAP_MEMORY_POOL, ACE_Null_Mutex > | MALLOC |
typedef ACE_Allocator_Adapter< MALLOC > | ALLOCATOR |
Private Attributes | |
ALLOCATOR * | shmem_ |
Our allocator (used for obtaining system time from shared memory). | |
ACE_TCHAR | poolname_ [MAXPATHLEN+1] |
The name of the pool used by the allocator. | |
long * | delta_time_ |
Pointer to delta time kept in shared memory. |
Definition at line 46 of file System_Time.h.
|
Definition at line 84 of file System_Time.h. |
|
Definition at line 83 of file System_Time.h. |
|
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. Definition at line 56 of file System_Time.h.
|
|
Default constructor.
Definition at line 15 of file System_Time.cpp. References ACE_ERROR, ACE_NEW, ACE_TCHAR, ACE_TEXT, ACE_TRACE, ACE::get_temp_dir(), LM_ERROR, MAXPATHLEN, poolname_, ACE_OS::strcat(), ACE_OS::strcpy(), and ACE_OS::strsncpy().
00016 : shmem_ (0) 00017 , delta_time_ (0) 00018 { 00019 ACE_TRACE ("ACE_System_Time::ACE_System_Time"); 00020 00021 // Only create a new unique filename for the memory pool file 00022 // if the user didn't supply one... 00023 if (poolname == 0) 00024 { 00025 #if defined (ACE_DEFAULT_BACKING_STORE) 00026 // Create a temporary file. 00027 ACE_OS::strcpy (this->poolname_, 00028 ACE_DEFAULT_BACKING_STORE); 00029 #else /* ACE_DEFAULT_BACKING_STORE */ 00030 if (ACE::get_temp_dir (this->poolname_, 00031 MAXPATHLEN - 17) == -1) 00032 // -17 for ace-malloc-XXXXXX 00033 { 00034 ACE_ERROR ((LM_ERROR, 00035 ACE_TEXT ("Temporary path too long, ") 00036 ACE_TEXT ("defaulting to current directory\n"))); 00037 this->poolname_[0] = 0; 00038 } 00039 00040 // Add the filename to the end 00041 ACE_OS::strcat (this->poolname_, ACE_TEXT ("ace-malloc-XXXXXX")); 00042 00043 #endif /* ACE_DEFAULT_BACKING_STORE */ 00044 } 00045 else 00046 ACE_OS::strsncpy (this->poolname_, 00047 poolname, 00048 (sizeof this->poolname_ / sizeof (ACE_TCHAR))); 00049 00050 ACE_NEW (this->shmem_, 00051 ALLOCATOR (this->poolname_)); 00052 } |
|
Default destructor.
Definition at line 54 of file System_Time.cpp. References ACE_TRACE, and shmem_.
|
|
Get the local system time, i.e., the value returned by ACE_OS::time(). Definition at line 71 of file System_Time.cpp. References ACE_TRACE, and ACE_Time_Value::set().
|
|
Get the local system time, i.e., the value returned by ACE_OS::time(). Definition at line 63 of file System_Time.cpp. References ACE_TRACE, and ACE_OS::time(). Referenced by get_master_system_time().
00064 { 00065 ACE_TRACE ("ACE_System_Time::get_local_system_time"); 00066 time_out = ACE_OS::time (0); 00067 return 0; 00068 } |
|
Get the system time of the central time server.
Definition at line 120 of file System_Time.cpp. References ACE_TRACE, get_master_system_time(), and ACE_Time_Value::sec().
00121 { 00122 ACE_TRACE ("ACE_System_Time::get_master_system_time"); 00123 time_t to; 00124 if (this->get_master_system_time (to) == -1) 00125 return -1; 00126 time_out.sec (to); 00127 return 0; 00128 } |
|
Get the system time of the central time server.
Definition at line 81 of file System_Time.cpp. References ACE_DEFAULT_TIME_SERVER_STR, ACE_TRACE, delta_time_, get_local_system_time(), and shmem_. Referenced by get_master_system_time().
00082 { 00083 ACE_TRACE ("ACE_System_Time::get_master_system_time"); 00084 00085 if (this->delta_time_ == 0) 00086 { 00087 // Try to find it 00088 void * temp; 00089 if (this->shmem_->find (ACE_DEFAULT_TIME_SERVER_STR, temp) == -1) 00090 { 00091 // No time entry in shared memory (meaning no Clerk exists) 00092 // so return the local time of the host. 00093 return this->get_local_system_time (time_out); 00094 } 00095 else 00096 // Extract the delta time. 00097 this->delta_time_ = static_cast<long *> (temp); 00098 } 00099 00100 time_t local_time; 00101 00102 // If delta_time is positive, it means that the system clock is 00103 // ahead of our local clock so add delta to the local time to get an 00104 // approximation of the system time. Else if delta time is negative, 00105 // it means that our local clock is ahead of the system clock, so 00106 // return the last local time stored (to avoid time conflicts). 00107 if (*this->delta_time_ >= 0 ) 00108 { 00109 this->get_local_system_time (local_time); 00110 time_out = local_time + static_cast<ACE_UINT32> (*this->delta_time_); 00111 } 00112 else 00113 // Return the last local time. Note that this is stored as the 00114 // second field in shared memory. 00115 time_out = *(this->delta_time_ + 1); 00116 return 0; 00117 } |
|
Synchronize local system time with the central time server using specified mode. Definition at line 134 of file System_Time.cpp. References ACE_NOTSUP_RETURN, and ACE_TRACE.
00135 { 00136 ACE_TRACE ("ACE_System_Time::sync_local_system_time"); 00137 ACE_NOTSUP_RETURN (-1); 00138 } |
|
Pointer to delta time kept in shared memory.
Definition at line 93 of file System_Time.h. Referenced by get_master_system_time(). |
|
The name of the pool used by the allocator.
Definition at line 90 of file System_Time.h. Referenced by ACE_System_Time(). |
|
Our allocator (used for obtaining system time from shared memory).
Definition at line 87 of file System_Time.h. Referenced by get_master_system_time(), and ~ACE_System_Time(). |