summaryrefslogtreecommitdiff
path: root/TAO/tao/Messaging.pidl
blob: 98383e4f3a38f2daea813884effe887b282cbe7a (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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
// -*- IDL -*-

//=============================================================================
/**
 *  @file   Messaging.pidl
 *
 *  $Id$
 *
 * This file was used to generate the code in Messaging{C,S,S_T}.{h,i,cpp}
 *
 * The command used to generate code from this file is:
 *
 *   tao_idl.exe
 *        -o orig -Gp -Gd -Ge 1 -Gv
 *        -Wb,export_macro=TAO_Export
 *        -Wb,export_include=TAO_Export.h
 *        -Wb,pre_include="ace/pre.h"
 *        -Wb,post_include="ace/post.h"
 *        Messaging.pidl
 *
 * after the file is generated a patch must be applied.  The patch
 * fixes the interface repository IDs, disables the code under
 * certain configurations, and eliminates cycles in the include
 * dependencies.  Those changes are required because the generated
 * code is part of the TAO library, it hardly makes any sense to
 * change the IDL compiler to support changes that are very
 * occasional.
 *
 *
 */
//=============================================================================


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

#pragma prefix "omg.org"

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;

  // = TAO specific.
  const SyncScope SYNC_EAGER_BUFFERING   = SYNC_NONE;
  const SyncScope SYNC_DELAYED_BUFFERING = -2;

  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;
  local interface RebindPolicy : CORBA::Policy {
    readonly attribute RebindMode rebind_mode;
  };

  // Synchronization Policy (default = 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;
  local 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;
  };

  //
  // 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
  valuetype ExceptionHolder {
    public boolean         is_system_exception;
    public boolean         byte_order;
    public sequence<octet> marshaled_exception;
  };
#endif

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

  interface ReplyHandler { };

#if 0
  //
  // Base value for the Polling model
  //

#if defined(NO_VALUE)
  local 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
  valuetype Poller supports CORBA_Pollable {
    readonly attribute Object  operation_target;
    readonly attribute string  operation_name;

    attribute ReplyHandler     associated_handler;
    readonly attribute boolean is_from_poller;

    public Object                     target;
    public string                     op_name;
  };
#endif
#endif /* 0 */
};

#pragma prefix ""