Ice 3.7 Slice API Reference
IceStorm.ice
Go to the documentation of this file.
1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #pragma once
6 
7 [["cpp:dll-export:ICESTORM_API"]]
8 [["cpp:doxygen:include:IceStorm/IceStorm.h"]]
9 [["cpp:header-ext:h"]]
10 [["cpp:include:IceStorm/Config.h"]]
11 
12 [["ice-prefix"]]
13 
14 [["js:module:ice"]]
15 [["js:cjs-module"]]
16 
17 [["objc:dll-export:ICESTORM_API"]]
18 [["objc:header-dir:objc"]]
19 
20 [["python:pkgdir:IceStorm"]]
21 
22 #include <Ice/Identity.ice>
24 
25 #include <IceStorm/Metrics.ice>
26 
27 #ifndef __SLICE2JAVA_COMPAT__
28 [["java:package:com.zeroc"]]
29 #endif
30 
39 ["objc:prefix:ICESTORM"]
40 module IceStorm
41 {
42 
43 interface Topic;
44 
50 struct LinkInfo
51 {
58 
64  string name;
65 
71  int cost;
72 }
73 
79 sequence<LinkInfo> LinkInfoSeq;
80 
88 dictionary<string, string> QoS;
89 
96 exception LinkExists
97 {
103  string name;
104 }
105 
112 exception NoSuchLink
113 {
119  string name;
120 }
121 
129 {
130 }
131 
139 {
145  string reason;
146 }
147 
154 exception BadQoS
155 {
161  string reason;
162 }
163 
172 interface Topic
173 {
183  ["nonmutating", "cpp:const"] idempotent string getName();
184 
196  ["nonmutating", "cpp:const"] idempotent Object* getPublisher();
197 
208  ["nonmutating", "cpp:const"] idempotent Object* getNonReplicatedPublisher();
209 
233  Object* subscribeAndGetPublisher(QoS theQoS, Object* subscriber)
235 
245  idempotent void unsubscribe(Object* subscriber);
246 
260  void link(Topic* linkTo, int cost) throws LinkExists;
261 
271  void unlink(Topic* linkTo) throws NoSuchLink;
272 
280  ["nonmutating", "cpp:const"] idempotent LinkInfoSeq getLinkInfoSeq();
281 
289  ["nonmutating", "cpp:const"] Ice::IdentitySeq getSubscribers();
290 
296  void destroy();
297 }
298 
304 dictionary<string, Topic*> TopicDict;
305 
312 exception TopicExists
313 {
319  string name;
320 }
321 
328 exception NoSuchTopic
329 {
335  string name;
336 }
337 
345 interface TopicManager
346 {
359  Topic* create(string name) throws TopicExists;
360 
372  ["nonmutating", "cpp:const"] idempotent Topic* retrieve(string name) throws NoSuchTopic;
373 
381  ["nonmutating", "cpp:const"] idempotent TopicDict retrieveAll();
382 
390  ["nonmutating", "cpp:const"] idempotent Ice::SliceChecksumDict getSliceChecksums();
391 }
392 
401 interface Finder
402 {
412 }
413 
414 }
IceStorm::BadQoS::reason
string reason
The reason for the failure.
Definition: IceStorm.ice:161
IceStorm::TopicManager::getSliceChecksums
idempotent Ice::SliceChecksumDict getSliceChecksums()
Returns the checksums for the IceStorm Slice definitions.
IceStorm
A messaging service with support for federation.
Definition: IceStorm.ice:41
IceStorm::Finder
This inferface is advertised by the IceStorm service through the Ice object with the identity `IceSto...
Definition: IceStorm.ice:402
IceStorm::LinkInfo::name
string name
The name of the linked topic.
Definition: IceStorm.ice:64
IceStorm::TopicExists
This exception indicates that an attempt was made to create a topic that already exists.
Definition: IceStorm.ice:313
IceStorm::Finder::getTopicManager
TopicManager * getTopicManager()
Get the topic manager proxy.
IceStorm::TopicDict
dictionary< string, Topic > TopicDict
Mapping of topic name to topic proxy.
Definition: IceStorm.ice:304
IceStorm::AlreadySubscribed
This exception indicates that an attempt was made to subscribe a proxy for which a subscription alrea...
Definition: IceStorm.ice:129
IceStorm::NoSuchTopic
This exception indicates that an attempt was made to retrieve a topic that does not exist.
Definition: IceStorm.ice:329
IceStorm::Topic::getLinkInfoSeq
idempotent LinkInfoSeq getLinkInfoSeq()
Retrieve information on the current links.
IceStorm::TopicExists::name
string name
The name of the topic that already exists.
Definition: IceStorm.ice:319
IceStorm::LinkInfoSeq
sequence< LinkInfo > LinkInfoSeq
A sequence of LinkInfo objects.
Definition: IceStorm.ice:79
IceStorm::Topic::getPublisher
idempotent Object * getPublisher()
Get a proxy to a publisher object for this topic.
IceStorm::LinkInfo
Information on the topic links.
Definition: IceStorm.ice:51
IceStorm::QoS
dictionary< string, string > QoS
This dictionary represents quality of service parameters.
Definition: IceStorm.ice:88
IceStorm::BadQoS
This exception indicates that a subscription failed due to an invalid QoS.
Definition: IceStorm.ice:155
IceStorm::Topic::getSubscribers
Ice::IdentitySeq getSubscribers()
Retrieve the list of subscribers for this topic.
IceStorm::TopicManager
A topic manager manages topics, and subscribers to topics.
Definition: IceStorm.ice:346
IceStorm::LinkInfo::theTopic
Topic * theTopic
The linked topic.
Definition: IceStorm.ice:57
IceStorm::Topic
Publishers publish information on a particular topic.
Definition: IceStorm.ice:173
IceStorm::TopicManager::retrieveAll
idempotent TopicDict retrieveAll()
Retrieve all topics managed by this topic manager.
IceStorm::TopicManager::retrieve
idempotent Topic * retrieve(string name)
Retrieve a topic by name.
IceStorm::Topic::unsubscribe
idempotent void unsubscribe(Object *subscriber)
Unsubscribe the given subscriber.
IceStorm::Topic::unlink
void unlink(Topic *linkTo)
Destroy the link from this topic to the given topic linkTo.
IceStorm::InvalidSubscriber::reason
string reason
The reason for the failure.
Definition: IceStorm.ice:145
IceStorm::NoSuchTopic::name
string name
The name of the topic that does not exist.
Definition: IceStorm.ice:335
IceStorm::TopicManager::create
Topic * create(string name)
Create a new topic.
SliceChecksumDict.ice
IceStorm::Topic::subscribeAndGetPublisher
Object * subscribeAndGetPublisher(QoS theQoS, Object *subscriber)
Subscribe with the given qos to this topic.
IceStorm::Topic::destroy
void destroy()
Destroy the topic.
IceStorm::Topic::getName
idempotent string getName()
Get the name of this topic.
Ice::SliceChecksumDict
dictionary< string, string > SliceChecksumDict
A mapping from type IDs to Slice checksums.
Definition: SliceChecksumDict.ice:34
IceStorm::Topic::link
void link(Topic *linkTo, int cost)
Create a link to the given topic.
Metrics.ice
IceStorm::Topic::getNonReplicatedPublisher
idempotent Object * getNonReplicatedPublisher()
Get a non-replicated proxy to a publisher object for this topic.
Identity.ice
IceStorm::LinkExists
This exception indicates that an attempt was made to create a link that already exists.
Definition: IceStorm.ice:97
IceStorm::InvalidSubscriber
This exception indicates that an attempt was made to subscribe a proxy that is null.
Definition: IceStorm.ice:139
IceStorm::LinkExists::name
string name
The name of the linked topic.
Definition: IceStorm.ice:103
Ice::IdentitySeq
sequence< Identity > IdentitySeq
A sequence of identities.
Definition: Identity.ice:73
IceStorm::LinkInfo::cost
int cost
The cost of traversing this link.
Definition: IceStorm.ice:71