Listener
IO

Unsettled API - A listener for incoming connections. More...

Collaboration diagram for Listener:

## Typedefs

typedef struct pn_listener_t | pn_listener_t
| A listener for incoming connections.

## Functions

PNP_EXTERN pn_listener_t * | pn_listener (void)
| Create a listener to pass to pn_proactor_listen() More...
PNP_EXTERN void | pn_listener_free (pn_listener_t *l)
| Free a listener. More...
PNP_EXTERN void | pn_listener_accept2 (pn_listener_t *listener, pn_connection_t *connection, pn_transport_t *transport)
| Accept an incoming connection request using `transport` and `connection`, which can be configured before the call. More...
PNP_EXTERN void | pn_listener_accept (pn_listener_t *listener, pn_connection_t *connection)
PNP_EXTERN pn_condition_t * | pn_listener_condition (pn_listener_t *l)
| Get the error condition for a listener.
PNP_EXTERN pn_record_t * | pn_listener_attachments (pn_listener_t *listener)
| Get the attachments that are associated with a listener object.
PNP_EXTERN void | pn_listener_close (pn_listener_t *l)
| Close the listener. More...
PNP_EXTERN pn_proactor_t * | pn_listener_proactor (pn_listener_t *c)
| The proactor associated with a listener.
PNP_EXTERN pn_listener_t * | pn_event_listener (pn_event_t *event)
| Return the listener associated with an event. More...

## Detailed Description

Unsettled API - A listener for incoming connections.

Note
  Thread safety: Listener has the same thread-safety rules as a Core object. Calls to a single listener must be serialized with the exception of pn_listener_close().

## Function Documentation

## pn_listener()

PNP_EXTERN pn_listener_t* pn_listener | ( | void |  | ) |

Create a listener to pass to pn_proactor_listen()

You can use pn_listener_attachments() to set application data that can be accessed when accepting connections.

Examples
  broker.c, and direct.c.

## pn_listener_free()

PNP_EXTERN void pn_listener_free | ( | pn_listener_t * | l | ) |

Free a listener.

You don't need to call this unless you create a listener with pn_listen() but never pass it to pn_proactor_listen()

## pn_listener_accept2()

PNP_EXTERN void pn_listener_accept2 | ( | pn_listener_t * | listener,
|  | pn_connection_t * | connection,
|  | pn_transport_t * | transport
| ) |  |

Accept an incoming connection request using `transport` and `connection`, which can be configured before the call.

Call after a PN_LISTENER_ACCEPT event.

Errors are returned as PN_TRANSPORT_CLOSED events by pn_proactor_wait().

Parameters

  [in] | listener | the listener
  [in] | connection | If NULL a new connection is created. Memory management is the same as for pn_proactor_connect2()
  [in] | transport | If NULL a new transport is created. Memory management is the same as for pn_proactor_connect2()

Examples
  broker.c, and direct.c.

## pn_listener_accept()

PNP_EXTERN void pn_listener_accept | ( | pn_listener_t * | listener,
|  | pn_connection_t * | connection
| ) |  |

## pn_listener_close()

PNP_EXTERN void pn_listener_close | ( | pn_listener_t * | l | ) |

Close the listener.

The PN_LISTENER_CLOSE event is generated when the listener has stopped listening.

Note
  Thread safe. Must not be called after the PN_LISTENER_CLOSE event has been handled as the listener may be freed .

Examples
  direct.c.

## pn_event_listener()

PNP_EXTERN pn_listener_t* pn_event_listener | ( | pn_event_t * | event | ) |

Return the listener associated with an event.

Returns
  NULL if the event is not associated with a listener.

Examples
  broker.c, and direct.c.