/* This file contains OMG IDL from  CORBA V2.3.1
 * $Id: BiDirPolicy.idl,v 1.2 2001/09/22 14:51:13 jso Exp $	
 */ 

#ifndef __BiDirPolicy_IDL
#define __BiDirPolicy_IDL

#include <orb.idl>

#pragma prefix "omg.org"

// Self contained module for Bi-directional GIOP policy

module BiDirPolicy {

  typedef unsigned short BidirectionalPolicyValue;

  const BidirectionalPolicyValue NORMAL = 0;
  const BidirectionalPolicyValue BOTH = 1;

  const CORBA::PolicyType BIDIRECTIONAL_POLICY_TYPE = 37;

  interface BidirectionalPolicy : CORBA::Policy {
    readonly attribute BidirectionalPolicyValue value;
  };
};
