Qpid Proton C API  0.17.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
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 
289 
296 
302 
308 
309  PN_SELECTABLE_INIT,
310  PN_SELECTABLE_UPDATED,
311  PN_SELECTABLE_READABLE,
312  PN_SELECTABLE_WRITABLE,
313  PN_SELECTABLE_ERROR,
314  PN_SELECTABLE_EXPIRED,
315  PN_SELECTABLE_FINAL,
316 
322 
328 
334 
340 
346 
354 
356 
363 PN_EXTERN const char *pn_event_type_name(pn_event_type_t type);
364 
373 PN_EXTERN pn_collector_t *pn_collector(void);
374 
380 PN_EXTERN void pn_collector_free(pn_collector_t *collector);
381 
390 PN_EXTERN void pn_collector_release(pn_collector_t *collector);
391 
409 PN_EXTERN pn_event_t *pn_collector_put(pn_collector_t *collector,
410  const pn_class_t *clazz, void *context,
411  pn_event_type_t type);
412 
424 PN_EXTERN pn_event_t *pn_collector_peek(pn_collector_t *collector);
425 
432 PN_EXTERN bool pn_collector_pop(pn_collector_t *collector);
433 
447 PN_EXTERN pn_event_t *pn_collector_next(pn_collector_t *collector);
448 
458 PN_EXTERN pn_event_t *pn_collector_prev(pn_collector_t *collector);
459 
468 PN_EXTERN bool pn_collector_more(pn_collector_t *collector);
469 
476 PN_EXTERN pn_event_type_t pn_event_type(pn_event_t *event);
477 
484 PN_EXTERN const pn_class_t *pn_event_class(pn_event_t *event);
485 
489 PN_EXTERN void *pn_event_context(pn_event_t *event);
490 
498 
505 PN_EXTERN pn_session_t *pn_event_session(pn_event_t *event);
506 
513 PN_EXTERN pn_link_t *pn_event_link(pn_event_t *event);
514 
521 PN_EXTERN pn_delivery_t *pn_event_delivery(pn_event_t *event);
522 
529 PN_EXTERN pn_transport_t *pn_event_transport(pn_event_t *event);
530 
537 PN_EXTERN pn_record_t *pn_event_attachments(pn_event_t *event);
538 
545 
546 /* NOTE: there is deliberately no peek(), more() or other look-ahead on an event
547  * batch. We want to know exactly which events have been handled, next() only
548  * allows the user to get each event exactly once, in order.
549  */
550 
558 
564 struct pn_event_batch_t {
565  pn_event_t *(*next_event)(pn_event_batch_t *batch);
566 };
571 #ifdef __cplusplus
572 }
573 #endif
574 
579 #endif /* event.h */