Message format for delivering requests to the ACE_Name Server. More...
#include <Name_Request_Reply.h>

Classes | |
| struct | Transfer |
Public Types | |
| enum | Constants { BIND = 01, REBIND = 02, RESOLVE = 03, UNBIND = 04, LIST_NAMES = 05, LIST_VALUES = 015, LIST_TYPES = 025, LIST_NAME_ENTRIES = 06, LIST_VALUE_ENTRIES = 016, LIST_TYPE_ENTRIES = 026, MAX_ENUM = 11, MAX_LIST = 3, OP_TABLE_MASK = 07, LIST_OP_MASK = 030, MAX_NAME_LENGTH = MAXPATHLEN + 1 } |
Request message types. More... | |
Public Member Functions | |
| ACE_Name_Request (void) | |
| Default constructor. | |
| ACE_Name_Request (ACE_INT32 msg_type, const ACE_WCHAR_T name[], const ACE_UINT32 name_length, const ACE_WCHAR_T value[], const ACE_UINT32 value_length, const char type[], const ACE_UINT32 type_length, ACE_Time_Value *timeout=0) | |
| Create a ACE_Name_Request message. | |
| void | init (void) |
| ACE_UINT32 | length (void) const |
| void | length (ACE_UINT32) |
| ACE_INT32 | msg_type (void) const |
| void | msg_type (ACE_INT32) |
| ACE_UINT32 | block_forever (void) const |
| void | block_forever (ACE_UINT32) |
| ACE_Time_Value | timeout (void) const |
| void | timeout (const ACE_Time_Value timeout) |
| const ACE_WCHAR_T * | name (void) const |
| void | name (const ACE_WCHAR_T *) |
| const ACE_WCHAR_T * | value (void) const |
| void | value (const ACE_WCHAR_T *) |
| const char * | type (void) const |
| void | type (const char *) |
| ACE_UINT32 | name_len (void) const |
| void | name_len (ACE_UINT32) |
| ACE_UINT32 | value_len (void) const |
| void | value_len (ACE_UINT32) |
| ACE_UINT32 | type_len (void) const |
| void | type_len (ACE_UINT32) |
| 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_WCHAR_T * | name_ |
| Pointer to the beginning of the name in this->data_. | |
| ACE_WCHAR_T * | value_ |
| Pointer to the beginning of the value in this->data_;. | |
| char * | type_ |
| Pointer to the beginning of the type in this->data_;. | |
Message format for delivering requests to the ACE_Name Server.
This class is implemented to minimize data copying. In particular, all marshaling is done in situ...
Definition at line 42 of file Name_Request_Reply.h.
Request message types.
Definition at line 46 of file Name_Request_Reply.h.
{
BIND = 01,
REBIND = 02,
RESOLVE = 03,
UNBIND = 04,
LIST_NAMES = 05,
LIST_VALUES = 015,
LIST_TYPES = 025,
LIST_NAME_ENTRIES = 06,
LIST_VALUE_ENTRIES = 016,
LIST_TYPE_ENTRIES = 026,
MAX_ENUM = 11,
MAX_LIST = 3,
// Mask for bitwise operation used for table lookup
/// Mask for lookup of operation
OP_TABLE_MASK = 07,
/// Mask for lookup of list_operation
LIST_OP_MASK = 030,
/// Class-specific constant values.
MAX_NAME_LENGTH = MAXPATHLEN + 1
};
| ACE_Name_Request::ACE_Name_Request | ( | void | ) |
Default constructor.
| ACE_Name_Request::ACE_Name_Request | ( | ACE_INT32 | msg_type, | |
| const ACE_WCHAR_T | name[], | |||
| const ACE_UINT32 | name_length, | |||
| const ACE_WCHAR_T | value[], | |||
| const ACE_UINT32 | value_length, | |||
| const char | type[], | |||
| const ACE_UINT32 | type_length, | |||
| ACE_Time_Value * | timeout = 0 | |||
| ) |
Create a ACE_Name_Request message.
Definition at line 25 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::ACE_Name_Request");
this->msg_type (t);
this->name_len (name_length);
this->value_len (value_length);
this->type_len (type_length);
// If timeout is a NULL pointer, then block forever...
if (timeout == 0)
{
this->transfer_.block_forever_ = 1;
this->transfer_.sec_timeout_ = 0;
this->transfer_.usec_timeout_ = 0;
}
else // Do a "timed wait."
{
this->block_forever (0);
// Keep track of how long client is willing to wait.
this->transfer_.sec_timeout_ = timeout->sec ();
this->transfer_.usec_timeout_ = timeout->usec ();
}
// Set up pointers and copy name value and type into request.
this->name_ = this->transfer_.data_;
this->value_ = &this->name_[name_length / sizeof (ACE_WCHAR_T) ];
this->type_ = (char *)(&this->value_[value_length / sizeof (ACE_WCHAR_T)]); //
(void) ACE_OS::memcpy (this->name_,
name,
name_length);
(void) ACE_OS::memcpy (this->value_,
value,
value_length);
(void) ACE_OS::memcpy (this->type_,
type,
type_length);
// Compute size of the fixed portion of the message...
size_t len = sizeof this->transfer_ - sizeof this->transfer_.data_;
// ... then add in the amount of the variable-sized portion.
len += name_length + value_length + type_length ;
this->length (static_cast<ACE_UINT32> (len));
}
| ACE_UINT32 ACE_Name_Request::block_forever | ( | void | ) | const |
Definition at line 172 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::block_forever");
return this->transfer_.block_forever_;
}
| void ACE_Name_Request::block_forever | ( | ACE_UINT32 | bs | ) |
Definition at line 179 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::block_forever");
this->transfer_.block_forever_ = bs;
}
| int ACE_Name_Request::decode | ( | void | ) |
Decode message after reception.
Definition at line 297 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::decode");
// Decode the fixed-sized portion first.
this->transfer_.block_forever_ = ACE_NTOHL (this->transfer_.block_forever_);
this->transfer_.usec_timeout_ = ACE_NTOHL (this->transfer_.usec_timeout_);
#if defined (ACE_LITTLE_ENDIAN)
ACE_UINT64 secs = this->transfer_.sec_timeout_;
ACE_CDR::swap_8 ((const char *)&secs, (char *)&this->transfer_.sec_timeout_);
#endif
this->transfer_.length_ = ACE_NTOHL (this->transfer_.length_);
this->transfer_.msg_type_ = ACE_NTOHL (this->transfer_.msg_type_);
this->transfer_.name_len_ = ACE_NTOHL (this->transfer_.name_len_);
this->transfer_.value_len_ = ACE_NTOHL (this->transfer_.value_len_);
this->transfer_.type_len_ = ACE_NTOHL (this->transfer_.type_len_);
size_t nv_data_len =
(this->transfer_.name_len_ + this->transfer_.value_len_)
/ sizeof (ACE_WCHAR_T);
for (size_t i = 0; i < nv_data_len; i++)
this->transfer_.data_[i] =
ACE_NTOHS (this->transfer_.data_[i]);
this->name_ = this->transfer_.data_;
this->value_ = &this->name_[this->transfer_.name_len_ / sizeof (ACE_WCHAR_T)];
this->type_ = (char *)(&this->value_[this->transfer_.value_len_ / sizeof (ACE_WCHAR_T)]);
this->type_[this->transfer_.type_len_] = '\0';
// Decode the variable-sized portion.
return 0;
}
| void ACE_Name_Request::dump | ( | void | ) | const |
Print out the values of the message for debugging purposes.
Definition at line 333 of file Name_Request_Reply.cpp.
{
#if defined (ACE_HAS_DUMP)
ACE_TRACE ("ACE_Name_Request::dump");
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("*******\nlength = %d\n"),
this->length ()));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("message-type = ")));
switch (this->msg_type ())
{
case ACE_Name_Request::BIND:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("BIND\n")));
break;
case ACE_Name_Request::REBIND:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("REBIND\n")));
break;
case ACE_Name_Request::RESOLVE:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("RESOLVE\n")));
break;
case ACE_Name_Request::UNBIND:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("UNBIND\n")));
break;
case ACE_Name_Request::LIST_NAMES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_NAMES\n")));
break;
case ACE_Name_Request::LIST_VALUES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_VALUES\n")));
break;
case ACE_Name_Request::LIST_TYPES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_TYPES\n")));
break;
case ACE_Name_Request::LIST_NAME_ENTRIES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_NAME_ENTRIES\n")));
break;
case ACE_Name_Request::LIST_VALUE_ENTRIES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_VALUE_ENTRIES\n")));
break;
case ACE_Name_Request::LIST_TYPE_ENTRIES:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("LIST_TYPE_ENTRIES\n")));
break;
default:
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("<unknown type> = %d\n"),
this->msg_type ()));
break;
}
if (this->block_forever ())
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("blocking forever\n")));
else
{
#if !defined (ACE_NLOGGING)
ACE_Time_Value tv = this->timeout ();
#endif /* ! ACE_NLOGGING */
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("waiting for %d secs and %d usecs\n"),
tv.sec (),
tv.usec ()));
}
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("*******\nname_len = %d\n"),
this->name_len ()));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("*******\nvalue_len = %d\n"),
this->value_len ()));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("+++++++\n")));
#endif /* ACE_HAS_DUMP */
}
| int ACE_Name_Request::encode | ( | void *& | buf | ) |
Encode the message before transmission.
Definition at line 262 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::encode");
// Compute the length *before* doing the marshaling.
ACE_UINT32 len = this->length ();
size_t nv_data_len =
(this->transfer_.name_len_ + this->transfer_.value_len_)
/ sizeof (ACE_WCHAR_T);
for (size_t i = 0; i < nv_data_len; i++)
this->transfer_.data_[i] =
ACE_HTONS (this->transfer_.data_[i]);
buf = (void *) &this->transfer_;
this->transfer_.block_forever_ = ACE_HTONL (this->transfer_.block_forever_);
this->transfer_.usec_timeout_ = ACE_HTONL (this->transfer_.usec_timeout_);
#if defined (ACE_LITTLE_ENDIAN)
ACE_UINT64 secs = this->transfer_.sec_timeout_;
ACE_CDR::swap_8 ((const char *)&secs, (char *)&this->transfer_.sec_timeout_);
#endif
this->transfer_.length_ = ACE_HTONL (this->transfer_.length_);
this->transfer_.msg_type_ = ACE_HTONL (this->transfer_.msg_type_);
this->transfer_.name_len_ = ACE_HTONL (this->transfer_.name_len_);
this->transfer_.value_len_ = ACE_HTONL (this->transfer_.value_len_);
this->transfer_.type_len_ = ACE_HTONL (this->transfer_.type_len_);
return len;
}
| void ACE_Name_Request::init | ( | void | ) |
Initialize length_ in order to ensure correct byte ordering before a request is sent.
Definition at line 83 of file Name_Request_Reply.cpp.
| ACE_UINT32 ACE_Name_Request::length | ( | void | ) | const |
Definition at line 92 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::length | ( | ACE_UINT32 | l | ) |
Definition at line 99 of file Name_Request_Reply.cpp.
| ACE_INT32 ACE_Name_Request::msg_type | ( | void | ) | const |
Definition at line 108 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::msg_type | ( | ACE_INT32 | t | ) |
Definition at line 115 of file Name_Request_Reply.cpp.
| const ACE_WCHAR_T * ACE_Name_Request::name | ( | void | ) | const |
Definition at line 206 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::name | ( | const ACE_WCHAR_T * | t | ) |
Definition at line 213 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::name");
(void) ACE_OS::memcpy (this->name_,
t,
this->name_len ());
}
| ACE_UINT32 ACE_Name_Request::name_len | ( | void | ) | const |
Definition at line 124 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::name_len | ( | ACE_UINT32 | t | ) |
Definition at line 131 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::timeout | ( | const ACE_Time_Value | timeout | ) |
Definition at line 196 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::timeout");
this->transfer_.sec_timeout_ = timeout.sec ();
this->transfer_.usec_timeout_ = timeout.usec ();
}
| ACE_Time_Value ACE_Name_Request::timeout | ( | void | ) | const |
Definition at line 188 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::timeout");
time_t sec = ACE_Utils::truncate_cast<time_t> (this->transfer_.sec_timeout_);
return ACE_Time_Value (sec, this->transfer_.usec_timeout_);
}
| void ACE_Name_Request::type | ( | const char * | c | ) |
Definition at line 250 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::type");
ACE_OS::strsncpy (this->type_,
c,
sizeof this->type_);
}
| const char * ACE_Name_Request::type | ( | void | ) | const |
Definition at line 243 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::type_len | ( | ACE_UINT32 | t | ) |
Definition at line 163 of file Name_Request_Reply.cpp.
| ACE_UINT32 ACE_Name_Request::type_len | ( | void | ) | const |
Definition at line 156 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::value | ( | const ACE_WCHAR_T * | c | ) |
Definition at line 231 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::value");
(void) ACE_OS::memcpy (this->value_,
c,
this->value_len());
}
| const ACE_WCHAR_T * ACE_Name_Request::value | ( | void | ) | const |
Definition at line 224 of file Name_Request_Reply.cpp.
| void ACE_Name_Request::value_len | ( | ACE_UINT32 | t | ) |
Definition at line 147 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::value_len");
this->transfer_.value_len_ = t;
}
| ACE_UINT32 ACE_Name_Request::value_len | ( | void | ) | const |
Definition at line 140 of file Name_Request_Reply.cpp.
{
ACE_TRACE ("ACE_Name_Request::value_len");
return this->transfer_.value_len_;
}
ACE_WCHAR_T* ACE_Name_Request::name_ [private] |
Pointer to the beginning of the name in this->data_.
Definition at line 179 of file Name_Request_Reply.h.
Transfer ACE_Name_Request::transfer_ [private] |
Transfer buffer.
Definition at line 176 of file Name_Request_Reply.h.
char* ACE_Name_Request::type_ [private] |
Pointer to the beginning of the type in this->data_;.
Definition at line 185 of file Name_Request_Reply.h.
ACE_WCHAR_T* ACE_Name_Request::value_ [private] |
Pointer to the beginning of the value in this->data_;.
Definition at line 182 of file Name_Request_Reply.h.
1.7.0