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

#ifndef OCI_CLIENT_IIOP_IDL
#define OCI_CLIENT_IIOP_IDL

#include <OB/OCIClient.idl>

#pragma prefix "ooc.com"

module OCI
{

/**
 *
 * This module contains interfaces to support the IIOP OCI plug-in.
 *
 **/

module IIOP
{

/** The identifier for the ORBacus IIOP plug-in. */
const PluginId PLUGIN_ID = "iiop";

/**
 *
 * Alias for an array of four octets.  This alias will be used
 * for address information from the various information classes.
 * The address will always be in network byte order.
 *
 **/

typedef octet InetAddr[4];

/**
 *
 * Information on an IIOP OCI Transport object.
 *
 * @see Transport
 * @see TransportInfo
 *
 **/

local interface TransportInfo : OCI::TransportInfo
{
    /** The local 32 bit IP address. */
    readonly attribute InetAddr addr;

    /** The local port. */
    readonly attribute unsigned short port;

    /** The remote 32 bit IP address. */
    readonly attribute InetAddr remote_addr;

    /** The remote port. */
    readonly attribute unsigned short remote_port;
};

/**
 *
 * Information on an IIOP OCI Connector object.
 *
 * @see Connector
 * @see ConnectorInfo
 *
 **/

local interface ConnectorInfo : OCI::ConnectorInfo
{
    /** The remote 32 bit IP address to which this connector connects. */
    readonly attribute InetAddr remote_addr;

    /** The remote port to which this connector connects. */
    readonly attribute unsigned short remote_port;
};

/**
 *
 * Information on an IIOP OCI Connector Factory object.
 *
 * @see ConFactory
 * @see ConFactoryInfo
 *
 **/

local interface ConFactoryInfo : OCI::ConFactoryInfo
{
};

}; // End module OCI::IIOP

}; // End module OCI

#endif
