// File: Messaging.idl // CORBA 3.0, Chapter 22 #ifndef _MESSAGING_IDL_ #define _MESSAGING_IDL_ #ifdef _PRE_3_0_COMPILER_ #pragma prefix "omg.org" #include #include #include #include #else import ::CORBA; import ::Dynamic; import ::IOP; import ::TimeBase; #endif // _PRE_3_0_COMPILER_ // App developers should never have to use this IDL file. The ORB vendor // should supply an implementation language version of this file, and // that should be used by app developers if necessary. // Most IDL compilers don't accept the "native" keyword in application IDL // files. In order to compile an IDL (really PIDL) file that has it, the // following trick can be used: change what the compiler sees. Instead // of letting the compiler see the keyword "native", use a preprocessor // definition that results in valid IDL, even if it doesn't yield // useful stubs and skeletons. Of course, PIDL never results in // the standard stubs so that's not a problem. // // Set the variable _MASK_NATIVE_ in the IDL compiler to enable it to // parse this file. #ifdef _MASK_NATIVE_ #define native typedef long #endif // _MASK_NATIVE_ module Messaging { #ifndef _PRE_3_0_COMPILER_ typeprefix Messaging "omg.org"; #endif // _PRE_3_0_COMPILER_ typedef short RebindMode; const RebindMode TRANSPARENT = 0; const RebindMode NO_REBIND = 1; const RebindMode NO_RECONNECT = 2; typedef short SyncScope; const SyncScope SYNC_NONE = 0; const SyncScope SYNC_WITH_TRANSPORT = 1; const SyncScope SYNC_WITH_SERVER = 2; const SyncScope SYNC_WITH_TARGET = 3; typedef short RoutingType; const RoutingType ROUTE_NONE = 0; const RoutingType ROUTE_FORWARD = 1; const RoutingType ROUTE_STORE_AND_FORWARD =2; typedef short Priority; typedef unsigned short Ordering; const Ordering ORDER_ANY = 0x01; const Ordering ORDER_TEMPORAL = 0x02; const Ordering ORDER_PRIORITY = 0x04; const Ordering ORDER_DEADLINE = 0x08; // Rebind Policy (default = TRANSPARENT) const CORBA::PolicyType REBIND_POLICY_TYPE = 23; local interface RebindPolicy : CORBA::Policy { readonly attribute RebindMode rebind_mode; }; // Synchronization Policy (default = SYNC_WITH_TRANSPORT) const CORBA::PolicyType SYNC_SCOPE_POLICY_TYPE = 24; local interface SyncScopePolicy : CORBA::Policy { readonly attribute SyncScope synchronization; }; // Priority Policies const CORBA::PolicyType REQUEST_PRIORITY_POLICY_TYPE = 25; struct PriorityRange { Priority min; Priority max; }; local interface RequestPriorityPolicy : CORBA::Policy { readonly attribute PriorityRange priority_range; }; const CORBA::PolicyType REPLY_PRIORITY_POLICY_TYPE = 26; interface ReplyPriorityPolicy : CORBA::Policy { readonly attribute PriorityRange priority_range; }; // Timeout Policies const CORBA::PolicyType REQUEST_START_TIME_POLICY_TYPE = 27; local interface RequestStartTimePolicy : CORBA::Policy { readonly attribute TimeBase::UtcT start_time; }; const CORBA::PolicyType REQUEST_END_TIME_POLICY_TYPE = 28; local interface RequestEndTimePolicy : CORBA::Policy { readonly attribute TimeBase::UtcT end_time; }; const CORBA::PolicyType REPLY_START_TIME_POLICY_TYPE = 29; local interface ReplyStartTimePolicy : CORBA::Policy { readonly attribute TimeBase::UtcT start_time; }; const CORBA::PolicyType REPLY_END_TIME_POLICY_TYPE = 30; local interface ReplyEndTimePolicy : CORBA::Policy { readonly attribute TimeBase::UtcT end_time; }; const CORBA::PolicyType RELATIVE_REQ_TIMEOUT_POLICY_TYPE = 31; local interface RelativeRequestTimeoutPolicy : CORBA::Policy { readonly attribute TimeBase::TimeT relative_expiry; }; const CORBA::PolicyType RELATIVE_RT_TIMEOUT_POLICY_TYPE = 32; local interface RelativeRoundtripTimeoutPolicy : CORBA::Policy { readonly attribute TimeBase::TimeT relative_expiry; }; const CORBA::PolicyType ROUTING_POLICY_TYPE = 33; struct RoutingTypeRange { RoutingType min; RoutingType max; }; local interface RoutingPolicy : CORBA::Policy { readonly attribute RoutingTypeRange routing_range; }; const CORBA::PolicyType MAX_HOPS_POLICY_TYPE = 34; local interface MaxHopsPolicy : CORBA::Policy { readonly attribute unsigned short max_hops; }; // Router Delivery-ordering Policy (default = ORDER_TEMPORAL) const CORBA::PolicyType QUEUE_ORDER_POLICY_TYPE = 35; local interface QueueOrderPolicy : CORBA::Policy { readonly attribute Ordering allowed_orders; }; // Profile components through which policy values are expressed in IORs typedef CORBA::OctetSeq PolicyData; struct PolicyValue { CORBA::PolicyType ptype; PolicyData pvalue; }; typedef sequence PolicyValueSeq; typedef CORBA::OctetSeq MarshaledException; native UserExceptionBase; valuetype ExceptionHolder { void raise_exception() raises (UserExceptionBase); void raise_exception_with_list( in Dynamic::ExceptionList exc_list) raises (UserExceptionBase); private boolean is_system_exception; private boolean byte_order; private MarshaledException marshaled_exception; }; // For handling Routing interface ReplyHandler { }; // Generic Poller Valuetype abstract valuetype Poller : CORBA::Pollable { #ifndef _PRE_3_0_COMPILER_ typeid ::Messaging::Poller "IDL:omg.org/Messaging/Poller:3.1"; #else #pragma version Messaging::Poller 3.1 #endif _PRE_3_0_COMPILER_ readonly attribute Object operation_target; readonly attribute string operation_name; attribute ReplyHandler associated_handler; readonly attribute boolean is_from_poller; }; }; // module Messaging #endif // _MESSAGING_IDL_