1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
// $Id: URL_Properties.cpp 92580 2010-11-15 09:48:02Z johnnyw $
#if !defined (ACE_URL_PROPERTIES_C)
#define ACE_URL_PROPERTIES_C
#include "URL_Properties.h"
#if !defined (__ACE_INLINE__)
#include "URL_Properties.inl"
#endif /* __ACE_INLINE__ */
#include "ace/Auto_Ptr.h"
#include "URL_Array_Helper.h"
size_t
ACE_WString_Helper::encode (void *buf, const ACE_WString &wstr)
{
ACE_UINT16 *wptr = (ACE_UINT16 *) buf;
size_t i;
for (i= 0; i <= wstr.length (); i++)
wptr[i] = htons (wstr[i]);
return i * sizeof (ACE_UINT16);
}
size_t
ACE_WString_Helper::decode (void *buf)
{
ACE_UINT16 *wptr = (ACE_UINT16 *) buf;
size_t i;
for (i = 0; wptr[i] != 0; i++)
wptr[i] = ntohs (wptr[i]);
return (i + 1) * sizeof (ACE_UINT16);
}
size_t
ACE_URL_Property::encode (void *buf) const
{
size_t blen = ACE_WString_Helper::encode (buf, this->name_);
blen += ACE_WString_Helper::encode ((void *) ((char *) buf + blen),
this->value_);
return blen;
}
size_t
ACE_URL_Property::decode (void *buf)
{
char *cbuf = (char *) buf;
size_t len = ACE_WString_Helper::decode(buf);
this->name ((ACE_UINT16 *) cbuf);
cbuf += len;
len += ACE_WString_Helper::decode ((void *) cbuf);
this->value ((ACE_UINT16 *) cbuf);
return len;
}
void
ACE_URL_Property::dump (void) const
{
ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
if (this->name_.length () > 0)
ACE_DEBUG ((LM_DEBUG, "\n name_: \"%s\"\n",
ACE_Auto_Basic_Array_Ptr<char> (this->name_.char_rep ()).get ()));
else
ACE_DEBUG ((LM_DEBUG, "\n name_: \"\"\n"));
if (this->value_.length () > 0)
ACE_DEBUG ((LM_DEBUG, " value_: \"%s\"\n",
ACE_Auto_Basic_Array_Ptr<char> (this->value_.char_rep ()).get ()));
else
ACE_DEBUG ((LM_DEBUG, " value_: \"\"\n"));
ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
}
size_t
ACE_URL_Offer::size (void) const
{
size_t sum = (this->url_.length () + 1) * sizeof (ACE_UINT16);
sum += ::ace_array_size (this->prop_);
return sum;
}
size_t
ACE_URL_Offer::encode (void *buf) const
{
ACE_UINT32 *s_buf = (ACE_UINT32 *) buf;
*s_buf = htonl (this->prop_.size ());
size_t len = sizeof (ACE_UINT32);
len += ACE_WString_Helper::encode ((void *) ((char *) buf + len),
this->url_);
len += ::ace_array_encode ((void *) ((char *) buf + len),
this->prop_);
return len;
}
size_t
ACE_URL_Offer::decode (void *buf)
{
size_t len = sizeof (ACE_UINT32);
size_t a_size = (size_t) ntohl (*(ACE_UINT32 *) buf);
len += ACE_WString_Helper::decode ((void *) ((char *) buf + len));
this->url ((ACE_UINT16 *) ((char *) buf + len));
ACE_URL_Property_Seq prop_seq (a_size);
this->url_properties (prop_seq);
len += ::ace_array_decode ((void *)((char *) buf + len),
this->prop_);
return len;
}
void
ACE_URL_Offer::dump (void) const
{
ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
if (this->url_.length () > 0)
ACE_DEBUG ((LM_DEBUG, "\n url_: \"%s\"\n",
ACE_Auto_Basic_Array_Ptr<char> (this->url_.char_rep ()).get ()));
else
ACE_DEBUG ((LM_DEBUG, "\n url_: \"\"\n"));
for (size_t i = 0; i < this->prop_.size (); i++)
this->prop_[i].dump ();
ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
}
#endif /* ACE_URL_PROPERTIES_C */
|