Qpid Proton C API  0.33.0
Session

A container of links. More...

Typedefs

typedef struct pn_session_t pn_session_t
 An AMQP Session object. More...
 

Functions

pn_session_tpn_session (pn_connection_t *connection)
 Factory for creating a new session on a given connection object. More...
 
void pn_session_free (pn_session_t *session)
 Free a session object. More...
 
void * pn_session_get_context (pn_session_t *session)
 Get the application context that is associated with a session object. More...
 
void pn_session_set_context (pn_session_t *session, void *context)
 Set a new application context for a session object. More...
 
pn_record_t * pn_session_attachments (pn_session_t *session)
 Get the attachments that are associated with a session object. More...
 
pn_state_t pn_session_state (pn_session_t *session)
 Get the endpoint state flags for a session. More...
 
pn_error_tpn_session_error (pn_session_t *session)
 Deprecated - Use pn_session_condition(). More...
 
pn_condition_tpn_session_condition (pn_session_t *session)
 Get the local condition associated with the session endpoint. More...
 
pn_condition_tpn_session_remote_condition (pn_session_t *session)
 Get the remote condition associated with the session endpoint. More...
 
pn_connection_tpn_session_connection (pn_session_t *session)
 Get the parent connection for a session object. More...
 
void pn_session_open (pn_session_t *session)
 Open a session. More...
 
void pn_session_close (pn_session_t *session)
 Close a session. More...
 
size_t pn_session_get_incoming_capacity (pn_session_t *session)
 Get the incoming capacity of the session measured in bytes. More...
 
void pn_session_set_incoming_capacity (pn_session_t *session, size_t capacity)
 Set the incoming capacity for a session object. More...
 
size_t pn_session_get_outgoing_window (pn_session_t *session)
 Get the outgoing window for a session object. More...
 
void pn_session_set_outgoing_window (pn_session_t *session, size_t window)
 Set the outgoing window for a session object. More...
 
size_t pn_session_outgoing_bytes (pn_session_t *session)
 Get the number of outgoing bytes currently buffered by a session. More...
 
size_t pn_session_incoming_bytes (pn_session_t *session)
 Get the number of incoming bytes currently buffered by a session. More...
 
pn_session_tpn_session_head (pn_connection_t *connection, pn_state_t state)
 Retrieve the first session from a given connection that matches the specified state mask. More...
 
pn_session_tpn_session_next (pn_session_t *session, pn_state_t state)
 Retrieve the next session from a given connection that matches the specified state mask. More...
 

Detailed Description

A container of links.

Typedef Documentation

◆ pn_session_t

typedef struct pn_session_t pn_session_t

An AMQP Session object.

A pn_session_t object encapsulates all of the endpoint state associated with an AMQP Session. A pn_session_t object contains zero or more pn_link_t objects.

Function Documentation

◆ pn_session()

pn_session_t* pn_session ( pn_connection_t connection)

Factory for creating a new session on a given connection object.

Creates a new session object and adds it to the set of sessions maintained by the connection object.

Parameters
[in]connectionthe connection object
Returns
a pointer to the new session
Examples
receive.c, and send.c.

◆ pn_session_free()

void pn_session_free ( pn_session_t session)

Free a session object.

When a session is freed it will no longer be retained by the connection once any internal references to the session are no longer needed. Freeing a session will free all links on that session and settle any deliveries on those links.

Parameters
[in]sessionthe session object to free (or NULL)
Examples
broker.c, and direct.c.

◆ pn_session_get_context()

void* pn_session_get_context ( pn_session_t session)

Get the application context that is associated with a session object.

The application context for a session may be set using pn_session_set_context.

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

◆ pn_session_set_context()

void pn_session_set_context ( pn_session_t session,
void *  context 
)

Set a new application context for a session object.

The application context for a session object may be retrieved using pn_session_get_context.

Parameters
[in]sessionthe session object
[in]contextthe application context

◆ pn_session_attachments()

pn_record_t* pn_session_attachments ( pn_session_t session)

Get the attachments that are associated with a session object.

Parameters
[in]sessionthe session whose attachments are to be returned.
Returns
the attachments for the session object

◆ pn_session_state()

pn_state_t pn_session_state ( pn_session_t session)

Get the endpoint state flags for a session.

Parameters
[in]sessionthe session object
Returns
the session's state flags

◆ pn_session_error()

pn_error_t* pn_session_error ( pn_session_t session)

Deprecated - Use pn_session_condition().

Get additional error information associated with the session.

Whenever a session operation fails (i.e. returns an error code), additional error details can be obtained using this function. The error object that is returned may also be used to clear the error condition.

The pointer returned by this operation is valid until the session object is freed.

Deprecation notice: note that this will always return an empty error object

Parameters
[in]sessionthe session object
Returns
the session's error object

◆ pn_session_condition()

pn_condition_t* pn_session_condition ( pn_session_t session)

Get the local condition associated with the session endpoint.

