Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Znav
nextUsing IceStorm
prevIceStorm Concepts

This page provides a brief introduction to the Slice interfaces comprising the IceStorm service. See the online Slice API Reference XREF for the Slice documentation.

On this page:

Table of Contents
maxLevel2

Anchor
topicmanager
topicmanager

The TopicManager Interface

The TopicManager is a singleton object that acts as a factory and repository of Topic objects. Its interface and related types are shown below:

Wiki Markup
{zcode:slice}
module IceStorm {
dictionary<string, Topic*> TopicDict;

exception TopicExists {
    string name;
};

exception NoSuchTopic {
    string name;
};

interface TopicManager {
    Topic* create(string name) throws TopicExists;
    idempotent Topic* retrieve(string name) throws NoSuchTopic;
    idempotent TopicDict retrieveAll();
    idempotent Ice::SliceChecksumDict getSliceChecksums();
};
};
{zcode}

The create operation is used to create a new topic, which must have a unique name. The retrieve operation allows a client to obtain a proxy for an existing topic, and retrieveAll supplies a dictionary of all existing topics. The getSliceChecksums operation returns Slice checksums for the IceStorm definitions.

Ztop

Anchor
topic
topic

The Topic Interface

The Topic interface represents a topic and provides several administrative operations for configuring links and managing subscribers.

Wiki Markup
{zcode:slice}
module IceStorm {
struct LinkInfo {
    Topic* theTopic;
    string name;
    int cost;
};
sequence<LinkInfo> LinkInfoSeq;

dictionary<string, string> QoS;

exception LinkExists {
    string name;
};

exception NoSuchLink {
    string name;
};

exception AlreadySubscribed {};

exception BadQoS {
    string reason;
};

interface Topic {
    idempotent string getName();
    idempotent Object* getPublisher();
    idempotent Object* getNonReplicatedPublisher();
    Object* subscribeAndGetPublisher(QoS theQoS, Object* subscriber)
        throws AlreadySubscribed, BadQoS;
    idempotent void unsubscribe(Object* subscriber);
    idempotent void link(Topic* linkTo, int cost)
        throws LinkExists;
    idempotent void unlink(Topic* linkTo) throws NoSuchLink;
    idempotent LinkInfoSeq getLinkInfoSeq();
    void destroy();
};
};
{zcode}

The getName operation returns the name assigned to the topic, while the getPublisher and getNonReplicatedPublisher operations return proxies for the topic's publisher object.

The subscribeAndGetPublisher operation adds a subscriber's proxy to the topic; if another subscriber proxy already exists with the same object identity, the operation throws AlreadySubscribed. The operation returns a proxy for a subscriber-specific publisher object.

The unsubscribe operation removes the subscriber from the topic.

A link to another topic is created using the link operation; if a link already exists to the given topic, the LinkExists exception is raised. Links are destroyed using the unlink operation.

Finally, the destroy operation permanently destroys the topic.

Ztop
See Also
Zret
Znav
nextUsing IceStorm
prevIceStorm Concepts