The Publisher API consists of one definition and nine functions:
A publisher.
typedef struct enc_struct publisher_t;
None.
Nothing.
Generic callback function invoked by ENS to acknowledge an asynchronous call.
typedef void (*publisher_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.
Creates a new asynchronous publisher.
void publisher_new_a (pas_dispatcher_t *disp, void *worker, const char *host, unsigned short port, publisher_cb_t cbdone, void *cbarg);
Nothing. It passes the new active publisher as third argument of cbdone callback.
Creates a new synchronous publisher.
publisher_t *publisher_new_s (pas_dispatcher_t *disp, void *worker, const char *host, unsigned short port);
disp |
P&S thread pool context 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. |
host |
Notification server host name. |
port |
Notification server port. |
A new active publisher (publisher_t).
Sends an asynchronous notification to the notification service.
void publish_a (publisher_t *publisher, const char *event_ref, const char *data, unsigned int datalen, publisher_cb_t cbdone, publisher_cb_t end2end_ack, void *cbarg, unsigned long timeout);
publisher_t |
The active publisher. |
event_ref |
The event reference. This is a URI identifying the modified resource. |
data |
The event data. The body of the notification message. It is opaque to the notification service, which merely relays it to the events’ subscriber. |
datalen |
The length in bytes of the data. |
cbdone |
The callback invoked when the data has been accepted or deemed unacceptable by the notification service. What makes a notification acceptable depends on the protocol used. The protocol may choose to use the transport acknowledgment (TCP) or use its own acknowledgment response mechanism. |
end2end_ack |
The callback function invoked after acknowledgment from the consumer peer (in an RENL) has been received. Used only in the context of an RENL. |
cbarg |
The first argument of cbdone or end2end_ack when invoked. |
timeout |
The length of time to wait for an RENL to complete. |
Nothing.
Sends a synchronous notification to the notification service.
int publish_s (publisher_t *publisher, const char *event_ref, const char *data, unsigned int datalen);
publisher |
The active publisher. |
event_ref |
The event reference. This is a URI identifying the modified resource. |
data |
The event data. The body of the notification message. It is opaque to the notification service, which relays it to the events’ subscriber. |
datalen |
The length in bytes of the data. |
Zero if successful; a failure code if unsuccessful. If an RENL, the call does not return until the consumer has completely processed the notification and has successfully acknowledged it.
Terminates a publish session.
void publisher_delete (publisher_t *publisher);
publisher |
The publisher to delete. |
Nothing.
Creates a subscriber using the credentials of the publisher.
struct subscriber_struct * publisher_get_subscriber(publisher_t *publisher);
publisher |
The publisher whose credentials are used to create the subscriber. |
The subscriber, or NULL if the creation failed. If the creation failed, use the subscriber_new to create the subscriber.
Declares an RENL, which enables the end2end_ack invocation. After this call returns, the end2end_ack argument is invoked when an acknowledgment notification matching the specified publisher and subscriber is received.
void renl_create_publisher (publisher_t *publisher, const char *renl_id, const char *subscriber, publisher_cb_t cbdone, void *cbarg);
publisher |
The active publisher. |
renl_id |
The unique RENL identifier. This allows two peers to be able to set up multiple RENLs between them. |
subscriber |
The authenticated identity of the peer. |
cbdone |
The callback invoked when the RENL is established. |
cbarg |
The first argument of cbdone, when invoked. |
Nothing.
This cancels an RENL. This does not prevent more notifications being sent, but should a client acknowledgment be received, the end2end_ack argument of publish will no longer be invoked. All RENLs are automatically destroyed when the publisher is deleted. Therefore, this function does not need to be called to free RENL-related memory before deleting a publisher.
void renl_cancel_publisher (renl_t *renl);
renl |
The RENL to cancel. |
Nothing.