// **********************************************************************
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

#ifndef OCI_IIOP_IDL
#define OCI_IIOP_IDL

#include <OCI.idl>

//
// TODO: Currently we need this to force OCIInfo.h to include GIOP.h
//
#include <GIOP.idl>

#pragma prefix "ooc.com"

module OCI
{

/**
 *
 * This module contains interfaces to gather information on the IIOP
 * OCI plug-in.
 *
 **/

module 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
 *
 **/

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
 *
 **/

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 Acceptor object.
 *
 * @see Acceptor
 * @see AcceptorInfo
 *
 **/

interface AcceptorInfo : OCI::AcceptorInfo
{
    /** Hostname used for creation of IIOP object references. */
    readonly attribute string host;

    /** The local 32 bit IP address on which this acceptor accepts. */
    readonly attribute InetAddr addr;

    /** The local port on which this acceptor accepts. */
    readonly attribute unsigned short port;
};

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

interface ConFactoryInfo : OCI::ConFactoryInfo
{
};

}; // End module OCI::IIOP

}; // End module OCI

#endif
