ACE_Time_Request Class Reference

Message format for delivering requests to the ACE_Time Server. More...

#include <Time_Request_Reply.h>

Collaboration diagram for ACE_Time_Request:

Collaboration graph
[legend]
List of all members.

Public Types

enum  Constants { TIME_UPDATE = 01, MAX_TIME_LEN = MAXPATHLEN + 1 }

Public Member Functions

 ACE_Time_Request (void)
 Default constructor.

 ACE_Time_Request (ACE_INT32 msg_type, const ACE_UINT32 time, ACE_Time_Value *timeout=0)
void init (void)
ssize_t size (void) const
ACE_INT32 msg_type (void) const
 Get the type of the message.

void msg_type (ACE_INT32)
 Set the type of the message.

ACE_UINT32 time (void) const
 Get the time.

void time (ACE_UINT32 t)
ACE_UINT32 block_forever (void) const
 Get the blocking semantics.

void block_forever (ACE_UINT32)
 Set the blocking semantics.

ACE_Time_Value timeout (void) const
 Get the timeout.

void timeout (const ACE_Time_Value &timeout)
 Set the timeout.

int encode (void *&)
 Encode the message before transmission.

int decode (void)
 Decode message after reception.

void dump (void) const
 Print out the values of the message for debugging purposes.


Private Attributes

Transfer transfer_
 Transfer buffer.

ACE_UINT32 time_
 Time.


Detailed Description

Message format for delivering requests to the ACE_Time Server.

This class is implemented to minimize data copying. In particular, all marshaling is done in situ...

Definition at line 37 of file Time_Request_Reply.h.


Member Enumeration Documentation

enum ACE_Time_Request::Constants
 

Enumeration values:
TIME_UPDATE  Request message types.
MAX_TIME_LEN  Class-specific constant values.

Definition at line 40 of file Time_Request_Reply.h.

00041   {
00042     /// Request message types.
00043     TIME_UPDATE = 01,
00044 
00045     /// Class-specific constant values.
00046     MAX_TIME_LEN = MAXPATHLEN + 1
00047   };


Constructor & Destructor Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_Time_Request::ACE_Time_Request void   ) 
 

Default constructor.

Definition at line 14 of file Time_Request_Reply.cpp.

References ACE_TRACE.

00015 {
00016   ACE_TRACE ("ACE_Time_Request::ACE_Time_Request");
00017 }

ACE_Time_Request::ACE_Time_Request ACE_INT32  msg_type,
const ACE_UINT32  time,
ACE_Time_Value timeout = 0
 

Create a ACE_Time_Request message.

Parameters:
msg_type Type of request.
time Time.
timeout Max time waiting for request.

Definition at line 21 of file Time_Request_Reply.cpp.

References ACE_TRACE, block_forever(), ACE_Time_Request::Transfer::block_forever_, msg_type(), ACE_Time_Value::sec(), ACE_Time_Request::Transfer::sec_timeout_, ACE_Time_Request::Transfer::time_, ACE_Time_Value::usec(), and ACE_Time_Request::Transfer::usec_timeout_.

00024 {
00025   ACE_TRACE ("ACE_Time_Request::ACE_Time_Request");
00026   this->msg_type (t);
00027 
00028   // If timeout is a NULL pointer, then block forever...
00029   if (timeout == 0)
00030     {
00031       this->transfer_.block_forever_ = 1;
00032       this->transfer_.sec_timeout_   = 0;
00033       this->transfer_.usec_timeout_  = 0;
00034     }
00035   else // Do a "timed wait."
00036     {
00037       this->block_forever (0);
00038       // Keep track of how long client is willing to wait.
00039       this->transfer_.sec_timeout_ = timeout->sec ();
00040       this->transfer_.usec_timeout_ = timeout->usec ();
00041     }
00042 
00043   // Copy time into request
00044   this->time_ = this->transfer_.time_ = time;
00045 }


Member Function Documentation

void ACE_Time_Request::block_forever ACE_UINT32   ) 
 

Set the blocking semantics.

