Poco::MongoDB

class Connection

Library: MongoDB
Package: MongoDB
Header: Poco/MongoDB/Connection.h

Description

Represents a connection to a MongoDB server using the MongoDB wire protocol.

See https://docs.mongodb.com/manual/reference/mongodb-wire-protocol/ for more information on the wire protocol.

THREAD SAFETY: This class is NOT thread-safe. A single Connection instance must not be used concurrently from multiple threads without external synchronization. Concurrent calls to sendRequest() will result in interleaved data on the socket and corrupted responses.

For multi-threaded applications, use one of these patterns: - Each thread has its own Connection instance - Use ObjectPool<Connection> with PooledConnection for connection pooling - Protect shared Connection with external mutex

Member Summary

Member Functions: address, connect, disconnect, readResponse, sendRequest

Nested Classes

class SocketFactory

 more...

Types Aliases

Ptr

using Ptr = Poco::SharedPtr < Connection >;

Constructors

Connection

Connection();

Creates an unconnected Connection.

Use this when you want to connect later on.

Connection

Connection(
    const std::string & hostAndPort
);

Creates a Connection connected to the given MongoDB instance at host:port.

The host and port must be separated with a colon.

Connection

Connection(
    const Poco::Net::SocketAddress & addrs
);

Creates a Connection connected to the given MongoDB instance at the given address.

Connection

Connection(
    const Poco::Net::StreamSocket & socket
);

Creates a Connection connected to the given MongoDB instance using the given socket, which must already be connected.

Connection

Connection(
    const std::string & uri,
    SocketFactory & socketFactory
);

Creates a Connection connected to the given MongoDB instance at the given URI.

See the corresponding connect() method for more information.

Connection

Connection(
    const std::string & host,
    int port
);

Creates a Connection connected to the given MongoDB instance at host and port.

Destructor

~Connection virtual

virtual ~Connection();

Destroys the Connection.

Member Functions

address inline

[[nodiscard]]
Poco::Net::SocketAddress address() const;

Returns the address of the MongoDB server.

connect

void connect(
    const std::string & hostAndPort
);

Connects to the given MongoDB server.

The host and port must be separated with a colon.

connect

void connect(
    const std::string & uri,
    SocketFactory & socketFactory
);

Connects to the given MongoDB instance at the given URI.

The URI must be in standard MongoDB connection string URI format:

mongodb://<user>:<password>@hostname.com:<port>/database-name?options

The following options are supported:

  • ssl: If ssl=true is specified, a custom SocketFactory subclass creating a SecureStreamSocket must be supplied.
  • connectTimeoutMS: Socket connection timeout in milliseconds.
  • socketTimeoutMS: Socket send/receive timeout in milliseconds.
  • authMechanism: Authentication mechanism. Only "SCRAM-SHA-1" is supported.

Unknown options are silently ignored.

Will also attempt to authenticate using the specified credentials, using Database::authenticate().

Throws a Poco::NoPermissionException if authentication fails.

connect

void connect(
    const std::string & host,
    int port
);

Connects to the given MongoDB server.

connect

void connect(
    const Poco::Net::SocketAddress & addrs
);

Connects to the given MongoDB server.

connect

void connect(
    const Poco::Net::StreamSocket & socket
);

Connects using an already connected socket.

disconnect

void disconnect();

Disconnects from the MongoDB server.

readResponse

void readResponse(
    OpMsgMessage & response
);

Reads additional response data when previous message's flag moreToCome indicates that server will send more data. NOTE: See comments in OpMsgCursor code.

sendRequest

void sendRequest(
    OpMsgMessage & request,
    OpMsgMessage & response
);

Sends a request to the MongoDB server and receives the response using OP_MSG wire protocol.

sendRequest

void sendRequest(
    OpMsgMessage & request
);

Sends an unacknowledged request to the MongoDB server using OP_MSG wire protocol. No response is sent by the server.

connect protected

void connect();