diff options
Diffstat (limited to 'TAO/tao/ORB_Constants.h')
-rw-r--r-- | TAO/tao/ORB_Constants.h | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/TAO/tao/ORB_Constants.h b/TAO/tao/ORB_Constants.h new file mode 100644 index 00000000000..afa933dfdae --- /dev/null +++ b/TAO/tao/ORB_Constants.h @@ -0,0 +1,243 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file ORB_Constants.h + * + * $Id$ + * + * Constants needed by various files. + * + * @author Jeff Parsons + * @author Ossama Othman + */ +//============================================================================= + +#ifndef TAO_ORB_CONSTANTS_H +#define TAO_ORB_CONSTANTS_H + +#include /**/ "ace/pre.h" + +#include "tao/Basic_Types.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +// A hash define for the regular two way operation. +#define TAO_TWOWAY_RESPONSE_FLAG 255 + +namespace CORBA +{ + /// The OMG Vendor Minor Codeset ID (VMCID). + /** + * This number is reserved by the OMG as a prefix to all the + * standard system exception minor codes. Check the CORBA/IIOP + * specification for details. + * + * OMG defined system exception minor codes should be logically + * OR-ed with this constant when passing such minor codes to a + * @c CORBA::SystemException constructor. For example, throwing a + * @c CORBA::BAD_PARAM exception with an OMG defined minor code of + * @c 2 is done as follows: + * + * @verbatim + * throw (CORBA::BAD_PARAM (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); + * @endverbatim + * + * *NOT* as: + * + * @verbatim + * throw (CORBA::BAD_PARAM (2, CORBA::COMPLETED_NO); + * @endverbatim + */ + const ULong OMGVMCID = 0x4f4d0000U; +} + +namespace TAO +{ + /// TAO Vendor Minor Codeset ID (VMCID). + /** + * TAO Vendor Minor Codeset ID (VMCID) assigned by the OMG. Do + * *NOT* change at random. The TAO VMCID is an ASCII representation + * of @c TA0xxxx (close enough since a VMCID only consists of the + * higher order 20 bits of a 32 bit unsigned long integer). The + * first 16 bits are @c TA, and the remaining 4 are @c 0. + * + * @note Remember that we can only play with the lower order 12 + * bits. @c MAX_MINOR_CODE is there to remind us of that. + * + * @see @c MAX_MINOR_CODE + */ + const CORBA::ULong VMCID = 0x54410000U; + + /// Maximum allowed TAO system exception minor code. + /** + * Vendors are only allowed to use the lower order 12 bits of their + * when defining vendor-specific exception minor codes. + * @c MAX_MINOR_CODE is the maximum minor code value available to + * TAO. Do not exceed it when defining TAO system exception minor + * codes. + * + * @see @c VMCID + */ + const CORBA::ULong MAX_MINOR_CODE = VMCID | 0xfffU; + + /// TAO Vendor @c PolicyType Valueset ID (VPVID) + /** + * TAO Vendor @c PolicyType Valueset ID (VPVID) assigned by the + * OMG. This value was automatically assigned when TAO's VMCID was + * assigned. Its value is always the same as the VMCID. + * + * As with TAO-specific system exception minor codes, the + * TAO-specific @c PolicyType space occupies the lower order 12 bits + * of the TAO VPVID, i.e. + * + * @verbatim + * TAO::VPVID <= TAO PolicyType <= TAO::VPVID | 0xfffU. + * @endverbatim + * + * For example, TAO-specific @c PolicyTypes should be defined by + * logically "OR-ing" a 12 bit or less (i.e. 0x0U <= value <= + * 0xfffU) value with @c TAO::VPVID. + * + * @see VMCID + */ + const CORBA::ULong VPVID = VMCID; +} + +/** + * @name TAO-Specific System Exception Minor Code Values + * + * These system exception minor code values are specific to TAO. + */ +//@{ +/// TAO VMCID assigned by the OMG. +#if !defined (ACE_LACKS_DEPRECATED_MACROS) + /** + * @note This constant has historically been used in the wrong way. + * It was often used as the @a location argument to the @c + * CORBA::SystemException::_tao_minor_code() static method. A + * more appropriate default @a location argument/value would + * have been zero since the location code resides in portion of + * the lower order 12 bits, not the higher order 20 bits which + * is where the VMCID resides, and what this value happens to + * be. + * + * @deprecated Please use @c TAO::VMCID instead, or zero if being used + * as default TAO exception location code argument. + * + * @see @c TAO::VMCID + */ + const CORBA::ULong TAO_DEFAULT_MINOR_CODE = TAO::VMCID; +#endif /* !ACE_LACKS_DEPRECATED_MACROS */ + +#if !defined (ACE_LACKS_DEPRECATED_MACROS) + /// Maximum allowed system exception minor code. + /** + * @deprecated Please use @c TAO::MAX_MINOR_CODE instead. + * + * @see @c TAO::MAX_MINOR_CODE + */ + const CORBA::ULong TAO_MAX_MINOR_CODE = TAO::MAX_MINOR_CODE; +#endif /* !ACE_LACKS_DEPRECATED_MACROS */ +//@} + +/// A dummy service context that is inserted in the service context +/// list to preserve the alignment in DSI based gateways, so no +/// marshaling/demarshaling is required. +/** + * @note This is *extremely* brittle but works. + */ +const CORBA::ULong TAO_SVC_CONTEXT_ALIGN = 0x54414f00U; + +/** + * @name TAO-Specific Profile IDs + * + * The TAO @c IOP::ProfileId range @c 0x54414f00 - @c 0x54414f0f has + * been reserved with the OMG. + * + * @note It is *NOT* necessary to list your own protocols here. + * + * @note The values below are subject to change at any point. + */ +//@{ +/// Local IPC (Unix Domain) +const CORBA::ULong TAO_TAG_UIOP_PROFILE = 0x54414f00U; + +/// ATM/AAL5 +// const CORBA::ULong TAO_TAG_AIOP_PROFILE = 0x54414f01U; + +/// Shared memory +const CORBA::ULong TAO_TAG_SHMEM_PROFILE = 0x54414f02U; + +/// Message Queue +// const CORBA::ULong TAO_TAG_MSGQ_PROFILE = 0x54414f03U; + +/// UDP +const CORBA::ULong TAO_TAG_DIOP_PROFILE = 0x54414f04U; + +/// COIOP +const CORBA::ULong TAO_TAG_COIOP_PROFILE = 0x54414f05U; + +/// SCIOP +const CORBA::ULong TAO_TAG_SCIOP_PROFILE = 0x54414f0EU; + +/// Tandem (HP) File System Protocol +const CORBA::ULong TAO_TAG_NSKFS_PROFILE = 0x00003039U; + +/// Tandem (HP) Pathsend Protocol +const CORBA::ULong TAO_TAG_NSKPW_PROFILE = 0x0000303AU; + +// Default DiffServ CodePoint. +const int IPDSFIELD_DSCP_DEFAULT = 0x00; + +/** + * @name Minor Code Encoding + * + * Encode the location in 5 bits, and the errno in 7 bits: + * + * @verbatim + * 0x 0101 0100 0100 0001 0000 ____ _ ___ ____ + * T A 0 location errno + * @endverbatim + **/ +//@{ +/** + * @name Location Encoding + * + * The location encoding is the 5 bits, after the @ errno encoding. + */ +//@{ +const CORBA::ULong TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE = (0x01U << 7); +const CORBA::ULong TAO_INVOCATION_SEND_REQUEST_MINOR_CODE = (0x02U << 7); +const CORBA::ULong TAO_POA_DISCARDING = (0x03U << 7); +const CORBA::ULong TAO_POA_HOLDING = (0x04U << 7); +const CORBA::ULong TAO_UNHANDLED_SERVER_CXX_EXCEPTION = (0x05U << 7); +const CORBA::ULong TAO_INVOCATION_RECV_REQUEST_MINOR_CODE = (0x06U << 7); +const CORBA::ULong TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL = (0x07U << 7); +const CORBA::ULong TAO_MPROFILE_CREATION_ERROR = (0x08U << 7); +const CORBA::ULong TAO_TIMEOUT_CONNECT_MINOR_CODE = (0x09U << 7); +const CORBA::ULong TAO_TIMEOUT_SEND_MINOR_CODE = (0x0AU << 7); +const CORBA::ULong TAO_TIMEOUT_RECV_MINOR_CODE = (0x0BU << 7); +const CORBA::ULong TAO_IMPLREPO_MINOR_CODE = (0x0CU << 7); +const CORBA::ULong TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE = (0x0DU << 7); +const CORBA::ULong TAO_ORB_CORE_INIT_LOCATION_CODE = (0x0EU << 7); +const CORBA::ULong TAO_POLICY_NARROW_CODE = (0x0FU << 7); +const CORBA::ULong TAO_GUARD_FAILURE = (0x10U << 7); +const CORBA::ULong TAO_POA_BEING_DESTROYED = (0x11U << 7); +const CORBA::ULong TAO_POA_INACTIVE = (0x12U << 7); +const CORBA::ULong TAO_CONNECTOR_REGISTRY_INIT_LOCATION_CODE = (0x13U << 7); +const CORBA::ULong TAO_AMH_REPLY_LOCATION_CODE = (0x14U << 7); +const CORBA::ULong TAO_RTCORBA_THREAD_CREATION_LOCATION_CODE = (0x15U << 7); +// *Don't* use TAO_<location>_MINOR_CODE greater than 0x1FU! +//@} +//@} + +TAO_END_VERSIONED_NAMESPACE_DECL + +#include /**/ "ace/post.h" + +#endif /* TAO_ORB_CONSTANTS_H */ |