23#ifndef XCOM_NETWORK_PROVIDER_H
24#define XCOM_NETWORK_PROVIDER_H
29#include <condition_variable>
60 std::pair<bool, int>
start()
override;
61 std::pair<bool, int>
stop()
override;
82 bool const successful =
100 const std::string &address,
const unsigned short port,
102 int connection_timeout =
Base class for External Network Providers.
Definition: network_provider.h:268
static constexpr int default_connection_timeout()
Definition: network_provider.h:424
static int xcom_init_ssl(const char *server_key_file, const char *server_cert_file, const char *client_key_file, const char *client_cert_file, const char *ca_file, const char *ca_path, const char *crl_file, const char *crl_path, const char *cipher, const char *tls_version, const char *tls_ciphersuites)
Definition: xcom_network_provider_ssl_native_lib.cc:466
Definition: xcom_network_provider.h:39
Xcom_network_provider()
Construct a new Xcom_network_provider object.
Definition: xcom_network_provider.h:48
bool configure(const Network_configuration_parameters ¶ms) override
Configures this network provider.
Definition: xcom_network_provider.h:74
virtual ~Xcom_network_provider() override
Definition: xcom_network_provider.h:55
bool finalize_secure_connections_context() override
Definition: xcom_network_provider.cc:154
result m_open_server_socket
Definition: xcom_network_provider.h:152
enum_transport_protocol get_communication_stack() const override
Get the communication stack implemented by this provider.
Definition: xcom_network_provider.h:62
bool configure_secure_connections(const Network_configuration_parameters ¶ms) override
Configures the active provider with all things needed to establish SSL connections.
Definition: xcom_network_provider.h:80
bool m_init_error
Definition: xcom_network_provider.h:146
bool m_initialized
Definition: xcom_network_provider.h:145
result get_open_server_socket() const
Definition: xcom_network_provider.h:136
xcom_port get_port() const
Definition: xcom_network_provider.h:123
bool m_shutdown_tcp_server
Definition: xcom_network_provider.h:150
Xcom_network_provider(Xcom_network_provider &¶m)
Definition: xcom_network_provider.h:42
std::condition_variable m_init_cond_var
Definition: xcom_network_provider.h:148
void notify_provider_ready(bool init_error=false)
Notify that the provider is ready.
Definition: xcom_network_provider.cc:394
bool is_provider_initialized() const
Definition: xcom_network_provider.h:126
Xcom_network_provider(Xcom_network_provider ¶m)=delete
void set_shutdown_tcp_server(bool shutdown_tcp_server)
Definition: xcom_network_provider.h:132
int close_connection(const Network_connection &connection) override
Closes an open connection to another XCom endpoint served by the same Network provider.
Definition: xcom_network_provider.cc:160
bool wait_for_provider_ready()
Waits for the provider to become ready.
Definition: xcom_network_provider.cc:380
bool should_shutdown_tcp_server() const
Definition: xcom_network_provider.h:131
std::thread m_network_provider_tcp_server
Definition: xcom_network_provider.h:143
std::mutex m_init_lock
Definition: xcom_network_provider.h:147
void cleanup_secure_connections_context() override
Definition: xcom_network_provider.cc:148
void set_port(xcom_port port)
Definition: xcom_network_provider.h:124
std::unique_ptr< Network_connection > open_connection(const std::string &address, const unsigned short port, const Network_security_credentials &security_credentials, int connection_timeout=Network_provider::default_connection_timeout()) override
Opens a new connection to another XCom endpoint served by the same Network provider.
Definition: xcom_network_provider.cc:179
void set_open_server_socket(result open_socket)
Definition: xcom_network_provider.h:137
std::pair< bool, int > start() override
Inherited methods from Gcs_network_provider.
Definition: xcom_network_provider.cc:401
std::pair< bool, int > stop() override
Stops the network provider.
Definition: xcom_network_provider.cc:429
xcom_port m_port
Definition: xcom_network_provider.h:142
Definition: varlen_sort.h:183
enum_transport_protocol
Enum that describes the available XCom Communication Stacks.
Definition: network_provider.h:44
@ XCOM_PROTOCOL
Definition: network_provider.h:46
int init_error(const PFS_global_param *param)
Definition: pfs_error.cc:65
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:32
Possible configuration parameters.
Definition: network_provider.h:153
struct ssl_parameters ssl_params
Definition: network_provider.h:156
struct tls_parameters tls_params
Definition: network_provider.h:157
unsigned short port
Definition: network_provider.h:154
Represents an open connection.
Definition: network_provider.h:163
Security credentials to establish a connection.
Definition: network_provider.h:96
const char * server_key_file
Definition: network_provider.h:135
const char * client_key_file
Definition: network_provider.h:137
const char * ca_path
Definition: network_provider.h:140
const char * cipher
Definition: network_provider.h:143
const char * crl_file
Definition: network_provider.h:141
const char * client_cert_file
Definition: network_provider.h:138
const char * crl_path
Definition: network_provider.h:142
const char * server_cert_file
Definition: network_provider.h:136
const char * ca_file
Definition: network_provider.h:139
const char * tls_ciphersuites
Definition: network_provider.h:147
const char * tls_version
Definition: network_provider.h:146
unsigned short xcom_port
Definition: xcom_common.h:45