TAO  2.2.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
TAO_OutputCDR Class Reference

A CDR stream for writing, i.e. for marshalling. More...

#include <CDR.h>

Inheritance diagram for TAO_OutputCDR:
Inheritance graph
Collaboration diagram for TAO_OutputCDR:
Collaboration graph

Public Types

typedef ACE_Hash_Map_Manager
< ACE_CString, char
*, ACE_Null_Mutex
Repo_Id_Map
 
typedef Repo_Id_Map Codebase_URL_Map
 
typedef ACE_Hash_Map_Manager
< void *, char
*, ACE_Null_Mutex
Value_Map
 
typedef
TAO_Intrusive_Ref_Count_Object
< Repo_Id_Map, ACE_Null_Mutex
RC_Repo_Id_Map
 
typedef
TAO_Intrusive_Ref_Count_Object
< Codebase_URL_Map,
ACE_Null_Mutex
RC_Codebase_URL_Map
 
typedef
TAO_Intrusive_Ref_Count_Object
< Value_Map, ACE_Null_Mutex
RC_Value_Map
 
typedef
TAO_Intrusive_Ref_Count_Handle
< RC_Repo_Id_Map
Repo_Id_Map_Handle
 
typedef
TAO_Intrusive_Ref_Count_Handle
< RC_Codebase_URL_Map
Codebase_URL_Map_Handle
 
typedef
TAO_Intrusive_Ref_Count_Handle
< RC_Value_Map
Value_Map_Handle
 

Public Member Functions

 TAO_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=0, ACE_CDR::Octet major_version=TAO_DEF_GIOP_MAJOR, ACE_CDR::Octet minor_version=TAO_DEF_GIOP_MINOR)
 
 TAO_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=0, ACE_CDR::Octet major_version=TAO_DEF_GIOP_MAJOR, ACE_CDR::Octet minor_version=TAO_DEF_GIOP_MINOR)
 
 TAO_OutputCDR (char *data, size_t size, int byte_order, ACE_Allocator *buffer_allocator, ACE_Allocator *data_block_allocator, ACE_Allocator *message_block_allocator, size_t memcpy_tradeoff, TAO_GIOP_Fragmentation_Strategy *fs, ACE_CDR::Octet major_version, ACE_CDR::Octet minor_version)
 
 TAO_OutputCDR (ACE_Message_Block *data, int byte_order=ACE_CDR_BYTE_ORDER, size_t memcpy_tradeoff=0, ACE_CDR::Octet major_version=TAO_DEF_GIOP_MAJOR, ACE_CDR::Octet minor_version=TAO_DEF_GIOP_MINOR)
 
 TAO_OutputCDR (ACE_Data_Block *data, int byte_order=ACE_CDR_BYTE_ORDER, ACE_Allocator *message_block_allocator=0, size_t memcpy_tradeoff=0, TAO_GIOP_Fragmentation_Strategy *fs=0, ACE_CDR::Octet major_version=TAO_DEF_GIOP_MAJOR, ACE_CDR::Octet minor_version=TAO_DEF_GIOP_MINOR)
 
 ~TAO_OutputCDR (void)
 Destructor. More...
 
void get_version (TAO_GIOP_Message_Version &giop_version)
 
Repo_Id_Map_Handleget_repo_id_map ()
 
Value_Map_Handleget_value_map ()
 
void set_repo_id_map (Repo_Id_Map_Handle &map)
 
void set_value_map (Value_Map_Handle &map)
 
void reset_vt_indirect_maps ()
 
int offset (char *pos)
 Calculate the offset between pos and current wr_ptr. More...
 
Outgoing GIOP Fragment Related Methods

These methods are only used when fragmenting outgoing GIOP requests and replies.

bool fragment_stream (ACE_CDR::ULong pending_alignment, ACE_CDR::ULong pending_length)
 Fragment this output CDR stream if necessary. More...
 
bool more_fragments (void) const
 Are there more data fragments to come? More...
 
void more_fragments (bool more)
 Specify whether there are more data fragments to come. More...
 
void message_attributes (CORBA::ULong request_id, TAO_Stub *stub, TAO_Message_Semantics message_semantics, ACE_Time_Value *timeout)
 Set fragmented message attributes. More...
 
CORBA::ULong request_id (void) const
 Fragmented message request ID. More...
 
TAO_Stubstub (void) const
 Stub object associated with the request. More...
 
TAO_Message_Semantics message_semantics (void) const
 Message semantics (twoway, oneway, reply) More...
 
ACE_Time_Valuetimeout (void) const
 Maximum time to wait for outgoing message to be sent. More...
 
