Qpid C++ Messaging API  1.37.0
qpid::messaging::Connection Class Reference

#include <Connection.h>

Inheritance diagram for qpid::messaging::Connection:
qpid::messaging::Handle< ConnectionImpl >

Public Member Functions

QPID_MESSAGING_EXTERN Connection (ConnectionImpl *impl)
QPID_MESSAGING_EXTERN Connection (const Connection &)
QPID_MESSAGING_EXTERN Connection (const std::string &url, const qpid::types::Variant::Map &options=qpid::types::Variant::Map())
QPID_MESSAGING_EXTERN Connection (const std::string &url, const std::string &options)
QPID_MESSAGING_EXTERN Connectionoperator= (const Connection &)
QPID_MESSAGING_EXTERN void setOption (const std::string &name, const qpid::types::Variant &value)
QPID_MESSAGING_EXTERN bool isOpen () const
QPID_MESSAGING_EXTERN void reconnect (const std::string &url)
QPID_MESSAGING_EXTERN void reconnect ()
QPID_MESSAGING_EXTERN std::string getUrl () const
QPID_MESSAGING_EXTERN Session createTransactionalSession (const std::string &name=std::string())
QPID_MESSAGING_EXTERN Session createSession (const std::string &name=std::string())
QPID_MESSAGING_EXTERN Session getSession (const std::string &name) const
QPID_MESSAGING_EXTERN std::string getAuthenticatedUsername ()
- Public Member Functions inherited from qpid::messaging::Handle< ConnectionImpl >
QPID_MESSAGING_INLINE_EXTERN operator bool () const
QPID_MESSAGING_INLINE_EXTERN bool operator! () const
void swap (Handle< ConnectionImpl > &h)


class qpid::messaging::PrivateImplRef< Connection >

Additional Inherited Members

- Protected Types inherited from qpid::messaging::Handle< ConnectionImpl >
typedef ConnectionImpl Impl
- Protected Attributes inherited from qpid::messaging::Handle< ConnectionImpl >
Impl * impl

Detailed Description

A connection represents a network connection to a remote endpoint.

Constructor & Destructor Documentation

◆ Connection() [1/2]

QPID_MESSAGING_EXTERN qpid::messaging::Connection::Connection ( const std::string &  url,
const qpid::types::Variant::Map &  options = qpid::types::Variant::Map() 

Current implementation supports the following options:

  • heartbeat: the heartbeat interval in seconds
  • tcp_nodelay: true/false, whether nagle should be disabled or not
  • transport: the underlying transport to use (e.g. tcp, ssl, rdma)
  • protocol: the version of AMQP to use (e.g. amqp0-10 or amqp1.0)

(Note: the transports and/or protocols recognised may depend on which plugins are loaded. AT present support for heartbeats is missing in AMQP 1.0)

  • username: the username to authenticate as
  • password: the password to use if required by the selected authentication mechanism
  • sasl_mechanisms: a space separated list of acceptable SASL mechanisms
  • sasl_min_ssf: the minimum acceptable security strength factor
  • sasl_max_ssf: the maximum acceptable security strength factor
  • sasl_service: the service name if needed by the SASL mechanism in use

Reconnect behaviour can be controlled through the following options:

  • reconnect: true/false (enables/disables reconnect entirely)
  • reconnect_timeout: seconds (give up and report failure after specified time)
  • reconnect_limit: n (give up and report failure after specified number of attempts)
  • reconnect_interval_min: seconds (initial delay between failed reconnection attempts)
  • reconnect_interval_max: seconds (maximum delay between failed reconnection attempts)
  • reconnect_interval: shorthand for setting the same reconnect_interval_min/max
  • reconnect_urls: list of alternate urls to try when connecting

The reconnect_interval is the time that the client waits for after a failed attempt to reconnect before retrying. It starts at the value of the min_retry_interval and is doubled every failure until the value of max_retry_interval is reached.

Values in seconds can be fractional, for example 0.001 is a millisecond delay.

If the SSL transport is used, the following options apply:

  • ssl_cert_name: the name of the certificate to use for a given
  • connection ssl_ignore_hostname_verification_failure: if set to true, will allow client to connect to server even if the hostname used (or ip address) doesn't match what is in the servers certificate. I.e. this disables authentication of the server to the client (and should be used only as a last resort)

When AMQP 0-10 is used, the following options apply:

  • virtualhost: The name of the virtual host to work with.

When AMQP 1.0 is used, the following options apply:

  • container_id: sets the container id to use for the connection
  • nest_annotations: if true, any annotations in received messages will be presented as properties with keys x-amqp-delivery-annotations or x-amqp-delivery-annotations and values that are nested maps containing the annotations. If false, the annotations will simply be merged in with the properties.
  • set_to_on_send: If true, all sent messages will have the to field set to the node name of the sender
  • properties or client_properties: the properties to include in the open frame sent

The following options can be used to tune behaviour if needed (these are not yet supported over AMQP 1.0):

  • tcp_nodelay: disables Nagle's algorithm on the underlying tcp socket
  • max_channels: restricts the maximum number of channels supported
  • max_frame_size: restricts the maximum frame size supported

◆ Connection() [2/2]

QPID_MESSAGING_EXTERN qpid::messaging::Connection::Connection ( const std::string &  url,
const std::string &  options 

Creates a connection using an option string of the form {name:value,name2:value2...}, see above for options supported.

InvalidOptionStringif the string does not match the correct syntax

Member Function Documentation

◆ close()

QPID_MESSAGING_EXTERN void qpid::messaging::Connection::close ( )

Closes a connection and all sessions associated with it. An opened connection must be closed before the last handle is allowed to go out of scope.

◆ getUrl()

QPID_MESSAGING_EXTERN std::string qpid::messaging::Connection::getUrl ( ) const

returns a url reprsenting the broker the client is currently connected to (or an empty string if it is not connected).

◆ reconnect() [1/2]

QPID_MESSAGING_EXTERN void qpid::messaging::Connection::reconnect ( const std::string &  url)

Attempts to reconnect to the specified url, re-establish existing sessions, senders and receivers and resend any indoubt messages.

This can be used to directly control reconnect behaviour rather than using the reconnect option for automatically handling that.

◆ reconnect() [2/2]

QPID_MESSAGING_EXTERN void qpid::messaging::Connection::reconnect ( )

Attempts to reconnect to the original url, including any specified reconnect_urls, re-establish existing sessions, senders and receivers and resend any indoubt messages.

This can be used to directly control reconnect behaviour rather than using the reconnect option for automatically handling that.

The documentation for this class was generated from the following file: