mirror of
https://github.com/AdaCore/PolyORB.git
synced 2026-02-12 13:01:15 -08:00
implemented features. Patch submitted by Vadim Godunko, reviewed by Jerome Hugues. [Imported from Perforce change 9087 at 2006-12-01 21:14:11] Subversion-branch: /trunk/polyorb Subversion-revision: 36621
168 lines
6.2 KiB
Plaintext
168 lines
6.2 KiB
Plaintext
// File: MessageRouting.idl
|
|
// CORBA 3.0, Chapter 22
|
|
|
|
#ifndef _MESSAGE_ROUTING_IDL_
|
|
#define _MESSAGE_ROUTING_IDL_
|
|
|
|
#ifdef _PRE_3_0_COMPILER_
|
|
#pragma prefix "omg.org"
|
|
#include <orb.idl>
|
|
#include <GIOP.idl>
|
|
#include <IOP.idl>
|
|
#include <Messaging.idl>
|
|
#else
|
|
//PolyORB:NI:import ::CORBA;
|
|
//PolyORB:NI:import ::GIOP;
|
|
//PolyORB:NI:import ::IOP;
|
|
//PolyORB:NI:import ::Messaging;
|
|
#endif // _PRE_3_0_COMPILER_
|
|
|
|
//PolyORB:NI:module MessageRouting{
|
|
//PolyORB:NI:
|
|
//PolyORB:NI:#ifndef _PRE_3_0_COMPILER_
|
|
//PolyORB:NI: typeprefix MessageRouting "omg.org";
|
|
//PolyORB:NI:#endif // _PRE_3_0_COMPILER_
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: // Basic routing Interoperability
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface Router;
|
|
//PolyORB:NI: interface RouterAdmin;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: typedef sequence<Router> RouterList;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: struct MessageBody {
|
|
//PolyORB:NI: sequence<octet> body;
|
|
//PolyORB:NI: boolean byte_order;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: struct RequestMessage {
|
|
//PolyORB:NI: GIOP::Version giop_version;
|
|
//PolyORB:NI: IOP::ServiceContextList service_contexts;
|
|
//PolyORB:NI: octet response_flags;
|
|
//PolyORB:NI: octet reserved[3];
|
|
//PolyORB:NI: sequence<octet> object_key;
|
|
//PolyORB:NI: string operation;
|
|
//PolyORB:NI: MessageBody body;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: enum ReplyDisposition { TYPED, UNTYPED };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: struct ReplyDestination {
|
|
//PolyORB:NI: ReplyDisposition handler_type;
|
|
//PolyORB:NI: Messaging::ReplyHandler handler;
|
|
//PolyORB:NI: sequence<string> typed_excep_holder_repids;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: struct RequestInfo {
|
|
//PolyORB:NI: RouterList visited;
|
|
//PolyORB:NI: RouterList to_visit;
|
|
//PolyORB:NI: Object target;
|
|
//PolyORB:NI: unsigned short profile_index;
|
|
//PolyORB:NI: ReplyDestination reply_destination;
|
|
//PolyORB:NI: Messaging::PolicyValueSeq selected_qos;
|
|
//PolyORB:NI: RequestMessage payload;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: typedef sequence<RequestInfo> RequestInfoSeq;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface Router {
|
|
//PolyORB:NI: void send_request(in RequestInfo req);
|
|
//PolyORB:NI: void send_multiple_requests(in RequestInfoSeq reqSeq);
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: readonly attribute RouterAdmin admin;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: // Polling-related interfaces
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface UntypedReplyHandler : Messaging::ReplyHandler {
|
|
//PolyORB:NI: void reply(
|
|
//PolyORB:NI: in string operation_name,
|
|
//PolyORB:NI: in GIOP::ReplyStatusType reply_type,
|
|
//PolyORB:NI: in MessageBody reply_body);
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: exception ReplyNotAvailable { };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface PersistentRequest {
|
|
//PolyORB:NI: readonly attribute boolean reply_available;
|
|
//PolyORB:NI: GIOP::ReplyStatusType get_reply(
|
|
//PolyORB:NI: in boolean blocking,
|
|
//PolyORB:NI: in unsigned long timeout,
|
|
//PolyORB:NI: out MessageBody reply_body)
|
|
//PolyORB:NI: raises (ReplyNotAvailable);
|
|
//PolyORB:NI: attribute Messaging::ReplyHandler associated_handler;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface PersistentRequestRouter {
|
|
//PolyORB:NI: PersistentRequest create_persistent_request(
|
|
//PolyORB:NI: in unsigned short profile_index,
|
|
//PolyORB:NI: in RouterList to_visit,
|
|
//PolyORB:NI: in Object target,
|
|
//PolyORB:NI: in CORBA::PolicyList current_qos,
|
|
//PolyORB:NI: in RequestMessage payload);
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: // Router Administration
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: typedef short RegistrationState;
|
|
//PolyORB:NI: const RegistrationState NOT_REGISTERED = 0;
|
|
//PolyORB:NI: const RegistrationState ACTIVE = 1;
|
|
//PolyORB:NI: const RegistrationState SUSPENDED = 2;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: exception InvalidState{
|
|
//PolyORB:NI: RegistrationState registration_state;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype RetryPolicy supports CORBA::Policy { };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: const CORBA::PolicyType IMMEDIATE_SUSPEND_POLICY_TYPE = 36;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype ImmediateSuspend : RetryPolicy { };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: const CORBA::PolicyType UNLIMITED_PING_POLICY_TYPE = 37;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype UnlimitedPing : RetryPolicy {
|
|
//PolyORB:NI: public short max_backoffs;
|
|
//PolyORB:NI: public float backoff_factor;
|
|
//PolyORB:NI: public unsigned long base_interval_seconds;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: const CORBA::PolicyType LIMITED_PING_POLICY_TYPE = 38;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype LimitedPing : UnlimitedPing {
|
|
//PolyORB:NI: public unsigned long interval_limit;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: const CORBA::PolicyType DECAY_POLICY_TYPE = 39;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype DecayPolicy supports CORBA::Policy {
|
|
//PolyORB:NI: public unsigned long decay_seconds;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: const CORBA::PolicyType RESUME_POLICY_TYPE = 40;
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: valuetype ResumePolicy supports CORBA::Policy {
|
|
//PolyORB:NI: public unsigned long resume_seconds;
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI: interface RouterAdmin {
|
|
//PolyORB:NI: void register_destination(
|
|
//PolyORB:NI: in Object dest,
|
|
//PolyORB:NI: in boolean is_router,
|
|
//PolyORB:NI: in RetryPolicy retry,
|
|
//PolyORB:NI: in DecayPolicy decay);
|
|
//PolyORB:NI: void suspend_destination(
|
|
//PolyORB:NI: in Object dest,
|
|
//PolyORB:NI: in ResumePolicy resumption)
|
|
//PolyORB:NI: raises (InvalidState);
|
|
//PolyORB:NI: void resume_destination(
|
|
//PolyORB:NI: in Object dest)
|
|
//PolyORB:NI: raises (InvalidState);
|
|
//PolyORB:NI: void unregister_destination(
|
|
//PolyORB:NI: in Object dest)
|
|
//PolyORB:NI: raises (InvalidState);
|
|
//PolyORB:NI: };
|
|
//PolyORB:NI:
|
|
//PolyORB:NI:}; // module MessageRouting
|
|
#endif // _MESSAGE_ROUTING_IDL_
|