Qpid Proton C API  0.37.0
Listener

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

Typedefs

typedef struct pn_listener_t pn_listener_t
 A listener for incoming connections.
 

Functions

PNP_EXTERN pn_listener_tpn_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)
 Deprecated - Use pn_listener_accept2().
 
PNP_EXTERN pn_condition_tpn_listener_condition (pn_listener_t *l)
 Get the error condition for a listener.
 
PNP_EXTERN void * pn_listener_get_context (pn_listener_t *listener)
 Get the application context associated with this listener object. More...
 
PNP_EXTERN void pn_listener_set_context (pn_listener_t *listener, void *context)
 Set a new application context for a listener object. More...
 
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_tpn_listener_proactor (pn_listener_t *c)
 The proactor associated with a listener.
 
PNP_EXTERN pn_listener_tpn_event_listener (pn_event_t *event)
 Return the listener associated with an event. More...
 
PNP_EXTERN void pn_listener_raw_accept (pn_listener_t *listener, pn_raw_connection_t *raw_connection)
 Accept an incoming connection request as a raw connection. 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().

Note
If you provide a transport, pn_listener_accept2() will call pn_transport_set_server() to mark it as a server. However if you use pn_sasl() you must call call pn_transport_set_server() yourself before calling pn_sasl() to set up a server SASL configuration.
Parameters
[in]listenerthe listener
[in]connectionIf NULL a new connection is created. Memory management is the same as for pn_proactor_connect2()
[in]transportIf NULL a new transport is created. Memory management is the same as for pn_proactor_connect2()
Examples
broker.c, and direct.c.

◆ pn_listener_get_context()

PNP_EXTERN void* pn_listener_get_context ( pn_listener_t listener)

Get the application context associated with this listener object.

The application context for a connection may be set using pn_listener_set_context.

Parameters
[in]listenerthe listener whose context is to be returned.
Returns
the application context for the listener object

◆ pn_listener_set_context()

PNP_EXTERN void pn_listener_set_context ( pn_listener_t listener,
void *  context 
)

Set a new application context for a listener object.

The application context for a listener object may be retrieved using pn_listener_get_context.

Parameters
[in]listenerthe listener object
[in]contextthe application context

◆ 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.

◆ pn_listener_raw_accept()

PNP_EXTERN void pn_listener_raw_accept ( pn_listener_t listener,
pn_raw_connection_t raw_connection 
)

Accept an incoming connection request as a raw connection.

Call after a PN_LISTENER_ACCEPT event.

Errors are returned as PN_RAW_CONNECTION_DISCONNECTED by pn_proactor_wait().

Parameters
[in]listenerthe listener
[in]raw_connectionthe application must create a raw connection with pn_raw_connection() this parameter cannot be null.If NULL a new connection is created.

The proactor that owns the listener takes ownership of raw_connection and will automatically call pn_raw_connection_free() after the final PN_RAW_CONNECTION_DISCONNECTED event is handled, or when pn_proactor_free() is called.