23#ifndef GCS_XCOM_INTERFACE_INCLUDED
24#define GCS_XCOM_INTERFACE_INCLUDED
69 xcom_event_horizon event_horizon);
84 bool same_view(synode_no config_id)
const;
307 const std::string *debug_path);
Circular buffer that can be used to asynchronously feed a sink.
Definition: gcs_logging_system.h:190
This interface represents all the communication facilities that a binding implementation should provi...
Definition: gcs_communication_interface.h:89
This interface represents all the control functionalities that a binding implementation must provide.
Definition: gcs_control_interface.h:110
Default debugger which is used only by GCS and XCOM.
Definition: gcs_logging_system.h:509
This represents the unique identification of a group.
Definition: gcs_group_identifier.h:34
Definition: gcs_group_management_interface.h:31
This class is to be used to provide parameters to bindings in a transparent and generic way.
Definition: gcs_types.h:58
This interface must be implemented by all specific binding implementations as its entry point.
Definition: gcs_interface.h:100
Definition: gcs_xcom_networking.h:254
This interface represents all statistics that a binding implementation should provide.
Definition: gcs_statistics_interface.h:32
This class stores all node suspicions, as well as the timeout and period parameters used by the threa...
Definition: gcs_xcom_control_interface.h:68
A Gcs_xcom_interface needs to have an instance of this class initialized before engaging XCom.
Definition: gcs_xcom_proxy.h:1044
Keep track of the most recent XCom configuration the node will deliver upwards.
Definition: gcs_xcom_interface.h:54
synode_no config_id_
Definition: gcs_xcom_interface.h:120
bool same_xcom_nodes(Gcs_xcom_nodes const &xcom_nodes) const
Checks whether this configuration's membership matches the given membership.
Definition: gcs_xcom_interface.cc:82
Gcs_xcom_config & operator=(Gcs_xcom_config const &)=delete
xcom_event_horizon event_horizon_
Definition: gcs_xcom_interface.h:122
Gcs_xcom_config(Gcs_xcom_config &&)=delete
bool same_event_horizon(xcom_event_horizon const &event_horizon) const
Checks whether this configuration's event horizon matches the given event horizon.
Definition: gcs_xcom_interface.cc:96
Gcs_xcom_config()
Definition: gcs_xcom_interface.cc:59
Gcs_xcom_nodes xcom_nodes_
Definition: gcs_xcom_interface.h:121
Gcs_xcom_config(Gcs_xcom_config const &)=delete
bool same_xcom_nodes_v3(Gcs_xcom_nodes const &xcom_nodes) const
Checks whether this configuration's membership matches the given membership.
Definition: gcs_xcom_interface.cc:101
void reset()
Resets the object to its initial state.
Definition: gcs_xcom_interface.cc:62
bool same_view(synode_no config_id) const
Checks whether this configuration's synod matches the the given synod.
Definition: gcs_xcom_interface.cc:78
void update(synode_no config_id, Gcs_xcom_nodes const &xcom_nodes, xcom_event_horizon event_horizon)
Updates this configuration's information.
Definition: gcs_xcom_interface.cc:68
Gcs_xcom_config & operator=(Gcs_xcom_config &&)=delete
bool has_view() const
Checks whether this configuration pertains to a received XCom view, i.e.
Definition: gcs_xcom_interface.cc:76
Implementation of the Gcs_interface for the XCom binding.
Definition: gcs_xcom_interface.h:148
Gcs_async_buffer * m_default_sink
Definition: gcs_xcom_interface.h:418
gcs_xcom_group_interfaces * get_group_interfaces(const Gcs_group_identifier &group_identifier)
Internal helper method that retrieves all group interfaces for a certain group.
Definition: gcs_xcom_interface.cc:736
Gcs_xcom_interface & operator=(Gcs_xcom_interface const &)
enum_gcs_error configure(const Gcs_interface_parameters &interface_params) override
Method used by a binding implementation in order to implement any type of necessary dynamic reconfigu...
Definition: gcs_xcom_interface.cc:432
Gcs_default_debugger * m_default_debugger
Definition: gcs_xcom_interface.h:424
Gcs_statistics_interface * get_statistics(const Gcs_group_identifier &group_identifier) override
Method that retrieves the binding implementation of the Statistics interface.
Definition: gcs_xcom_interface.cc:721
enum_gcs_error initialize(const Gcs_interface_parameters &interface_params) override
This block implements the virtual methods defined in Gcs_interface.
Definition: gcs_xcom_interface.cc:312
enum_gcs_error setup_runtime_resources(Gcs_interface_runtime_requirements &reqs) override
Definition: gcs_xcom_interface.cc:819
static Gcs_interface * interface_reference_singleton
Definition: gcs_xcom_interface.h:151
Gcs_control_interface * get_control_session(const Gcs_group_identifier &group_identifier) override
Method that retrieves the binding implementation of the Control Session interface.
Definition: gcs_xcom_interface.cc:706
bool m_is_initialized
Definition: gcs_xcom_interface.h:394
Network_namespace_manager * m_netns_manager
Network namespace service provider.
Definition: gcs_xcom_interface.h:444
void announce_finalize_to_view_control()
Announces that a finalize was called to all group instances that use a Gcs_xcom_view_change_control_i...
Definition: gcs_xcom_interface.cc:650
static Gcs_interface * get_interface()
Since one wants that a single instance exists, the interface implementation shall be retrieved via a ...
Definition: gcs_xcom_interface.cc:183
void clean_group_references()
Internal helper method to delete all previously created group references.
Definition: gcs_xcom_interface.cc:861
Gcs_communication_interface * get_communication_session(const Gcs_group_identifier &group_identifier) override
Method that retrieves the binding implementation of the Communication Session interface.
Definition: gcs_xcom_interface.cc:713
Gcs_group_identifier * get_xcom_group_information(const u_long group_id)
Definition: gcs_xcom_interface.cc:1177
Gcs_ip_allowlist & get_ip_allowlist()
Must return the allowlist.
Definition: gcs_xcom_interface.cc:1333
enum_gcs_error cleanup_runtime_resources(Gcs_interface_runtime_requirements &reqs) override
Definition: gcs_xcom_interface.cc:832
bool set_xcom_identity(Gcs_xcom_node_information const &node_information, Gcs_xcom_proxy &xcom_proxy)
Used to initialize the unique identifier of the XCom instance.
Definition: gcs_xcom_interface.cc:885
~Gcs_xcom_interface() override
void initialize_peer_nodes(const std::string *peer_nodes)
Helper used to parse the peer_nodes parameter and to initialize XCom peer nodes.
Definition: gcs_xcom_interface.cc:1135
bool initialize_xcom(const Gcs_interface_parameters &interface_params)
Contains all the code needed to initialize a connection to the xcom daemon.
Definition: gcs_xcom_interface.cc:904
enum_gcs_error finalize() override
Method used by a binding implementation in order to implement any internal shutdown procedure.
Definition: gcs_xcom_interface.cc:656
Gcs_xcom_node_address * m_node_address
Definition: gcs_xcom_interface.h:386
Gcs_ip_allowlist m_ip_allowlist
The IP allowlist.
Definition: gcs_xcom_interface.h:429
bool m_boot
Definition: gcs_xcom_interface.h:396
void finalize_xcom()
Contains all the code needed to stop the xcom daemon if it was not already stopped as it should have ...
Definition: gcs_xcom_interface.cc:612
void make_gcs_leave_group_on_error()
Makes GCS leave the group when an error has caused XCom to terminate unexpectedly.
Definition: gcs_xcom_interface.cc:633
My_xp_mutex_impl m_wait_for_ssl_init_mutex
Definition: gcs_xcom_interface.h:439
bool is_initialized() override
Method used to report if the binding interface has already been initialized.
Definition: gcs_xcom_interface.cc:704
enum_gcs_error set_logger(Logger_interface *logger) override
Method that retrieves the binding implementation of the Group Management Session interface.
Definition: gcs_xcom_interface.cc:815
enum_gcs_error initialize_logging(const std::string *debug_file, const std::string *debug_path)
Method to initialize the logging and debugging systems.
Definition: gcs_xcom_interface.cc:237
std::map< u_long, Gcs_group_identifier * > m_xcom_configured_groups
Definition: gcs_xcom_interface.h:381
std::vector< Gcs_xcom_node_address * > m_xcom_peers
Definition: gcs_xcom_interface.h:391
My_xp_cond_impl m_wait_for_ssl_init_cond
protects the m_ssl_init_state thread shared variable
Definition: gcs_xcom_interface.h:438
void set_node_address(std::string const &address)
Definition: gcs_xcom_interface.cc:1202
static void cleanup_thread_ssl_resources()
Public method that cleans thread-local resources related to communication.
Definition: gcs_xcom_interface.cc:209
Logger_interface * m_default_logger
Definition: gcs_xcom_interface.h:421
Gcs_xcom_node_address * get_node_address()
Definition: gcs_xcom_interface.cc:1197
int m_ssl_init_state
Indicates whether SSL has been initialized and if that initialization was successful.
Definition: gcs_xcom_interface.h:435
Gcs_group_management_interface * get_management_session(const Gcs_group_identifier &group_identifier) override
Method that retrieves the binding implementation of the Group Management Session interface.
Definition: gcs_xcom_interface.cc:729
Gcs_xcom_interface()
XCom binding private constructor.
Definition: gcs_xcom_interface.cc:213
enum_gcs_error finalize_logging()
Method to finalize the logging and debugging systems.
Definition: gcs_xcom_interface.cc:284
Gcs_xcom_app_cfg m_gcs_xcom_app_cfg
The C++ interface to setup and configure xcom properties from GCS.
Definition: gcs_xcom_interface.h:409
Gcs_interface_parameters m_initialization_parameters
The initialization parameters provided through the initialize member function.
Definition: gcs_xcom_interface.h:415
const Gcs_interface_parameters & get_initialization_parameters()
This member function shall return the set of parameters that configure the interface at the time its ...
Definition: gcs_xcom_interface.h:247
void clean_group_interfaces()
Internal helper method to delete all previously created group interfaces.
Definition: gcs_xcom_interface.cc:843
void set_xcom_group_information(const std::string &group_id)
Definition: gcs_xcom_interface.cc:1158
void clear_peer_nodes()
Helper used to delete the existing XCom peer nodes in m_xcom_peers and to clear that vector.
Definition: gcs_xcom_interface.cc:1151
My_xp_socket_util * m_socket_util
Definition: gcs_xcom_interface.h:398
enum_gcs_error configure_message_stages(const Gcs_group_identifier &gid)
Definition: gcs_xcom_interface.cc:1208
Gcs_xcom_interface(Gcs_xcom_interface const &)
static void cleanup()
Public method that finalizes and cleans the singleton.
Definition: gcs_xcom_interface.cc:199
enum_gcs_error configure_suspicions_mgr(Gcs_interface_parameters &p, Gcs_suspicions_manager *mgr)
Definition: gcs_xcom_interface.cc:1288
std::map< std::string, gcs_xcom_group_interfaces * > m_group_interfaces
Definition: gcs_xcom_interface.h:379
void initialize_ssl()
Used to initialize SSL assuming that the necessary parameters have already been read.
Definition: gcs_xcom_interface.cc:878
Stores connection information associated with a node.
Definition: gcs_xcom_group_member_information.h:50
This class contains information on the configuration, i.e set of nodes or simply site definition.
Definition: gcs_xcom_group_member_information.h:390
Definition: gcs_xcom_proxy.h:51
Definition: gcs_xcom_state_exchange.h:369
Definition: gcs_xcom_state_exchange.h:715
Logger interface that must be used to define a logger object.
Definition: gcs_logging.h:124
Definition: my_xp_cond.h:135
Definition: my_xp_mutex.h:122
Interface for socket utility methods.
Definition: my_xp_util.h:153
Class that provides Network Namespace services.
Definition: network_provider.h:213
const char * p
Definition: ctype-mb.cc:1236
enum_gcs_error
This enumeration describes errors which can occur during group communication operations.
Definition: gcs_types.h:40
int cb_xcom_match_port(xcom_port if_port)
Definition: gcs_xcom_interface.cc:1712
struct xcom_group_interfaces gcs_xcom_group_interfaces
Struct that holds instances of this binding interface implementations.
static Logger logger
The "top-level" logger used when no connection context is given.
Definition: test_trace_plugin.cc:295
Runtime external resources that should be provided to an instance of Gcs_interface.
Definition: gcs_interface.h:40
Struct that holds instances of this binding interface implementations.
Definition: gcs_xcom_interface.h:130
Gcs_statistics_interface * statistics_interface
Definition: gcs_xcom_interface.h:133
Gcs_group_management_interface * management_interface
Definition: gcs_xcom_interface.h:134
Gcs_xcom_state_exchange_interface * se
Definition: gcs_xcom_interface.h:141
Gcs_control_interface * control_interface
Definition: gcs_xcom_interface.h:131
Gcs_xcom_view_change_control_interface * vce
Definition: gcs_xcom_interface.h:140
Gcs_communication_interface * communication_interface
Definition: gcs_xcom_interface.h:132
__u_long u_long
Definition: types.h:73
unsigned short xcom_port
Definition: xcom_common.h:45