Definition at line 87 of file Time_Request_Reply.cpp.

References ACE_TRACE, and ACE_Time_Request::Transfer::block_forever_.

00088 {
00089   ACE_TRACE ("ACE_Time_Request::block_forever");
00090   this->transfer_.block_forever_ = bs;
00091 }

ACE_UINT32 ACE_Time_Request::block_forever void   )  const
 

Get the blocking semantics.

Definition at line 80 of file Time_Request_Reply.cpp.

References ACE_TRACE, and ACE_Time_Request::Transfer::block_forever_.

Referenced by ACE_Time_Request(), and dump().

00081 {
00082   ACE_TRACE ("ACE_Time_Request::block_forever");
00083   return this->transfer_.block_forever_;
00084 }

int ACE_Time_Request::decode void   ) 
 

Decode message after reception.

Definition at line 145 of file Time_Request_Reply.cpp.

References ACE_TRACE, ACE_Time_Request::Transfer::block_forever_, ACE_Time_Request::Transfer::msg_type_, ACE_Time_Request::Transfer::sec_timeout_, ACE_Time_Request::Transfer::time_, and ACE_Time_Request::Transfer::usec_timeout_.

00146 {
00147   ACE_TRACE ("ACE_Time_Request::decode");
00148   // Decode
00149   this->transfer_.block_forever_ = ntohl (this->transfer_.block_forever_);
00150   this->transfer_.usec_timeout_  = ntohl (this->transfer_.usec_timeout_);
00151   this->transfer_.sec_timeout_   = ntohl (this->transfer_.sec_timeout_);
00152   this->transfer_.msg_type_      = ntohl (this->transfer_.msg_type_);
00153   this->transfer_.time_          = ntohl (this->transfer_.time_);
00154 
00155   this->time_ = this->transfer_.time_;
00156   return 0;
00157 }

void ACE_Time_Request::dump void   )  const
 

Print out the values of the message for debugging purposes.

Definition at line 162 of file Time_Request_Reply.cpp.

References ACE_DEBUG, ACE_LIB_TEXT, ACE_TRACE, block_forever(), LM_DEBUG, msg_type(), ACE_Time_Value::sec(), TIME_UPDATE, timeout(), and ACE_Time_Value::usec().

00163 {
00164 #if defined (ACE_HAS_DUMP)
00165   ACE_TRACE ("ACE_Time_Request::dump");
00166   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("*******\nlength = %d\n"),
00167               this->size ()));
00168   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("message-type = ")));
00169 
00170   switch (this->msg_type ())
00171     {
00172     case ACE_Time_Request::TIME_UPDATE:
00173       ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("TIME_UPDATE\n")));
00174       break;
00175     default:
00176       ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("<unknown type> = %d\n"), this->msg_type ()));
00177       break;
00178     }
00179 
00180   if (this->block_forever ())
00181     ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("blocking forever\n")));
00182   else
00183     {
00184 #if !defined (ACE_NLOGGING)
00185       ACE_Time_Value tv = this->timeout ();
00186 #endif /* ! ACE_NLOGGING */
00187       ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("waiting for %d secs and %d usecs\n"),
00188                   tv.sec (), tv.usec ()));
00189     }
00190   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("*******\ntime = %d\n"),
00191               this->time ()));
00192   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("+++++++\n")));
00193 #endif /* ACE_HAS_DUMP */
00194 }

int ACE_Time_Request::encode void *&   ) 
 

Encode the message before transmission.

Definition at line 127 of file Time_Request_Reply.cpp.

References ACE_TRACE, ACE_Time_Request::Transfer::block_forever_, ACE_Time_Request::Transfer::msg_type_, ACE_Time_Request::Transfer::sec_timeout_, size(), ACE_Time_Request::Transfer::time_, and ACE_Time_Request::Transfer::usec_timeout_.