The pn_condition_t object retrieved may be modified prior to closing the session in order to indicate a particular condition exists when the session closes. This is normally used to communicate error conditions to the remote peer, however it may also be used in non error cases. See pn_condition_t for more details.

The pointer returned by this operation is valid until the session object is freed.

Parameters
[in]sessionthe session object
Returns
the session's local condition object

◆ pn_session_remote_condition()

pn_condition_t* pn_session_remote_condition ( pn_session_t session)

Get the remote condition associated with the session endpoint.

The pn_condition_t object retrieved may be examined in order to determine whether the remote peer was indicating some sort of exceptional condition when the remote session endpoint was closed. The pn_condition_t object returned may not be modified.

The pointer returned by this operation is valid until the session object is freed.

Parameters
[in]sessionthe session object
Returns
the session's remote condition object
Examples
broker.c, direct.c, receive.c, and send.c.

◆ pn_session_connection()

pn_connection_t* pn_session_connection ( pn_session_t session)

Get the parent connection for a session object.

This operation retrieves the parent pn_connection_t object that contains the given pn_session_t object.

Parameters
[in]sessionthe session object
Returns
the parent connection object
Examples
broker.c, direct.c, and receive.c.

◆ pn_session_open()

void pn_session_open ( pn_session_t session)

Open a session.

Once this operation has completed, the PN_LOCAL_ACTIVE state flag will be set.

Parameters
[in]sessionthe session object
Examples
broker.c, direct.c, receive.c, and send.c.

◆ pn_session_close()

void pn_session_close ( pn_session_t session)

Close a session.

Once this operation has completed, the PN_LOCAL_CLOSED state flag will be set. This may be called without calling pn_session_open, in this case it is equivalent to calling pn_session_open followed by pn_session_close.

Parameters
[in]sessionthe session object
Examples
broker.c, direct.c, and receive.c.

◆ pn_session_get_incoming_capacity()

size_t pn_session_get_incoming_capacity ( pn_session_t session)

Get the incoming capacity of the session measured in bytes.

The incoming capacity of a session determines how much incoming message data the session can buffer.

Parameters
[in]sessionthe session object
Returns
the incoming capacity of the session in bytes

◆ pn_session_set_incoming_capacity()

void pn_session_set_incoming_capacity ( pn_session_t session,
size_t  capacity 
)

Set the incoming capacity for a session object.

The incoming capacity of a session determines how much incoming message data the session can buffer, by governing the size of the session incoming-window for transfer frames. This happens in concert with the transport max frame size, and only when both values have been set.

NOTE: If set, this value must be greater than or equal to the negotiated frame size of the transport. The window is computed as a whole number of frames when dividing remaining capacity at a given time by the connection max frame size. As such, capacity and max frame size should be chosen so as to ensure the frame window isn't unduly small and limiting performance.

Parameters
[in]sessionthe session object
[in]capacitythe incoming capacity for the session in bytes

◆ pn_session_get_outgoing_window()

size_t pn_session_get_outgoing_window ( pn_session_t session)

Get the outgoing window for a session object.

Parameters
[in]sessionthe session object
Returns
the outgoing window for the session

◆ pn_session_set_outgoing_window()

void pn_session_set_outgoing_window ( pn_session_t session,
size_t  window 
)

Set the outgoing window for a session object.

Parameters
[in]sessionthe session object
[in]windowthe outgoing window for the session

◆ pn_session_outgoing_bytes()

size_t pn_session_outgoing_bytes ( pn_session_t session)

Get the number of outgoing bytes currently buffered by a session.

Parameters
[in]sessionthe session object
Returns
the number of outgoing bytes currently buffered

◆ pn_session_incoming_bytes()

size_t pn_session_incoming_bytes ( pn_session_t session)

Get the number of incoming bytes currently buffered by a session.

Parameters
[in]sessionthe session object
Returns
the number of incoming bytes currently buffered

◆ pn_session_head()

pn_session_t* pn_session_head ( pn_connection_t connection,
pn_state_t  state 
)

Retrieve the first session from a given connection that matches the specified state mask.

Examines the state of each session owned by the connection, and returns the first session that matches the given state mask. If state contains both local and remote flags, then an exact match against those flags is performed. If state contains only local or only remote flags, then a match occurs if any of the local or remote flags are set respectively.

Parameters
[in]connectionto be searched for matching sessions
[in]statemask to match
Returns
the first session owned by the connection that matches the mask, else NULL if no sessions match

◆ pn_session_next()

pn_session_t* pn_session_next ( pn_session_t session,
pn_state_t  state 
)

Retrieve the next session from a given connection that matches the specified state mask.

When used with pn_session_head, application can access all sessions on the connection that match the given state. See pn_session_head for description of match behavior.

Parameters
[in]sessionthe previous session obtained from pn_session_head or pn_session_next
[in]statemask to match.
Returns
the next session owned by the connection that matches the mask, else NULL if no sessions match