Qpid Proton C API  0.18.0
event.h
Go to the documentation of this file.
1 #ifndef PROTON_EVENT_H
2 #define PROTON_EVENT_H 1
3 
4 /*
5  *
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  *
23  */
24 
25 #include <proton/import_export.h>
26 #include <proton/type_compat.h>
27 #include <proton/object.h>
28 #include <stddef.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
75 typedef struct pn_event_t pn_event_t;
76 
80 typedef enum {
86 
91 
97 
102 
107 
114 
120 
126 
132 
138 
144 
150 
157 
163 
169 
175 
181 
187 
194 
200 
206 
212 
218 
224 
230 
236 
242 
249 
255 
261 
269 
276 
283 
290 
296 
297  PN_SELECTABLE_INIT,
298  PN_SELECTABLE_UPDATED,
299  PN_SELECTABLE_READABLE,
300  PN_SELECTABLE_WRITABLE,
301  PN_SELECTABLE_ERROR,
302  PN_SELECTABLE_EXPIRED,
303  PN_SELECTABLE_FINAL,
304 
310 
317 
323 
329 
335 
345 
352 
353 
360 PN_EXTERN const char *pn_event_type_name(pn_event_type_t type);
361 
370 PN_EXTERN pn_collector_t *pn_collector(void);
371 
377 PN_EXTERN void pn_collector_free(pn_collector_t *collector);
378 
387 PN_EXTERN void pn_collector_release(pn_collector_t *collector);
388 
394 PN_EXTERN void pn_collector_drain(pn_collector_t *collector);
395 
413 PN_EXTERN pn_event_t *pn_collector_put(pn_collector_t *collector,
414  const pn_class_t *clazz, void *context,
415  pn_event_type_t type);
416 
428 PN_EXTERN pn_event_t *pn_collector_peek(pn_collector_t *collector);
429 
436 PN_EXTERN bool pn_collector_pop(pn_collector_t *collector);
437 
445 PN_EXTERN pn_event_t *pn_collector_next(pn_collector_t *collector);
446 
453 PN_EXTERN pn_event_t *pn_collector_prev(pn_collector_t *collector);
454 
463 PN_EXTERN bool pn_collector_more(pn_collector_t *collector);
464 
471 PN_EXTERN pn_event_type_t pn_event_type(pn_event_t *event);
472 
479 PN_EXTERN const pn_class_t *pn_event_class(pn_event_t *event);
480 
484 PN_EXTERN void *pn_event_context(pn_event_t *event);
485 
493 
500 PN_EXTERN pn_session_t *pn_event_session(pn_event_t *event);
501 
508 PN_EXTERN pn_link_t *pn_event_link(pn_event_t *event);
509 
516 PN_EXTERN pn_delivery_t *pn_event_delivery(pn_event_t *event);
517 
524 PN_EXTERN pn_transport_t *pn_event_transport(pn_event_t *event);
525 
532 PN_EXTERN pn_record_t *pn_event_attachments(pn_event_t *event);
533 
540 PN_EXTERN struct pn_condition_t *pn_event_condition(pn_event_t *event);
541 
548 
549 /* NOTE: there is deliberately no peek(), more() or other look-ahead on an event
550  * batch. We want to know exactly which events have been handled, next() only
551  * allows the user to get each event exactly once, in order.
552  */
553 
561 
567 struct pn_event_batch_t {
568  pn_event_t *(*next_event)(pn_event_batch_t *batch);
569 };
574 #ifdef __cplusplus
575 }
576 #endif
577 
582 #endif /* event.h */
Indicates that the both the head and tail of the transport are closed.
Definition: event.h:295
bool pn_collector_pop(pn_collector_t *collector)
Remove the head event on a collector.
The proactor has become inactive: all listeners and connections were closed and the timeout (if set) ...
Definition: event.h:344
pn_transport_t * pn_event_transport(pn_event_t *event)
Get the transport associated with an event.
const pn_class_t * pn_event_class(pn_event_t *event)
Get the class associated with the event context.
The local session endpoint has been opened.
Definition: event.h:168
void pn_collector_release(pn_collector_t *collector)
Release a collector.
pn_event_type_t
An event type.
Definition: event.h:80
The remote endpoint has closed the link.
Definition: event.h:223
pn_event_t * pn_collector_peek(pn_collector_t *collector)
Access the head event contained by a collector.
pn_event_type_t pn_event_type(pn_event_t *event)
Get the type of an event.
The flow control state for a link has changed.
Definition: event.h:241
pn_link_t * pn_event_link(pn_event_t *event)
Get the link associated with an event.
struct pn_condition_t * pn_event_condition(pn_event_t *event)
If the event context object has a condition and the condition is set return it, otherwise return NULL...
The connection has been unbound from its transport.
Definition: event.h:125
The local link endpoint has been detached.
Definition: event.h:229
The listener is listeneing.
Definition: event.h:350
void pn_collector_drain(pn_collector_t *collector)
Drain a collector: remove and discard all events.
Indicates the listener has an incoming connection, call pn_listener_accept() to accept it...
Definition: event.h:316
struct pn_transport_t pn_transport_t
A network channel supporting an AMQP connection.
Definition: types.h:431
pn_delivery_t * pn_event_delivery(pn_event_t *event)
Get the delivery associated with an event.
The link has been created.
Definition: event.h:199
The local connection endpoint has been closed.
Definition: event.h:143
struct pn_event_batch_t pn_event_batch_t
Unsettled API - A batch of events that must be handled in sequence.
Definition: event.h:547
pn_record_t * pn_event_attachments(pn_event_t *event)
Get any attachments associated with an event.
A delivery has been created or updated.
Definition: event.h:254
The connection has been bound to a transport.
Definition: event.h:119
The remote endpoint has detached the link.
Definition: event.h:235
Indicates that the tail of the transport has been closed.
Definition: event.h:289
Defined as a programming convenience.
Definition: event.h:85
pn_connection_wake() was called.
Definition: event.h:309
struct pn_collector_t pn_collector_t
An event collector.
Definition: types.h:413
pn_event_t * pn_collector_prev(pn_collector_t *collector)
Return the same pointer as the most recent call to pn_collector_next().
struct pn_session_t pn_session_t
An AMQP Session object.
Definition: types.h:292
The connection has been created.
Definition: event.h:113
pn_collector_t * pn_collector(void)
Construct a collector.
Timeout set by pn_proactor_set_timeout() time limit expired.
Definition: event.h:334
The local session endpoint has been closed.
Definition: event.h:180
pn_connection_t * pn_event_connection(pn_event_t *event)
Get the connection associated with an event.
The local connection endpoint has been closed.
Definition: event.h:131
The session has been created.
Definition: event.h:162
void * pn_event_context(pn_event_t *event)
Get the context associated with an event.
struct pn_delivery_t pn_delivery_t
An AMQP Delivery object.
Definition: types.h:401
A reactor has been started.
Definition: event.h:90
The remote endpoint has opened the connection.
Definition: event.h:137
The link has been freed and any outstanding processing has been completed.
Definition: event.h:248
pn_event_t * pn_collector_next(pn_collector_t *collector)
Pop and return the head event, returns NULL if the collector is empty.
void pn_collector_free(pn_collector_t *collector)
Free a collector.
A timer event has occurred.
Definition: event.h:106
The session has been freed and any outstanding processing has been completed.
Definition: event.h:193
The remote endpoint has opened the session.
Definition: event.h:174
Indicates that the "head" or writing end of the transport has been closed.
Definition: event.h:282
Indicates the listener has closed.
Definition: event.h:322
The remote endpoint has opened the link.
Definition: event.h:211
struct pn_connection_t pn_connection_t
An AMQP Connection object.
Definition: types.h:281
pn_event_t * pn_event_batch_next(pn_event_batch_t *batch)
Unsettled API - Remove the next event from the batch and return it.
const char * pn_event_type_name(pn_event_type_t type)
Get a human readable name for an event type.
Indicates pn_proactor_interrupt() was called to interrupt a proactor thread.
Definition: event.h:328
struct pn_condition_t pn_condition_t
An AMQP Condition object.
Definition: condition.h:64
The local link endpoint has been opened.
Definition: event.h:205
pn_event_t * pn_collector_put(pn_collector_t *collector, const pn_class_t *clazz, void *context, pn_event_type_t type)
Place a new event on a collector.
A reactor has been stopped.
Definition: event.h:101
pn_session_t * pn_event_session(pn_event_t *event)
Get the session associated with an event.
bool pn_collector_more(pn_collector_t *collector)
Check if there are more events after the current head event.
The transport has new data to read and/or write.
Definition: event.h:260
Indicates that a transport error has occurred.
Definition: event.h:275
The remote endpoint has closed the session.
Definition: event.h:186
The remote endpoint has closed the connection.
Definition: event.h:149
The connection has been freed and any outstanding processing has been completed.
Definition: event.h:156
The transport has authenticated.
Definition: event.h:268
struct pn_event_t pn_event_t
Notification of a state change in the protocol engine.
Definition: event.h:75
A reactor has no more events to process.
Definition: event.h:96
The local link endpoint has been closed.
Definition: event.h:217