summaryrefslogtreecommitdiff
path: root/TAO/tao/Messaging.pidl
blob: 71f05360ae6906f11c6108167b6af191ed0dc8f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//
// $Id$
//
// ================================================================
//
// = LIBRARY
//   TAO
//
// = FILENAME
//   Policy.pidl
//
// = DESCRIPTION
//   This file was used to generate the code in Messaging{C,S,S_T}.{h,i,cpp}
//   The code is then hand-crafted to compile it inside the ORB, avoid
//   cyclic dependencies and enforce the locality constraints on
//   certain objects.
//
// ================================================================

#pragma prefix "omg.org"

#include "TimeBase.pidl"
#include "IOP.pidl"
#include "Policy.pidl"
#include "Pollable.pidl"

module Messaging
{
  //
  // Messaging Quality of Service
  //

  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 TimeBase::TimeT Timeout;

  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;

  //
  // Locally-Constrained Policy Objects
  //

  // Rebind Policy (default = TRANSPARENT)
  const CORBA::PolicyType REBIND_POLICY_TYPE = 23;
  interface RebindPolicy : CORBA::Policy {
    readonly attribute RebindMode rebind_mode;
  };

  // Synchronization Policy (default = WITH_TRANSPORT)
  const CORBA::PolicyType SYNC_SCOPE_POLICY_TYPE = 24;
  interface SyncScopePolicy : CORBA::Policy {
    readonly attribute SyncScope synchronization;
  };

  // Priority Policies
  const CORBA::PolicyType REQUEST_PRIORITY_POLICY_TYPE = 25;
  struct PriorityRange {
    Priority min;
    Priority max;
  };
  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;
  interface RequestStartTimePolicy : CORBA::Policy {
    readonly attribute TimeBase::UtcT start_time;
  };
  const CORBA::PolicyType REQUEST_END_TIME_POLICY_TYPE = 28;
  interface RequestEndTimePolicy : CORBA::Policy {
    readonly attribute TimeBase::UtcT end_time;
  };

  const CORBA::PolicyType REPLY_START_TIME_POLICY_TYPE = 29;
  interface ReplyStartTimePolicy : CORBA::Policy {
    readonly attribute TimeBase::UtcT start_time;
  };
  const CORBA::PolicyType REPLY_END_TIME_POLICY_TYPE = 30;
  interface ReplyEndTimePolicy : CORBA::Policy {
    readonly attribute TimeBase::UtcT end_time;
  };

  const CORBA::PolicyType RELATIVE_REQ_TIMEOUT_POLICY_TYPE = 31;
  interface RelativeRequestTimeoutPolicy : CORBA::Policy {
    readonly attribute TimeBase::TimeT relative_expiry;
  };

  const CORBA::PolicyType RELATIVE_RT_TIMEOUT_POLICY_TYPE = 32;
  interface RelativeRoundtripTimeoutPolicy : CORBA::Policy {
    readonly attribute TimeBase::TimeT relative_expiry;
  };

  const CORBA::PolicyType ROUTING_POLICY_TYPE = 33;
  struct RoutingTypeRange {
    RoutingType min;
    RoutingType max;
  };
  interface RoutingPolicy : CORBA::Policy {
    readonly attribute RoutingTypeRange routing_range;
  };

  const CORBA::PolicyType MAX_HOPS_POLICY_TYPE = 34;
  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;
  interface QueueOrderPolicy : CORBA::Policy {
    readonly attribute Ordering allowed_orders;
  };

  //
  // Propagation of QoS Policies
  //

  struct PolicyValue {
    CORBA::PolicyType ptype;
    sequence<octet>   pvalue;
  };
  typedef sequence<PolicyValue> PolicyValueSeq;

  const IOP::ComponentId TAG_POLICIES      = 2;
  const IOP::ServiceId INVOCATION_POLICIES = 2;

  //
  // Exception Delivery in the Callback Model
  //
#if defined(NO_VALUE)
  struct ExceptionHolder {
    boolean         is_system_exception;
    boolean         byte_order;
    sequence<octet> marshaled_exception;
  };
#else
  value ExceptionHolder {
    boolean         is_system_exception;
    boolean         byte_order;
    sequence<octet> marshaled_exception;
  };
#endif

  //
  // Base interface for the Callback model
  //

  interface ReplyHandler { };

  //
  // Base value for the Polling model
  //

#if defined(NO_VALUE)
  interface Poller : CORBA::Pollable {
    readonly attribute Object  operation_target;
    readonly attribute string  operation_name;

    attribute ReplyHandler     associated_handler;
    readonly attribute boolean is_from_poller;

    readonly attribute Object  target;
    readonly attribute string  op_name;
  };
#else
  value Poller supports CORBA::Pollable {
    readonly attribute Object  operation_target;
    readonly attribute string  operation_name;

    attribute ReplyHandler     associated_handler;
    readonly attribute boolean is_from_poller;

    Object                     target;
    string                     op_name;
  };
#endif
};

#pragma prefix ""