00128 {
00129   ACE_TRACE ("ACE_Time_Request::encode");
00130   // Compute the length *before* doing the marshaling.
00131 
00132   buf = (void *) &this->transfer_;
00133   this->transfer_.block_forever_ = htonl (this->transfer_.block_forever_);
00134   this->transfer_.usec_timeout_  = htonl (this->transfer_.usec_timeout_);
00135   this->transfer_.sec_timeout_   = htonl (this->transfer_.sec_timeout_);
00136   this->transfer_.msg_type_      = htonl (this->transfer_.msg_type_);
00137   this->transfer_.time_          = htonl (this->transfer_.time_);
00138 
00139   return this->size ();  // Always fixed
00140 }

void ACE_Time_Request::init void   ) 
 

Initialize length_ in order to ensure correct byte ordering before a request is sent.

Deprecated:
This method is a no-op.

Definition at line 49 of file Time_Request_Reply.cpp.

References ACE_TRACE.

00050 {
00051   ACE_TRACE ("ACE_Time_Request::init");
00052 //  this->length (sizeof this->transfer_);
00053 }

void ACE_Time_Request::msg_type ACE_INT32   ) 
 

Set the type of the message.

Definition at line 72 of file Time_Request_Reply.cpp.

References ACE_TRACE, and ACE_Time_Request::Transfer::msg_type_.

00073 {
00074   ACE_TRACE ("ACE_Time_Request::msg_type");
00075   this->transfer_.msg_type_ = t;
00076 }

ACE_INT32 ACE_Time_Request::msg_type void   )  const
 

Get the type of the message.

Definition at line 65 of file Time_Request_Reply.cpp.

References ACE_TRACE, and ACE_Time_Request::Transfer::msg_type_.

Referenced by ACE_Time_Request(), and dump().

00066 {
00067   ACE_TRACE ("ACE_Time_Request::msg_type");
00068   return this->transfer_.msg_type_;
00069 }

ssize_t ACE_Time_Request::size void   )  const
 

Definition at line 57 of file Time_Request_Reply.cpp.

References ACE_TRACE.

Referenced by encode().

00058 {
00059   ACE_TRACE ("ACE_Time_Request::size");
00060   return sizeof (this->transfer_);
00061 }

void ACE_Time_Request::time ACE_UINT32  t  ) 
 

Definition at line 118 of file Time_Request_Reply.cpp.

References ACE_TRACE.

00119 {
00120   ACE_TRACE ("ACE_Time_Request::time");
00121   this->time_ = t;
00122 }

ACE_UINT32 ACE_Time_Request::time void   )  const
 

Get the time.

Definition at line 111 of file Time_Request_Reply.cpp.

References ACE_TRACE.

00112 {
00113   ACE_TRACE ("ACE_Time_Request::time");
00114   return this->time_;
00115 }

void ACE_Time_Request::timeout const ACE_Time_Value timeout  ) 
 

Set the timeout.

Definition at line 102 of file Time_Request_Reply.cpp.

References ACE_TRACE, ACE_Time_Value::sec(), ACE_Time_Request::Transfer::sec_timeout_, ACE_Time_Value::usec(), and ACE_Time_Request::Transfer::usec_timeout_.

00103 {
00104   ACE_TRACE ("ACE_Time_Request::timeout");
00105   this->transfer_.sec_timeout_  = timeout.sec ();
00106   this->transfer_.usec_timeout_ = timeout.usec ();
00107 }

ACE_Time_Value ACE_Time_Request::timeout void   )  const
 

Get the timeout.

Definition at line 95 of file Time_Request_Reply.cpp.

References ACE_Time_Value, and ACE_TRACE.

Referenced by dump().

00096 {
00097   ACE_TRACE ("ACE_Time_Request::timeout");
00098   return ACE_Time_Value (this->transfer_.sec_timeout_, this->transfer_.usec_timeout_);
00099 }


Member Data Documentation

ACE_UINT32 ACE_Time_Request::time_ [private]
 

Time.

Definition at line 133 of file Time_Request_Reply.h.

Transfer ACE_Time_Request::transfer_ [private]
 

Transfer buffer.

Definition at line 130 of file Time_Request_Reply.h.


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:31:09 2006 for ACE by doxygen 1.3.6