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

#ifndef PORTABLE_INTERCEPTOR_COMMON_IDL
#define PORTABLE_INTERCEPTOR_COMMON_IDL

#pragma prefix "omg.org"

#include <OB/Types.idl>

module PortableInterceptor
{

local interface Interceptor
{
    readonly attribute string name;
    void destroy();
};

exception ForwardRequest
{
    Object forward;
    boolean permanent;
};

typedef short ReplyStatus;

//
// Valid reply_status values
//
const ReplyStatus SUCCESSFUL = 0;
const ReplyStatus SYSTEM_EXCEPTION = 1;
const ReplyStatus USER_EXCEPTION = 2;
const ReplyStatus LOCATION_FORWARD = 3;
const ReplyStatus TRANSPORT_RETRY = 4;
const ReplyStatus UNKNOWN = 5; 

typedef unsigned long SlotId;

exception InvalidSlot
{
};

//
// new from orbos/00-12-01 ORT
//
typedef string ServerId;
typedef string ORBId;
typedef CORBA::StringSeq AdapterName;
typedef CORBA::OctetSeq ObjectId;

typedef long AdapterManagerId;

const short HOLDING	 = 0;
const short ACTIVE	 = 1;
const short DISCARDING	 = 2;
const short INACTIVE	 = 3;
const short NON_EXISTENT = 4;
typedef short AdapterState;

}; // End of module PortableInterceptor

#endif
