Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

# CORBA::NVList Class Reference

CORBA::NVList implementation. More...

`#include <NVList.h>`

Collaboration diagram for CORBA::NVList:

[legend]
List of all members.

## Public Types
typedef NVList_ptr | _ptr_type
typedef NVList_var | _var_type
## Public Member Functions
ULong | count (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
| return the current number of elements in the list
NamedValue_ptr | add (Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| add an element and just initialize the flags
NamedValue_ptr | add_item (const char *, Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| add an element and initialize its name and flags
NamedValue_ptr | add_value (const char *, const Any &, Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| initializes a value, name, and flags
NamedValue_ptr | add_item_consume (char *, Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
NamedValue_ptr | add_value_consume (char *, Any_ptr, Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
NamedValue_ptr | item (ULong n ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| retrieve the item at the nth location. Raises Bounds
void | remove (ULong n ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| remove element at index n. Raises Bounds
ULong | _incr_refcnt (void)
ULong | _decr_refcnt (void)
void | _tao_incoming_cdr (TAO_InputCDR &cdr, int flag, bool &lazy_evaluation ACE_ENV_ARG_DECL)
void | _tao_encode (TAO_OutputCDR &cdr, int flag ACE_ENV_ARG_DECL_WITH_DEFAULTS)
void | _tao_decode (TAO_InputCDR &cdr, int flag ACE_ENV_ARG_DECL)
| Decode the NVList arguments from the <cdr> stream.
ptrdiff_t | _tao_target_alignment (void)
Boolean | _lazy_has_arguments (void) const
## Static Public Member Functions
NVList * | _duplicate (NVList *)
NVList * | _nil (void)
## Protected Member Functions
| ~NVList (void)
| Destructor.
## Private Member Functions
| NVList (void)
NamedValue_ptr | add_element (Flags ACE_ENV_ARG_DECL_WITH_DEFAULTS)
void | evaluate (ACE_ENV_SINGLE_ARG_DECL)
## Private Attributes
ACE_Unbounded_Queue< NamedValue_ptr > | values_
| internal list of parameters stored as NamedValues
ULong | max_
| maximum length of list
ACE_Atomic_Op< TAO_SYNCH_MUTEX, ULong > | refcount_
| Reference counter.
TAO_SYNCH_MUTEX | lock_
| Protects the incoming pointer.
TAO_InputCDR * | incoming_
int | incoming_flag_
## Friends
class | ORB
class | Request

## Detailed Description

CORBA::NVList implementation.

This is used in the (client side) DII (Dynamic Invocation Interface) to hold parameters, except for the return parameter. It's used in the same role in the (server side) DSI (Dynamic Skeleton Interface).

Each user (client, server) provides the typecode and memory for each parameter using an NVList, then talks to the ORB using a Request or ServerRequest pseudo-object. The ORB copies data to/from the IPC messages (e.g. IIOP::Request, IIOP::Response) as appropriate.

## Member Typedef Documentation

typedef NVList_ptr CORBA::NVList::_ptr_type

typedef NVList_var CORBA::NVList::_var_type

## Constructor & Destructor Documentation

CORBA::NVList::~NVList | ( | void |  | ) | `[protected]`

| Destructor. Protected destructor to enforce proper memory management through the reference counting mechanism.

ACE_INLINE CORBA::NVList::NVList | ( | void |  | ) | `[private]`

| constructor - cannot be instantiated directly other than through the CORBA::ORB::create_list method

## Member Function Documentation

CORBA::ULong CORBA::NVList::_decr_refcnt | ( | void |  | ) |

ACE_INLINE CORBA::NVList * CORBA::NVList::_duplicate | ( | NVList * |  | ) | `[static]`

CORBA::ULong CORBA::NVList::_incr_refcnt | ( | void |  | ) |

CORBA::Boolean CORBA::NVList::_lazy_has_arguments | ( | void |  | ) | const

| If this list is used by a DII request, this will tell us if our CDR stream contains any marshaled arguments (needed for GIOP 1.2).

ACE_INLINE CORBA::NVList * CORBA::NVList::_nil | ( | void |  | ) | `[static]`

void CORBA::NVList::_tao_decode | ( | TAO_InputCDR & | cdr,
|  | int flag | ACE_ENV_ARG_DECL
| ) |

| Decode the NVList arguments from the <cdr> stream.

void CORBA::NVList::_tao_encode | ( | TAO_OutputCDR & | cdr,
|  | int flag | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| Encode the NVList into the CDR stream. <flag> masks the type of arguments (IN, OUT or INOUT) that are to be marshaled.

void CORBA::NVList::_tao_incoming_cdr | ( | TAO_InputCDR & | cdr,
|  | int | flag,
|  | bool &lazy_evaluation | ACE_ENV_ARG_DECL
| ) |

| Set the incoming CDR stream, this is used by TAO to perform lazy evaluation of the NVList in an incoming ServerRequest. The <flag> is used to check which parameters (IN, OUT and/or INOUT) are to be extracted

ptrdiff_t CORBA::NVList::_tao_target_alignment | ( | void |  | ) |

| Return the required alignment to marshal the NVList without any re-alignment. It returns ACE_CDR::MAX_ALIGNMENT to indicate errors.

NamedValue_ptr CORBA::NVList::add | ( | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS | ) |

| add an element and just initialize the flags

NamedValue_ptr CORBA::NVList::add_element | ( | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS | ) | `[private]`

| helper to increase the list size. This is used by all the add_ methods of the NVList class

NamedValue_ptr CORBA::NVList::add_item | ( | const char * | ,
|  | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| add an element and initialize its name and flags

NamedValue_ptr CORBA::NVList::add_item_consume | ( | char * | ,
|  | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| just like add_item. In addition, memory management of char * name is taken over by the NVList

NamedValue_ptr CORBA::NVList::add_value | ( | const char * | ,
|  | const Any & | ,
|  | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| initializes a value, name, and flags

NamedValue_ptr CORBA::NVList::add_value_consume | ( | char * | ,
|  | Any_ptr | ,
|  | Flags | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| just like add_value. In addition, the NVList controls the memory management of the char *name and Any *value parameter

ACE_INLINE CORBA::ULong CORBA::NVList::count | ( | ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS |  | ) | const

| return the current number of elements in the list

void CORBA::NVList::evaluate | ( | ACE_ENV_SINGLE_ARG_DECL |  | ) | `[private]`

| Lazy evaluation routine to fill up the Anys in the NVList from the CDR stream.

CORBA::NamedValue_ptr CORBA::NVList::item | ( | ULong n | ACE_ENV_ARG_DECL_WITH_DEFAULTS | ) |

| retrieve the item at the nth location. Raises Bounds

void CORBA::NVList::remove | ( | ULong n | ACE_ENV_ARG_DECL_WITH_DEFAULTS | ) |

| remove element at index n. Raises Bounds

## Friends And Related Function Documentation

friend class ORB`[friend]`

friend class Request`[friend]`

## Member Data Documentation

TAO_InputCDR* CORBA::NVList::incoming_`[private]`

| When the NVList is used as part of a Server Request we can simply store the CDR buffer and perform lazy evaluation to compute the Anys.

int CORBA::NVList::incoming_flag_`[private]`

| The flags used to check which parameters are actually extracted from the <incoming_> buffer

TAO_SYNCH_MUTEX CORBA::NVList::lock_`[private]`

| Protects the incoming pointer.

ULong CORBA::NVList::max_`[private]`

| maximum length of list

ACE_Atomic_Op<TAO_SYNCH_MUTEX, ULong> CORBA::NVList::refcount_`[private]`

| Reference counter.

ACE_Unbounded_Queue<NamedValue_ptr> CORBA::NVList::values_`[private]`

| internal list of parameters stored as NamedValues

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

- NVList.h
- NVList.cpp
- NVList.i