linkahead/connection.h
Configuration and setup of the connection.
- Author
Timm Fitschen
- Date
2021-05-18
-
namespace linkahead
-
namespace connection
-
class Connection
- #include <connection.h>
A reusable connection to a LinkAheadServer.
Public Functions
-
explicit Connection(const ConnectionConfiguration &configuration)
-
auto RetrieveVersionInfoNoExceptions() const noexcept -> TransactionStatus
Request the server’s version and return the status of this request after termination..
The version is stored in the connection object and may be retrieved via GetVersionInfo() if the request was successful.
This method does not throw any exceptions. Errors are indicated in the return value instead.
-
auto RetrieveVersionInfo() const -> const VersionInfo&
Request and return the server’s version.
If the request terminated unsuccessfully, a corresponding exception is being thrown.
-
inline auto GetVersionInfo() const noexcept -> const VersionInfo*
Return the server’s version.
Clients need to call RetrieveVersionInfo() or RetrieveVersionInfoNoExceptions() before the version info is locally available. Otherwise a nullptr is being returned.
-
auto CreateTransaction() const -> std::unique_ptr<Transaction>
Create a new transaction object which uses this connection and return it.
Private Members
-
std::shared_ptr<grpc::Channel> channel
GRPC-Channel (HTTP/2 Connection plus Authentication). We use a shared pointer because Transaction instances also own the channel.
-
std::unique_ptr<GeneralInfoService::Stub> general_info_service
Service for retrieving the server’s version. We use a unique pointer because only this connection owns and uses this service.
-
mutable std::unique_ptr<VersionInfo> version_info
The server’s version. It’s mutable because it is rather a cache than a data member which is subject to change.
-
std::shared_ptr<EntityTransactionService::Stub> entity_transaction_service
Service for entity transactions. We use a shared pointer because Transaction instances also own this service stub.
-
std::shared_ptr<FileTransmissionService::Stub> file_transmission_service
Service for file transmission (download and upload). We use a shared pointer because Transaction instances also own this service stub.
-
explicit Connection(const ConnectionConfiguration &configuration)
-
class ConnectionManager
- #include <connection.h>
Lazily creates and caches reusable connection instances.
Lazily creates and caches reusable connection instances. Singleton.
This class delegates the configuration of new connections to the global ConfigurationManager.
A reset of the ConfigurationManager also resets the ConnectionManager.
Public Functions
-
ConnectionManager(ConnectionManager const&) = delete
-
void operator=(ConnectionManager const&) = delete
Public Static Functions
-
static ConnectionManager &GetInstance()
-
static inline auto HasConnection(const std::string &name) -> bool
-
static inline auto GetConnection(const std::string &name) -> const std::shared_ptr<Connection>&
-
static inline auto GetDefaultConnection() -> const std::shared_ptr<Connection>&
Get the connection marked by the “default” key in the configuration.
-
static inline auto Reset() -> void
Private Functions
-
ConnectionManager() = default
-
auto mHasConnection(const std::string &name) const -> bool
-
auto mGetConnection(const std::string &name) const -> const std::shared_ptr<Connection>&
-
auto mGetDefaultConnection() const -> const std::shared_ptr<Connection>&
-
inline auto mReset() -> void
Private Members
-
mutable std::map<std::string, std::shared_ptr<Connection>> connections
-
mutable std::string default_connection_name
Private Static Attributes
-
static ConnectionManager mInstance
-
ConnectionManager(ConnectionManager const&) = delete
-
class Connection
-
namespace connection