The Subscriber API includes two definitions and ten functions:
A subscriber.
typedef struct enc_struct subscriber_t;
None.
Nothing.
A subscription.
typedef struct subscription_struct subscription_t;
None.
Nothing.
Generic callback function invoked by ENS to acknowledge an asynchronous call.
typedef void (*subscriber_cb_t) (void *arg, int rc, void *data);
arg |
Context variable passed by the caller. |
rc |
The return code. |
data |
For an open, contains a newly created context. |
Nothing
Subscriber callback; called upon receipt of a notification.
typedef void (*subscriber_notify_cb_t) (void *arg, char *event, char *data, int datalen);
arg |
Context pointer passed to subscribe (notify_arg). |
event |
The event reference (URI). The notification event reference matches the subscription, but may contain additional information called event attributes, such as a uid. |
data |
The body of the notification. A MIME object. |
datalen |
Length of the data. |
Zero if successful, non-zero otherwise.
Creates a new asynchronous subscriber.
void subscriber_new_a (pas_dispatcher_t *disp, void *worker, const char *host, unsigned short port, subscriber_cb_t cbdone, void *cbarg);
Nothing. It passes the new active subscriber as third argument of cbdone callback.
Creates a new synchronous subscriber.
subscriber_t *subscriber_new_s (pas_dispatcher_t *disp, const char *host, unsigned short port);
disp |
Publish and subscribe dispatcher returned by pas_dispatcher_new. |
worker |
Application worker. If not NULL, grouped with existing workers created by ENS to service this publisher session. Used to prevent multiple threads from accessing the publisher data at the same time. Only usable if the caller creates and dispatches the GDisp context. |
host |
Notification server host name or IP address. |
port |
Subscription service port number. |
A new active subscriber (subscriber_t).
Establishes an asynchronous subscription.
void subscribe_a (subscriber_t *subscriber, const char *event_ref, subscriber_notify_cb_t notify_cb, void *notify_arg, subscriber_cb_t cbdone, void *cbarg):
Nothing.
Cancels an asynchronous subscription.
void unsubscribe_a (subscriber_t *subscriber, subscription_t *subscription, subscriber_cb_t cbdone, void *cbarg);
Nothing.
Terminates a subscriber.
void subscriber_delete (subscriber_t *subscriber);
subscriber |
The subscriber to delete. |
Nothing
Creates a publisher, using the credentials of the subscriber.
struct publisher_struct *subscriber_get_publisher (subscriber_t *subscriber);
subscriber |
The subscriber whose credentials are used to create the publisher. |
The publisher, or NULL if creation failed. In case the creation fails, use the publisher_new.
Creates the subscription part of an RENL.
renl_t *renl_create_subscriber (subscription_t *subscription, const char *renl_id, const char *publisher);
subscription |
The subscription. |
renl_id |
The unique RENL identifier. This allows two peers to be able to set up multiple RENLs between them. |
publisher |
The authenticated identity of the peer. |
The opaque RENL object.
This cancels an RENL. It does not cancel a subscription. It tells ENS not to acknowledge any more notifications received for this subscription. It destroys the RENL object, the application may no longer use this RENL. All RENLs are automatically destroyed when the subscription is canceled. Therefore, this function does not need to be called to free RENL-related memory before deleting a subscriber.
void renl_cancel_subscriber (renl_t *renl);
renl |
The RENL to cancel. |
Nothing.