Diffusion .NET Client Library  6.1.5
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Package PushTechnology.ClientInterface.Client.Topics

Namespaces

package  Details
 
package  Update
 

Classes

interface  IRecordTopicDetails
 Details of a Record topic. More...
 
interface  IRecordTopicDetailsAttributes
 Record topic details attributes. More...
 
interface  IRecordTopicDetailsBuilder
 Builder for Record topic details. More...
 
interface  IRecordTopicDetailsSchema
 Record topic details schema. More...
 
interface  ISchemaId
 A topic details schema identifier. More...
 
interface  ISingleValueTopicDetails
 Details of a Single Value topic. More...
 
interface  ISingleValueTopicDetailsBuilder
 Builder for Single Value topic details. More...
 
interface  ISingleValueTopicDetailsSchema
 Single Value topic details schema. More...
 
interface  ISingleValueTopicDetailsAttributes
 Single Value topic details attributes. More...
 
interface  ISlaveTopicDetails
 Details of a slave topic. More...
 
interface  ISlaveTopicDetailsAttributes
 The slave topic details attributes interface. More...
 
interface  ISlaveTopicDetailsBuilder
 The builder for slave topic details. More...
 
interface  ISlaveTopicDetailsSchema
 The slave topic details schema interface. More...
 
interface  IStatelessTopicDetails
 Details of a stateless topic. More...
 
interface  IStatelessTopicDetailsAttributes
 The stateless topic details attributes interface. More...
 
interface  IStatelessTopicDetailsBuilder
 The state topic details builder interface. More...
 
interface  IStatelessTopicDetailsSchema
 The stateless topic details schema interface. More...
 
interface  ITopicDetails
 Base interface for topic details of all TopicType types. More...
 
interface  ITopicDetailsAttributes
 The topic attributes interface. More...
 
interface  ITopicDetailsBuilder
 The interface for a topic details builder. More...
 
interface  ITopicDetailsBuilder< out TD >
 The interface for a topic details builder. More...
 
interface  ITopicDetailsBuilder< out TB, out TD >
 Topic details builder. More...
 
interface  ITopicDetailsSchema
 The topic schema interface. More...
 
interface  ITopicPathSelector
 A selector that selects a single topic path. More...
 
interface  ITopicSelector
 An ITopicSelector is a value that identifies one or more topics. More...
 
interface  ITopicSelectors
 Converts strings to topic selectors. More...
 
class  TopicDetailsLevel
 The level of topic detail available. More...
 
class  TopicSelectorConstants
 Topic selector string constants. More...
 
class  TopicSelectorType
 Topic selector type. More...
 

Enumerations

enum  TopicType : byte {
  TopicType.STATELESS = 0x01, TopicType.SINGLE_VALUE = 0x03, TopicType.RECORD = 0x04, TopicType.SLAVE = 0x07,
  TopicType.ROUTING = 0x0C, TopicType.BINARY = 0x0E, TopicType.JSON = 0x0F, TopicType.TIME_SERIES = 0x10,
  TopicType.STRING = 0x11, TopicType.INT64 = 0x12, TopicType.DOUBLE = 0x13, TopicType.RECORD_V2 = 0x14,
  TopicType.UNKNOWN = 0x15
}
 The topic type determines the type of the data values a topic publishes to subscribers. More...
 

Enumeration Type Documentation

The topic type determines the type of the data values a topic publishes to subscribers.

Source Topics

Most topics are source topics. The characteristics of each type of source topic are summarized in the following table.

Topic type State Data type
STRING. Single scalar value. string.
INT64. Single scalar value. 64-bit integer (long).
DOUBLE. Single scalar value. Double precision floating point number (double).
BINARY. Single scalar value. Arbitrary binary data.
RECORD_V2. Single composite value. Data.Record.IRecordV2. Diffusion-specific data type. A list of records, each composed of field values, with an optional schema.
JSON. Single composite value. Data.JSON.IJSON, backed by CBOR-format binary.
STATELESS. None. Client.Content.IContent.
TIME_SERIES. Append-only log of events. Features.TimeSeries.IEvent{TValue} containing a value of a well-known data type.
RECORD (Deprecated). Single composite value. Content.IRecord.
SINGLE_VALUE (Deprecated). Single scalar value. string represented as Content. Optionally constrained by metadata.

Linked Topics

Linked topics republish values from source topics. The data type is inherited from the source topic.

There are two types of linked topic. A SLAVE topic has a fixed source topic. A ROUTING topic can have a different source topic for each subscription.

See Also
Topics.Details.ITopicSpecification
Enumerator
STATELESS 

Stateless Topic.

A stateless topic is one that has no data state maintained at the server. Updates may be broadcast via such a topic but no state is kept at the server therefore it cannot be 'fetched' and no initial value is presented to a subscribing session.

Deprecated in version 6.0. Instead use a topic type that supports the Details.TopicSpecificationProperty.DontRetainValue property and set the property to "true". This topic type will be removed in a future release.

SINGLE_VALUE 

Single Value Topic.

This is a topic that maintains its state as a single String value which may optionally be validated and constrained by type (for example integer, decimal, or custom values). The type is defined by an item of Content.Metadata.IMField metadata.

Deprecated in version 6.0. Use other single scalar topic types instead. This topic type will be removed in a future release.

RECORD 

Record Topic.

This is a topic that maintains its state in record format. The format of the topic content may be one or more Records as defined by an item of Content.Metadata.IMContent metadata. When such a topic is updated, the metadata is used to interpret the data and make comparisons between the current topic state and the update such that a delta of change can be calculated for publishing to subscribed sessions.

Deprecated in version 6.0. This type will be removed in a future release. For composite data it is recommended that JSON topics or RECORD_V2 topics (which are format compatible with this type) are used. This topic type will be removed in a future release.

SLAVE 

Slave Topic.

A topic that references another topic (the master topic). It re-publishes master topic's data through an alternative topic path.

A session cannot tell that it is subscribed to a slave topic. A session requesting details of a slave topic will receive the details of the master topic. A session subscribing to the slave topic will receive all updates to the master topic. The slave topic itself can not be updated.

Any number of slave topics may reference the same master topic.

The master topic may not be another slave topic, a ROUTING topic, a STATELESS topic or any topic created using the classic Publisher API. If any such topic exists at the master path when creating a slave topic, the slave is created in an 'unbound' state (see below).

From version 6.0 the master topic does not need to exist at the time a slave topic is created. In this case, the slave topic is created in an 'unbound' state and is not visible to subscribers. If the master topic is then created, all unbound slaves that reference it become bound to it, and sessions that have requested subscription to the slave become unsubscribed. If an incompatible topic type is created at a path which unbound slaves refer to, the slaves remain unbound.

Slave topics are not removed when a master topic that they are bound to is removed. If a master topic is removed that has bound slaves, those slaves become unbound and any sessions subscribing to them would be unsubscribed. Such an unbound slave can rebind to another topic created with the same master path later. Slave topics must be explicitly removed.

The session creating a slave topic must have Types.TopicPermission.READ_TOPIC permission to the master topic path.

Mandatory properties

The Details.TopicSpecificationProperty.SlaveMasterTopic property must be provided when creating a slave topic using a Details.ITopicSpecification.

ROUTING 

Routing Topic.

A topic that can reference different source topics for different sessions.

Each subscription to a routing topic is routed to a source topic. Updates to the source topic are routed back to the subscriber and appear to come from the routing topic.

The result is that a session may subscribe to a topic which is in reality supported by another topic and the mapping of the routing topic to the actual topic can be different for each session.

As an example, you may wish for all sessions to simply subscribe to a topic called "Prices" but depending upon the client type the actual topic could differ (Prices/Discount, Prices/Standard etc).

An instance of this topic may map any number of sessions to any number of different 'real' topics. Each real topic must be either a topic that maintains state or a STATELESS topic.

From the point of view of a session subscribing to such a topic, a routing topic appears to be a normal topic but it has no state of its own and cannot be updated.

The mapping of sessions to source topics is performed by a control client session using the Features.Control.Topics.ISubscriptionControl feature. When a session subscribes to the routing topic the control client is requested to provide the topic that the client is to be subscribed to. If there is no control client available to handle subscriptions at the time a session subscribed, the session will not be subscribed to the topic.

Alternatively, the routing can be determined by a user-written Java class (deployed on the server) which will be invoked to define the mapping of the topic to another data topic when a session subscribes.

When a source topic is removed that is mapped to from a routing topic then any session that were mapped to that source topic will be unsubscribed from the routing topic.

BINARY 

Topic that stores and publishes binary values.

Based on the Data.IDataTypes.Binary data type. Supports delta-streams.

Added in version 5.9.

JSON 

Topic that stores and publishes JSON (JavaScript Object Notation) values.

Based on the Data.IDataTypes.JSON data type. Supports delta-streams.

Added in version 5.9.

TIME_SERIES 

Time Series Topic.

A time series is a sequence of events. Each event contains a value and has server-assigned metadata comprised of a sequence number, timestamp, and author.

A time series topic allows sessions to access a time series that is maintained by the server. A time series topic has an associated Data.IDataType, such as Data.IDataTypes.Binary, Data.IDataTypes.String, or Data.IDataTypes.JSON, that determines the type of value associated with each event.

Retained range

The Details.TopicSpecificationProperty.TimeSeriesRetainedRange property configures the range of historic events retained by a time series topic. If the property is not specified, a time series topic will retain the ten most recent events.

Subscription range

The Details.TopicSpecificationProperty.TimeSeriesSubscriptionRange property configures a time series topic to send a range of historic events from the end of the time series to new subscribers. This is a convenient way to synchronize new subscribers without requiring the use of a Features.TimeSeries.IRangeQuery{TValue}.

By default, new subscribers will be sent the latest event if delta streams are enabled and no events if delta streams are disabled. See the description of Subscription range in the Features.TimeSeries.ITimeSeries documentation.

Mandatory properties

The Details.TopicSpecificationProperty.TimeSeriesEventValueType property must be provided when creating a time series topic.

Added in version 6.1.

STRING 

Topic that stores and publishes String values.

Based on the Data.IDataTypes.String data type. Supports null string values.

Supports delta-streams.

Added in version 6.0.

INT64 

Topic that stores and publishes 64-bit integer values.

Based on the Data.IDataTypes.Int64 data type. Supports null long values.

The topic does not support delta-streams - only complete values are transmitted.

Added in version 6.0.

DOUBLE 

Topic that stores and publishes IEEE 754 double-precision floating point numbers.

Based on the Data.IDataTypes.DoubleFloat data type. Supports null double values.

The topic does not support delta-streams - only complete values are transmitted.

Added in version 6.0.

RECORD_V2 

Topic that stores and publishes data in the form of records and fields.

Based on the Data.IDataTypes.RecordV2 data type. Supports delta-streams.

Added in version 6.0.

UNKNOWN 

A topic type that is unsupported by the session.

Added in version 6.1.