### Tags used in TAO

### Overview

The CORBA specification defines several tags, a.k.a. magic numbers, to distinguish between several otherwise opaque entities. For example, all profiles are transmitted as a CDR encapsulation (a sequence of octets), using a tag the type of the profile can be determined and the encapsulation can be properly interpreted.

To ensure that the tags uniquely indentify the entities in each namespace the OMG acts as an allocation authority, keeps a registry of the tags allocated so far and assigning the new tag values on demand. The process to request a tag is very simple, interested readers can consult this link for more details

We have reserved several tags for TAO, this page documents those tags and how they are used, some details are subject to change. We recommend that interested readers check the release notes

### List of TAGS

#### ORB Type ID

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | IIOP profiles contain a component list. One of the elements of this list (the `IOP::TAG_ORB_TYPE`) contains a identifier for the ORB that created the profile.

#### IOR Profile IDs

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | A TAO local IPC (aka Unix domain) profile.

The range `0x54414f01-0x54414f0f` (`"TAO\0x01"-"TAO\0x0f"`) is reserved for future use. Only for informational purposes we include the following list of potential uses:

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f01 | "TAO\0x01" | GIOP over ATM/AAL5
0x54414f02 | "TAO\0x02" | Shared memory transport
0x54414f03 | "TAO\0x03" | Message queue
0x54414f04 | "TAO\0x04" | UDP
0x54414f05 | "TAO\0x05" | IP multicast
0x54414f06 | "TAO\0x06" | Compact PCI bus
0x54414f07 | "TAO\0x07" | VME bus
0x54414f08 | "TAO\0x08" | NT named pipes
0x54414f09 | "TAO\0x09" | HTTP-NG
0x54414f0A | "TAO\0x0A" | Pipes (for collocated calls)

#### Service Context ID

The range `0x54414f00-0x54414f0f` (`"TAO\0x00"-"TAO\0x0f"`) is reserved for future use.

#### Component IDs

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54414f00 | "TAO\0x00" | Server side priority for the endpoint in this profile. The component is encoded a two shorts, the minimum and maximum priorities (in that order). The values correspond to the CORBA priorities defined in the real-time CORBA spec. The client will select the endpoint that matches its priorities and policies.

The range `0x54414f01-0x54414f0f` (`"TAO\0x00"-"TAO\0x0f"`) is reserved for future use.

#### Vendor Minor Code ID (VMCID)

Hex Value | ASCII Representation | Description
--- | --- | ---
0x54410000 | "TA\x00x00" | System exceptions thrown by TAO have their higher 20 bits set to `0x54410`, the other 12 bits are used to describe more precisely the cause of the exception. The lower 7 bits encode the errno that caused the exception, the 5 intermediate bits encode the location where the exception was raised.

The following list describes the current use of errno and location encodings:

TAO (7-bit) Error Code | Description | Value
--- | --- | ---
TAO_UNSPECIFIED_MINOR_CODE | Unspecified minor code | 0x00u
TAO_ETIMEDOUT_MINOR_CODE | Connection timed out | 0x01u
TAO_ENFILE_MINOR_CODE | Too many files open in system | 0x02u
TAO_EMFILE_MINOR_CODE | Too many open files | 0x03u
TAO_EPIPE_MINOR_CODE | Broken pipe | 0x04u
TAO_ECONNREFUSED_MINOR_CODE | Connection refused | 0x05u
TAO_ENOENT_MINOR_CODE | No such file or directory | 0x06u
TAO_EBADF_MINOR_CODE | Bad file descriptor | 0x07u
TAO_ENOSYS_MINOR_CODE | Function not implemented | 0x08u
TAO_EPERM_MINOR_CODE | Operation not permitted | 0x09u
TAO_EAFNOSUPPORT_MINOR_CODE | Protocol family not supported | 0x0au
TAO_EAGAIN_MINOR_CODE | Resource temporarily not available | 0x0bu
TAO_ENOMEM_MINOR_CODE | Not enough space | 0x0cu
TAO_EACCES_MINOR_CODE | Permission denied | 0x0du
TAO_EFAULT_MINOR_CODE | Bad address | 0x0eu
TAO_EBUSY_MINOR_CODE | Device or resource busy | 0x0fu
TAO_EEXIST_MINOR_CODE | File exists | 0x10u
TAO_EINVAL_MINOR_CODE | Invalid argument | 0x11u
TAO_ECOMM_MINOR_CODE | Communication error on send | 0x12u
TAO_ECONNRESET_MINOR_CODE | Connection reset | 0x13u
TAO_ENOTSUP_MINOR_CODE | Operation not supported | 0x14u

Please consult the documentation for your OS for more details about the errno meanings

TAO (5-bit) Location Code | Description | Value
--- | --- | ---
| No specific location details indicated | (0x00u << 7)
TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE | Location forward failed | (0x01u << 7)
TAO_INVOCATION_SEND_REQUEST_MINOR_CODE | Send request failed | (0x02u << 7)
TAO_POA_DISCARDING | POA in discarding state | (0x03u << 7)
TAO_POA_HOLDING | POA in holding state | (0x04u << 7)
TAO_UNHANDLED_SERVER_CXX_EXCEPTION | Unhandled C++ exception in server side | (0x05u << 7)
TAO_INVOCATION_RECV_REQUEST_MINOR_CODE | Failed to receive request response | (0x06u << 7)
TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL | All protocols failed to parse the IOR | (0x07u << 7)
TAO_MPROFILE_CREATION_ERROR | Error during MProfile creation | (0x08u << 7)
TAO_TIMEOUT_CONNECT_MINOR_CODE | Timeout during connect | (0x09u << 7)
TAO_TIMEOUT_SEND_MINOR_CODE | Timeout during send | (0x0au << 7)
TAO_TIMEOUT_RECV_MINOR_CODE | Timeout during receive | (0x0bu << 7)
TAO_IMPLREPO_MINOR_CODE | Implrepo server exception | (0x0cu << 7)
TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE | Endpoint initialization failure in Acceptor Registry | (0x0du << 7)
TAO_ORB_CORE_INIT_LOCATION_CODE | ORB core initialization failed | (0x0eu << 7)
TAO_POLICY_NARROW_CODE | Failure when narrowing a Policy | (0x0fu << 7)
TAO_GUARD_FAILURE | Failure when trying to acquire a guard/monitor | (0x10u << 7)
TAO_POA_BEING_DESTROYED | POA has been destroyed or is currently being destroyed | (0x11u << 7)
TAO_POA_INACTIVE | POA in inactive state | (0x12u << 7)
TAO_CONNECTOR_REGISTRY_INIT_LOCATION_CODE | Initialization failure in Connector Registry | (0x13u << 7)
TAO_AMH_REPLY_LOCATION_CODE | Failure when trying to send AHM reply | (0x14u << 7)
TAO_RTCORBA_THREAD_CREATION_LOCATION_CODE | Failure in thread creation for RTCORBA thread pool | (0x15u << 7)

Back to the TAO documentation.