Public Methods |
| ACE_OutputCDR (size_t size=0, int byte_order=ACE_CDR_BYTE_ORDER, ACE_Allocator *buffer_allocator=0, ACE_Allocator *data_block_allocator=0, ACE_Allocator *message_block_allocator=0, size_t memcpy_tradeoff=ACE_DEFAULT_CDR_MEMCPY_TRADEOFF, ACE_CDR::Octet major_version=ACE_CDR_GIOP_MAJOR_VERSION, ACE_CDR::Octet minor_version=ACE_CDR_GIOP_MINOR_VERSION) |
| Default constructor, allocates <size> bytes in the internal buffer, if <size> == 0 it allocates the default size. More...
|
| ACE_OutputCDR (char *data, size_t size, int byte_order=ACE_CDR_BYTE_ORDER, ACE_Allocator *buffer_allocator=0, ACE_Allocator *data_block_allocator=0, ACE_Allocator *message_block_allocator=0, size_t memcpy_tradeoff=ACE_DEFAULT_CDR_MEMCPY_TRADEOFF, ACE_CDR::Octet giop_major_version=ACE_CDR_GIOP_MAJOR_VERSION, ACE_CDR::Octet giop_minor_version=ACE_CDR_GIOP_MINOR_VERSION) |
| Create an output stream from an arbitrary buffer, care must be exercised with alignment, because this contructor will align if needed. More...
|
| ACE_OutputCDR (ACE_Message_Block *data, int byte_order=ACE_CDR_BYTE_ORDER, size_t memcpy_tradeoff=ACE_DEFAULT_CDR_MEMCPY_TRADEOFF, ACE_CDR::Octet giop_major_version=ACE_CDR_GIOP_MAJOR_VERSION, ACE_CDR::Octet giop_minor_version=ACE_CDR_GIOP_MINOR_VERSION) |
| Build a CDR stream with an initial Message_Block chain, it will *not* remove <data>, since it did not allocate it. More...
|
| ~ACE_OutputCDR (void) |
| destructor. More...
|
int | good_bit (void) const |
| Returns 0 if an error has ocurred, the only expected error is to run out of memory. More...
|
void | reset (void) |
| Reuse the CDR stream to write on the old buffer. More...
|
size_t | total_length (void) const |
| Add the length of each message block in the chain. More...
|
const ACE_Message_Block * | begin (void) const |
| Return the start of the message block chain for this CDR stream. More...
|
const ACE_Message_Block * | end (void) const |
| Return the last message in the chain that is is use. More...
|
const ACE_Message_Block * | current (void) const |
| Return the <current_> message block in chain. More...
|
const char * | buffer (void) const |
| Access the underlying buffer (read only). More...
|
size_t | length (void) const |
| Return the start and size of the internal buffer. More...
|
int | align_write_ptr (size_t alignment) |
| Utility function to allow the user more flexibility. More...
|
ACE_Char_Codeset_Translator * | char_translator (void) const |
| Access the codeset translators. They can be nil! More...
|
ACE_WChar_Codeset_Translator * | wchar_translator (void) const |
size_t | current_alignment (void) const |
| Return alignment of the wr_ptr(), with respect to the start of the CDR stream. More...
|
int | adjust (size_t size, char *&buf) |
| Returns (in <buf>) the next position in the buffer aligned to <size>, it advances the Message_Block wr_ptr past the data (i.e. More...
|
int | adjust (size_t size, size_t align, char *&buf) |
| As above, but now the size and alignment requirements may be different. More...
|
int | do_byte_swap (void) const |
| If non-zero then this stream is writing in non-native byte order, this is only meaningful if ACE_ENABLE_SWAP_ON_WRITE is defined. More...
|
void | reset_byte_order (int byte_order) |
| For use by a gateway, which creates the output stream for the reply to the client in its native byte order, but which must send the reply in the byte order of the target's reply to the gateway. More...
|
int | set_version (ACE_CDR::Octet major, ACE_CDR::Octet minor) |
| set GIOP version info. More...
|
int | get_version (ACE_CDR::Octet &major, ACE_CDR::Octet &minor) |
| Set the underlying GIOP version.. More...
|
|
ACE_CDR::Boolean | write_boolean (ACE_CDR::Boolean x) |
ACE_CDR::Boolean | write_char (ACE_CDR::Char x) |
ACE_CDR::Boolean | write_wchar (ACE_CDR::WChar x) |
ACE_CDR::Boolean | write_octet (ACE_CDR::Octet x) |
ACE_CDR::Boolean | write_short (ACE_CDR::Short x) |
ACE_CDR::Boolean | write_ushort (ACE_CDR::UShort x) |
ACE_CDR::Boolean | write_long (ACE_CDR::Long x) |
ACE_CDR::Boolean | write_ulong (ACE_CDR::ULong x) |
ACE_CDR::Boolean | write_longlong (const ACE_CDR::LongLong &x) |
ACE_CDR::Boolean | write_ulonglong (const ACE_CDR::ULongLong &x) |
ACE_CDR::Boolean | write_float (ACE_CDR::Float x) |
ACE_CDR::Boolean | write_double (const ACE_CDR::Double &x) |
ACE_CDR::Boolean | write_longdouble (const ACE_CDR::LongDouble &x) |
ACE_CDR::Boolean | write_string (const ACE_CDR::Char *x) |
| For string we offer methods that accept a precomputed length. More...
|
ACE_CDR::Boolean | write_string (ACE_CDR::ULong len, const ACE_CDR::Char *x) |
ACE_CDR::Boolean | write_string (const ACE_CString &x) |
ACE_CDR::Boolean | write_wstring (const ACE_CDR::WChar *x) |
ACE_CDR::Boolean | write_wstring (ACE_CDR::ULong length, const ACE_CDR::WChar *x) |
|
ACE_CDR::Boolean | write_boolean_array (const ACE_CDR::Boolean *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_char_array (const ACE_CDR::Char *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_wchar_array (const ACE_CDR::WChar *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_octet_array (const ACE_CDR::Octet *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_short_array (const ACE_CDR::Short *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_ushort_array (const ACE_CDR::UShort *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_long_array (const ACE_CDR::Long *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_ulong_array (const ACE_CDR::ULong *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_longlong_array (const ACE_CDR::LongLong *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_ulonglong_array (const ACE_CDR::ULongLong *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_float_array (const ACE_CDR::Float *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_double_array (const ACE_CDR::Double *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_longdouble_array (const ACE_CDR::LongDouble *x, ACE_CDR::ULong length) |
ACE_CDR::Boolean | write_octet_array_mb (const ACE_Message_Block *mb) |
| Write an octet array contained inside a MB, this can be optimized to minimize copies. More...
|
|
ACE_CDR::Boolean | append_boolean (ACE_InputCDR &) |
ACE_CDR::Boolean | append_char (ACE_InputCDR &) |
ACE_CDR::Boolean | append_wchar (ACE_InputCDR &) |
ACE_CDR::Boolean | append_octet (ACE_InputCDR &) |
ACE_CDR::Boolean | append_short (ACE_InputCDR &) |
ACE_CDR::Boolean | append_ushort (ACE_InputCDR &) |
ACE_CDR::Boolean | append_long (ACE_InputCDR &) |
ACE_CDR::Boolean | append_ulong (ACE_InputCDR &) |
ACE_CDR::Boolean | append_longlong (ACE_InputCDR &) |
ACE_CDR::Boolean | append_ulonglong (ACE_InputCDR &) |
ACE_CDR::Boolean | append_float (ACE_InputCDR &) |
ACE_CDR::Boolean | append_double (ACE_InputCDR &) |
ACE_CDR::Boolean | append_longdouble (ACE_InputCDR &) |
ACE_CDR::Boolean | append_wstring (ACE_InputCDR &) |
ACE_CDR::Boolean | append_string (ACE_InputCDR &) |
Protected Attributes |
ACE_CDR::Octet | major_version_ |
| GIOP version information. More...
|
ACE_CDR::Octet | minor_version_ |
ACE_Char_Codeset_Translator * | char_translator_ |
| If not nil, invoke for translation of character and string data. More...
|
ACE_WChar_Codeset_Translator * | wchar_translator_ |
Private Methods |
| ACE_OutputCDR (const ACE_OutputCDR &rhs) |
| disallow copying... More...
|
ACE_OutputCDR & | operator= (const ACE_OutputCDR &rhs) |
ACE_CDR::Boolean | write_1 (const ACE_CDR::Octet *x) |
ACE_CDR::Boolean | write_2 (const ACE_CDR::UShort *x) |
ACE_CDR::Boolean | write_4 (const ACE_CDR::ULong *x) |
ACE_CDR::Boolean | write_8 (const ACE_CDR::ULongLong *x) |
ACE_CDR::Boolean | write_16 (const ACE_CDR::LongDouble *x) |
ACE_CDR::Boolean | write_array (const void *x, size_t size, size_t align, ACE_CDR::ULong length) |
| write an array of <length> elements, each of <size> bytes and the start aligned at a multiple of <align>. More...
|
int | grow_and_adjust (size_t size, size_t align, char *&buf) |
| Grow the CDR stream. More...
|
Private Attributes |
ACE_Message_Block | start_ |
| The start of the chain of message blocks. More...
|
ACE_Message_Block * | current_ |
| The current block in the chain were we are writing. More...
|
int | current_is_writable_ |
| Is the current block writable. More...
|
size_t | current_alignment_ |
| The current alignment as measured from the start of the buffer. More...
|
int | do_byte_swap_ |
| If not zero swap bytes at writing so the created CDR stream byte order does *not* match the machine byte order. More...
|
int | good_bit_ |
| Set to 0 when an error ocurrs. More...
|
size_t | memcpy_tradeoff_ |
| Break-even point for copying. More...
|
Friends |
class | ACE_Char_Codeset_Translator |
| The Codeset translators need access to some private members to efficiently marshal arrays For reading from an output CDR stream. More...
|
class | ACE_WChar_Codeset_Translator |
class | ACE_InputCDR |
This class is based on the the CORBA spec for Java (98-02-29), java class omg.org.CORBA.portable.OutputStream. It diverts in a few ways: + Operations taking arrays don't have offsets, because in C++ it is easier to describe an array starting from x+offset. + Operations return an error status, because exceptions are not widely available in C++ (yet).