- Public Member Functions inherited from ACE_OutputCDR
 ACE_OutputCDR (size_t size=0, int byte_order=ACE_CDR::BYTE_ORDER_NATIVE, 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)
 
 ACE_OutputCDR (char *data, size_t size, int byte_order=ACE_CDR::BYTE_ORDER_NATIVE, 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)
 
 ACE_OutputCDR (ACE_Data_Block *data_block, int byte_order=ACE_CDR::BYTE_ORDER_NATIVE, 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)
 
 ACE_OutputCDR (ACE_Message_Block *data, int byte_order=ACE_CDR::BYTE_ORDER_NATIVE, 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)
 
 ~ACE_OutputCDR (void)
 
bool good_bit (void) const
 
void reset (void)
 
size_t total_length (void) const
 
const ACE_Message_Blockbegin (void) const
 
const ACE_Message_Blockend (void) const
 
const ACE_Message_Blockcurrent (void) const
 
int consolidate (void)
 
const char * buffer (void) const
 
size_t length (void) const
 
int align_write_ptr (size_t alignment)
 
ACE_Char_Codeset_Translatorchar_translator (void) const
 
ACE_WChar_Codeset_Translatorwchar_translator (void) const
 
void char_translator (ACE_Char_Codeset_Translator *)
 
void wchar_translator (ACE_WChar_Codeset_Translator *)
 
size_t current_alignment (void) const
 
void current_alignment (size_t current_alignment)
 
int adjust (size_t size, char *&buf)
 
int adjust (size_t size, size_t align, char *&buf)
 
bool do_byte_swap (void) const
 
int byte_order (void) const
 
void reset_byte_order (int byte_order)
 
void set_version (ACE_CDR::Octet major, ACE_CDR::Octet minor)
 
void get_version (ACE_CDR::Octet &major, ACE_CDR::Octet &minor)
 
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)
 
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)
 
char * write_long_placeholder (void)
 
char * write_short_placeholder (void)
 
char * write_boolean_placeholder (void)
 
char * write_char_placeholder (void)
 
char * write_longlong_placeholder (void)
 
char * write_octet_placeholder (void)
 
char * write_float_placeholder (void)
 
char * write_double_placeholder (void)
 
ACE_CDR::Boolean replace (ACE_CDR::Long x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::ULong x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Short x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::UShort x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Boolean x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Char x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::LongLong x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::ULongLong x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Octet x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Float x, char *loc)
 
ACE_CDR::Boolean replace (ACE_CDR::Double x, char *loc)
 
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 &)
 

Static Public Member Functions

static void throw_stub_exception (int error_num)
 
static void throw_skel_exception (int error_num)
 
- Static Public Member Functions inherited from ACE_OutputCDR
static void wchar_maxbytes (size_t max_bytes)
 
static size_t wchar_maxbytes (void)
 

Private Member Functions

 TAO_OutputCDR (const TAO_OutputCDR &rhs)
 
TAO_OutputCDRoperator= (const TAO_OutputCDR &rhs)
 

Private Attributes

Repo_Id_Map_Handle repo_id_map_
 These maps are used by valuetype indirection support. More...
 
Value_Map_Handle value_map_
 
Outgoing GIOP Fragment Related Attributes

These attributes are only used when fragmenting outgoing GIOP requests and replies.

TAO_GIOP_Fragmentation_Strategy
*const 
fragmentation_strategy_
 
bool more_fragments_
 Are there more data fragments to come? More...
 
CORBA::ULong request_id_
 Request ID for the request currently being marshaled. More...
 
TAO_Stubstub_
 Stub object associated with the request. More...
 
TAO_Message_Semantics message_semantics_
 Twoway, oneway, reply? More...
 
ACE_Time_Valuetimeout_
 Request/reply send timeout. More...
 

Friends

class TAO_InputCDR
 For reading from a output CDR stream. More...
 

Additional Inherited Members

- Protected Attributes inherited from ACE_OutputCDR
ACE_CDR::Octet major_version_
 
ACE_CDR::Octet minor_version_
 
ACE_Char_Codeset_Translatorchar_translator_
 
ACE_WChar_Codeset_Translatorwchar_translator_
 
- Static Protected Attributes inherited from ACE_OutputCDR
static size_t wchar_maxbytes_
 

Detailed Description

A CDR stream for writing, i.e. for marshalling.

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:

Member Typedef Documentation

Constructor & Destructor Documentation

TAO_OutputCDR::TAO_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 = 0,
ACE_CDR::Octet  major_version = TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet  minor_version = TAO_DEF_GIOP_MINOR 
)

Default constructor, allocates size bytes in the internal buffer, if size == 0 it allocates the default size.

TAO_OutputCDR::TAO_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 = 0,
ACE_CDR::Octet  major_version = TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet  minor_version = TAO_DEF_GIOP_MINOR 
)

Build a CDR stream with an initial buffer, it will not remove data, since it did not allocated it.

TAO_OutputCDR::TAO_OutputCDR ( char *  data,
size_t  size,
int  byte_order,
ACE_Allocator buffer_allocator,
ACE_Allocator data_block_allocator,
ACE_Allocator message_block_allocator,
size_t  memcpy_tradeoff,
TAO_GIOP_Fragmentation_Strategy fs,
ACE_CDR::Octet  major_version,
ACE_CDR::Octet  minor_version 
)

