// **********************************************************************
//
// Copyright (c) 2002
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

#ifndef IOP_IDL
#define IOP_IDL

#pragma prefix "omg.org"

module IOP
{

typedef unsigned long ProfileId;
const ProfileId TAG_INTERNET_IOP = 0;
const ProfileId TAG_MULTIPLE_COMPONENTS = 1;

struct TaggedProfile
{
    ProfileId tag;
    sequence<octet> profile_data;
};

struct IOR
{
    string type_id;
    sequence<TaggedProfile> profiles;
};

typedef unsigned long ComponentId;
struct TaggedComponent
{
    ComponentId tag;
    sequence<octet> component_data;
};
typedef sequence<TaggedComponent> MultipleComponentProfile;

typedef sequence<TaggedComponent> TaggedComponentSeq;

const ComponentId TAG_ORB_TYPE = 0;
const ComponentId TAG_CODE_SETS = 1;
const ComponentId TAG_POLICIES = 2;
const ComponentId TAG_ALTERNATE_IIOP_ADDRESS = 3;

const ComponentId TAG_ASSOCIATION_OPTIONS = 13;
const ComponentId TAG_SEC_NAME = 14;
const ComponentId TAG_SPKM_1_SEC_MECH = 15;
const ComponentId TAG_SPKM_2_SEC_MECH = 16;
const ComponentId TAG_KerberosV5_SEC_MECH = 17;
const ComponentId TAG_CSI_ECMA_Secret_SEC_MECH = 18;
const ComponentId TAG_CSI_ECMA_Hybrid_SEC_MECH = 19;
const ComponentId TAG_SSL_SEC_TRANS = 20;
const ComponentId TAG_CSI_ECMA_Public_SEC_MECH = 21;
const ComponentId TAG_GENERIC_SEC_MECH = 22;
const ComponentId TAG_JAVA_CODEBASE = 25;

const ComponentId TAG_COMPLETE_OBJECT_KEY = 5;
const ComponentId TAG_ENDPOINT_ID_POSITION = 6;
const ComponentId TAG_LOCATION_POLICY = 12;
const ComponentId TAG_DCE_STRING_BINDING = 100;
const ComponentId TAG_DCE_BINDING_NAME = 101;
const ComponentId TAG_DCE_NO_PIPES = 102;
const ComponentId TAG_DCE_SEC_MECH = 103; // Security Service

typedef unsigned long ServiceId;
struct ServiceContext
{
    ServiceId context_id;
    sequence<octet> context_data;
};
typedef sequence<ServiceContext> ServiceContextList;

const ServiceId TransactionService = 0;
const ServiceId CodeSets = 1;
const ServiceId ChainBypassCheck = 2;
const ServiceId ChainBypassInfo = 3;
const ServiceId LogicalThreadId = 4;
const ServiceId BI_DIR_IIOP = 5;
const ServiceId SendingContextRunTime = 6;
const ServiceId INVOCATION_POLICIES = 7;
const ServiceId FORWARDED_IDENTITY = 8;
const ServiceId UnknownExceptionInfo = 9;

}; // End module IOP

#endif
