IceStormInternal.ice
Go to the documentation of this file.
1 // **********************************************************************
2 //
3 // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
4 //
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
7 //
8 // **********************************************************************
9 
10 #pragma once
11 
12 [["ice-prefix", "cpp:header-ext:h"]]
13 
14 #include <IceStorm/IceStorm.ice>
15 #include <IceStorm/Election.ice>
16 #include <Ice/Current.ice>
17 #include <Ice/BuiltinSequences.ice>
18 #include <Ice/Identity.ice>
19 
20 [["cpp:include:deque"]]
21 
22 module IceStorm
23 {
24 
25 /**
26  *
27  * The event data.
28  *
29  **/
30 ["cpp:class"] struct EventData
31 {
32  /** The operation name. */
33  string op;
34  /** The operation mode. */
35  Ice::OperationMode mode;
36  /** The encoded data for the operation's input parameters. */
37  Ice::ByteSeq data;
38  /** The Ice::Current::Context data from the originating request. */
39  Ice::Context context;
40 }
41 
42 local exception SendQueueSizeMaxReached
43 {
44 }
45 
46 /** A sequence of EventData. */
47 ["cpp:type:std::deque< ::IceStorm::EventDataPtr>"] sequence<EventData> EventDataSeq;
48 
49 /**
50  *
51  * The TopicLink interface. This is used to forward events between
52  * federated Topic instances.
53  *
54  * @see TopicInternal
55  *
56  **/
57 interface TopicLink
58 {
59  /**
60  *
61  * Forward a sequence of events.
62  *
63  * @param events The events to forward.
64  *
65  **/
66  void forward(EventDataSeq events);
67 }
68 
69 /** Thrown if the reap call would block. */
70 exception ReapWouldBlock
71 {
72 }
73 
74 /**
75  *
76  * Internal operations for a topic.
77  *
78  * @see Topic
79  *
80  **/
81 interface TopicInternal extends Topic
82 {
83  /**
84  *
85  * Retrieve a proxy to the TopicLink interface.
86  *
87  * @return The TopicLink for the Topic.
88  *
89  **/
90  idempotent TopicLink* getLinkProxy();
91 
92  /**
93  *
94  * Reap the given identities.
95  *
96  * @param id The sequence of identities.
97  *
98  * @throws ReapWouldBlock Raised if the reap call would block.
99  *
100  **/
101  void reap(Ice::IdentitySeq id) throws ReapWouldBlock;
102 }
103 
104 /**
105  *
106  * Internal operations for a topic manager.
107  *
108  * @see TopicManager
109  *
110  **/
111 interface TopicManagerInternal extends TopicManager
112 {
113  /**
114  *
115  * Return the replica node proxy for this topic manager.
116  *
117  * @return The replica proxy, or null if this instance is not
118  * replicated.
119  *
120  **/
121  ["cpp:const"] idempotent IceStormElection::Node* getReplicaNode();
122 }
123 
124 } // End module IceStorm
IceStorm
Definition: DBTypes.ice:22
IceStorm::EventData::op
string op
The operation name.
Definition: IceStormInternal.ice:33
IceStorm::EventDataSeq
std::deque< ::IceStorm::EventDataPtr > EventDataSeq
A sequence of EventData.
Definition: IceStormInternal.h:463
IceStorm::EventData::mode
Ice::OperationMode mode
The operation mode.
Definition: IceStormInternal.ice:35
IceStorm::EventData::context
Ice::Context context
The Ice::Current::Context data from the originating request.
Definition: IceStormInternal.ice:39
IceStormElection::Node
A replica node.
Definition: Election.ice:202
IceStorm::EventData::data
Ice::ByteSeq data
The encoded data for the operation's input parameters.
Definition: IceStormInternal.ice:37
Election.ice
IceStorm::SendQueueSizeMaxReached
Definition: IceStormInternal.h:451