Build a CDR stream with an initial buffer, it will not remove data since it did not allocated it, and enable fragmentation support.

TAO_OutputCDR::TAO_OutputCDR ( ACE_Message_Block data,
int  byte_order = ACE_CDR_BYTE_ORDER,
size_t  memcpy_tradeoff = 0,
ACE_CDR::Octet  major_version = TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet  minor_version = TAO_DEF_GIOP_MINOR 
)

Build a CDR stream with an initial Message_Block chain, it will not remove data, since it did not allocate it.

TAO_OutputCDR::TAO_OutputCDR ( ACE_Data_Block data,
int  byte_order = ACE_CDR_BYTE_ORDER,
ACE_Allocator message_block_allocator = 0,
size_t  memcpy_tradeoff = 0,
TAO_GIOP_Fragmentation_Strategy fs = 0,
ACE_CDR::Octet  major_version = TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet  minor_version = TAO_DEF_GIOP_MINOR 
)

Build a CDR stream with an initial data block, it will not remove data, since it did not allocated it.

TAO_OutputCDR::~TAO_OutputCDR ( void  )

Destructor.

TAO_OutputCDR::TAO_OutputCDR ( const TAO_OutputCDR rhs)
private

Member Function Documentation

bool TAO_OutputCDR::fragment_stream ( ACE_CDR::ULong  pending_alignment,
ACE_CDR::ULong  pending_length 
)

Fragment this output CDR stream if necessary.

Fragmentation will done through GIOP fragments when the length of the CDR stream length will exceed the configured threshold.

TAO_OutputCDR::Repo_Id_Map_Handle & TAO_OutputCDR::get_repo_id_map ( )

These methods are used by valuetype indirection support. Accessor to the indirect maps.

TAO_OutputCDR::Value_Map_Handle & TAO_OutputCDR::get_value_map ( )
void TAO_OutputCDR::get_version ( TAO_GIOP_Message_Version giop_version)
void TAO_OutputCDR::message_attributes ( CORBA::ULong  request_id,
TAO_Stub stub,
TAO_Message_Semantics  message_semantics,
ACE_Time_Value timeout 
)

Set fragmented message attributes.

TAO_Message_Semantics TAO_OutputCDR::message_semantics ( void  ) const

Message semantics (twoway, oneway, reply)

bool TAO_OutputCDR::more_fragments ( void  ) const

Are there more data fragments to come?

void TAO_OutputCDR::more_fragments ( bool  more)

Specify whether there are more data fragments to come.

int TAO_OutputCDR::offset ( char *  pos)

Calculate the offset between pos and current wr_ptr.

TAO_OutputCDR& TAO_OutputCDR::operator= ( const TAO_OutputCDR rhs)
private
CORBA::ULong TAO_OutputCDR::request_id ( void  ) const

Fragmented message request ID.

void TAO_OutputCDR::reset_vt_indirect_maps ( )

If indirect map is not nil and not empty, unbind all entries. Called after marshalling.

void TAO_OutputCDR::set_repo_id_map ( TAO_OutputCDR::Repo_Id_Map_Handle map)

Updater of the maps. These updaters are used to make indirect maps in original stream take effect even during marshalling/demarshalling a redirected stream.

void TAO_OutputCDR::set_value_map ( TAO_OutputCDR::Value_Map_Handle map)
TAO_Stub * TAO_OutputCDR::stub ( void  ) const

Stub object associated with the request.

void TAO_OutputCDR::throw_skel_exception ( int  error_num)
static
void TAO_OutputCDR::throw_stub_exception ( int  error_num)
static
ACE_Time_Value * TAO_OutputCDR::timeout ( void  ) const

Maximum time to wait for outgoing message to be sent.

Friends And Related Function Documentation

friend class TAO_InputCDR
friend

For reading from a output CDR stream.

Member Data Documentation

TAO_GIOP_Fragmentation_Strategy* const TAO_OutputCDR::fragmentation_strategy_
private

Strategy that sends data currently marshaled into this TAO_OutputCDR stream if necessary.

TAO_Message_Semantics TAO_OutputCDR::message_semantics_
private

Twoway, oneway, reply?

See Also
TAO_Transport
bool TAO_OutputCDR::more_fragments_
private

Are there more data fragments to come?

Repo_Id_Map_Handle TAO_OutputCDR::repo_id_map_
private

These maps are used by valuetype indirection support.

CORBA::ULong TAO_OutputCDR::request_id_
private

Request ID for the request currently being marshaled.

TAO_Stub* TAO_OutputCDR::stub_
private

Stub object associated with the request.

ACE_Time_Value* TAO_OutputCDR::timeout_
private

Request/reply send timeout.

Value_Map_Handle TAO_OutputCDR::value_map_
private

The documentation for this class was generated from the following files: