# Subscriber - [Overview](#section2024935250165636) - [Summary](#section1403630683165636) - [Data Fields](#pub-attribs) - [Details](#section1104851508165636) - [Field](#section324310952165636) - [AddTopic](#afc91fc1255ae42cba3d037bbe27096fd) - [ModifyConsumer](#ab61beca9e502b1f6098ed49956a9ad51) - [Subscribe](#a963e7a8519c854662e8ba901d08838ee) - [Unsubscribe](#a37a99e64f59194d8f2191b91f566f0f4) ## **Overview** **Related Modules:** [Broadcast](Broadcast.md) **Description:** Defines the subscriber for external interfaces to subscribe to events and data of a topic. ## **Summary** ## Data Fields

Variable Name

Description

AddTopic )(IUnknown *iUnknown, const Topic *topic)

int(*

Adds a specified topic to the Broadcast service.

Subscribe )(IUnknown *iUnknown, const Topic *topic, Consumer *consumer)

int(*

Subscribes to a specified topic for consumers.

ModifyConsumer )(IUnknown *iUnknown, const Topic *topic, Consumer *old, Consumer *current)

Consumer *(*

Modifies the consumer of a specified topic.

Unsubscribe )(IUnknown *iUnknown, const Topic *topic, const Consumer *consumer)

Consumer *(*

Unsubscribes from a specified topic.

## **Details** ## **Field ** ## AddTopic ``` int(* Subscriber::AddTopic) ([IUnknown](IUnknown.md) *iUnknown, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic) ``` **Description:** Adds a specified topic to the Broadcast service. The specified topic is added by the subscriber. A topic can be subscribed to only after being added. **Parameters:**

Name

Description

iUnknown Indicates external interface of the pub/sub feature.
topic Indicates the topic to be subscribed to.
**Returns:** Returns **EC\_SUCCESS** if the topic is successfully added; returns other error codes if the topic fails to be added. ## ModifyConsumer ``` [Consumer](Consumer.md)*(* Subscriber::ModifyConsumer) ([IUnknown](IUnknown.md) *iUnknown, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic, [Consumer](Consumer.md) *old, [Consumer](Consumer.md) *current) ``` **Description:** Modifies the consumer of a specified topic. **Parameters:**

Name

Description

iUnknown Indicates the pointer to the external interface of the pub/sub feature.
topic Indicates the pointer to the topic whose consumer will be modified.
old Indicates the pointer to the original consumer of the topic.
current Indicates the pointer to the new consumer of the topic.
**Returns:** Returns the pointer of the original consumer if the modification is successful; returns **NULL** otherwise. ## Subscribe ``` int(* Subscriber::Subscribe) ([IUnknown](IUnknown.md) *iUnknown, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic, [Consumer](Consumer.md) *consumer) ``` **Description:** Subscribes to a specified topic for consumers. Call this function on the subscriber. The topic to be subscribed to must have been added to the Broadcast service. **Parameters:**

Name

Description

iUnknown Indicates external interface of the pub/sub feature.
topic Indicates the topic to be subscribed to.
consumer Indicates the consumer who subscribes to the topic.
**Returns:** Returns **EC\_SUCCESS** if the subscription is successful; returns other error codes if the subscription fails. ## Unsubscribe ``` [Consumer](Consumer.md)*(* Subscriber::Unsubscribe) ([IUnknown](IUnknown.md) *iUnknown, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic, const [Consumer](Consumer.md) *consumer) ``` **Description:** Unsubscribes from a specified topic. This function cancels the subscription relationship between the specified topic and consumer. **Parameters:**

Name

Description

iUnknown Indicates external interface of the pub/sub feature. This parameter is used to obtain subscription relationships.
topic Indicates the pointer to the topic to unsubscribe from.
consumer Indicates the pointer to the consumer.
**Returns:** Returns the pointer of the consumer if the unsubscription is successful; returns **NULL** otherwise.