// **********************************************************************
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, 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 unsigned long ServiceId;
struct ServiceContext
{
    ServiceId context_id;
    sequence<octet> context_data;
};
typedef sequence<ServiceContext> ServiceContextList;

const ServiceId TransactionService = 0;
const ServiceId CodeSets = 1;

}; // End module IOP

#endif
