|
TAO
2.0.3
|
A CDR stream for writing, i.e. for marshalling. More...
#include <CDR.h>

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. | |
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. | |
| 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_ |
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? | |
| 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.
| typedef TAO_Intrusive_Ref_Count_Object<Codebase_URL_Map, ACE_Null_Mutex> TAO_OutputCDR::RC_Codebase_URL_Map |
| typedef ACE_Hash_Map_Manager<ACE_CString, char*, ACE_Null_Mutex> TAO_OutputCDR::Repo_Id_Map |
| typedef ACE_Hash_Map_Manager<void*, char*, ACE_Null_Mutex> TAO_OutputCDR::Value_Map |
| 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] |
| 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.
These methods are used by valuetype indirection support. Accessor to the indirect maps.
| 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.
If indirect map is not nil and not empty, unbind all entries. Called after marshalling.
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.
friend class TAO_InputCDR [friend] |
For reading from a output CDR stream.
TAO_GIOP_Fragmentation_Strategy* const TAO_OutputCDR::fragmentation_strategy_ [private] |
Strategy that sends data currently marshaled into this TAO_OutputCDR stream if necessary.
Twoway, oneway, reply?
bool TAO_OutputCDR::more_fragments_ [private] |
Are there more data fragments to come?
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] |
1.7.6.1