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.  
  | 
| void  | get_version (TAO_GIOP_Message_Version &giop_version) | 
| Repo_Id_Map_Handle &  | get_repo_id_map () | 
| Value_Map_Handle &  | get_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.  
  | 
 | 
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.  
  | 
| bool  | more_fragments (void) const  | 
|   | Are there more data fragments to come?  
  | 
| void  | more_fragments (bool more) | 
|   | Specify whether there are more data fragments to come.  
  | 
| void  | message_attributes (CORBA::ULong request_id, TAO_Stub *stub, TAO_Message_Semantics message_semantics, ACE_Time_Value *timeout) | 
|   | Set fragmented message attributes.  
  | 
| CORBA::ULong  | request_id (void) const  | 
|   | Fragmented message request ID.  
  | 
| TAO_Stub *  | stub (void) const  | 
|   | Stub object associated with the request.  
  | 
| TAO_Message_Semantics  | message_semantics (void) const  | 
|   | Message semantics (twoway, oneway, reply)  
  | 
| ACE_Time_Value *  | timeout (void) const  | 
|   | Maximum time to wait for outgoing message to be sent.  
  | 
Static Public Member Functions | 
| static void  | throw_stub_exception (int error_num) | 
| static void  | throw_skel_exception (int error_num) | 
Private Member Functions | 
|   | TAO_OutputCDR (const TAO_OutputCDR &rhs) | 
| TAO_OutputCDR &  | operator= (const TAO_OutputCDR &rhs) | 
Private Attributes | 
| Repo_Id_Map_Handle  | repo_id_map_ | 
|   | These maps are used by valuetype indirection support.  
  | 
| Value_Map_Handle  | value_map_ | 
 | 
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?  
  | 
| CORBA::ULong  | request_id_ | 
|   | Request ID for the request currently being marshaled.  
  | 
| TAO_Stub *  | stub_ | 
|   | Stub object associated with the request.  
  | 
| TAO_Message_Semantics  | message_semantics_ | 
|   | Twoway, oneway, reply?  
  | 
| ACE_Time_Value *  | timeout_ | 
|   | Request/reply send timeout.  
  | 
Friends | 
| class  | TAO_InputCDR | 
|   | For reading from a output CDR stream.  
  | 
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:
- 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). A particularly useful static member function for this buffer is an interpretive encoding routine, usable as a typecode interpreter callback. Ditto for decoding. These are used to support all OMG-IDL datatypes, even those not supported directly by put/get primitives.