MySQL 8.0.40
Source Code Documentation
Gcs_xcom_control Class Reference

#include <gcs_xcom_control_interface.h>

Inheritance diagram for Gcs_xcom_control:
[legend]

Public Member Functions

 Gcs_xcom_control (Gcs_xcom_node_address *xcom_node_address, std::vector< Gcs_xcom_node_address * > &xcom_peers, Gcs_group_identifier group_identifier, Gcs_xcom_proxy *xcom_proxy, Gcs_xcom_group_management *xcom_group_management, Gcs_xcom_engine *gcs_engine, Gcs_xcom_state_exchange_interface *state_exchange, Gcs_xcom_view_change_control_interface *view_control, bool boot, My_xp_socket_util *socket_util, std::unique_ptr< Network_provider_operations_interface > comms_operation_interface)
 Gcs_xcom_control_interface constructor. More...
 
 ~Gcs_xcom_control () override
 
enum_gcs_error join () override
 Method that causes one to join the group that this interface pertains. More...
 
enum_gcs_error do_join (const bool retry=true)
 
enum_gcs_error retry_do_join ()
 
enum_gcs_error leave () override
 Method that causes one to leave the group that this interface pertains. More...
 
enum_gcs_error do_leave ()
 
void do_leave_view ()
 Sends a leave view message to informat that XCOM has already exited or is about to do so. More...
 
void do_remove_node_from_group ()
 Request other members to remove node from the group. More...
 
bool belongs_to_group () override
 Reports if one has joined and belongs to a group. More...
 
Gcs_viewget_current_view () override
 Returns the currently installed view. More...
 
const Gcs_member_identifier get_local_member_identifier () const override
 Retrieves the local identifier of this member on a group. More...
 
int add_event_listener (const Gcs_control_event_listener &event_listener) override
 Registers an implementation of a Gcs_control_event_listener that will receive Control Events. More...
 
void remove_event_listener (int event_listener_handle) override
 Removes a previously registered event listener. More...
 
bool xcom_receive_global_view (synode_no const config_id, synode_no message_id, Gcs_xcom_nodes *xcom_nodes, bool do_not_deliver_to_client, synode_no max_synode)
 The purpose of this method is to be called when in Gcs_xcom_interface callback method of View Changing is invoked. More...
 
bool xcom_receive_local_view (synode_no const config_id, Gcs_xcom_nodes *xcom_nodes, synode_no max_synode)
 
bool xcom_receive_leave ()
 
void process_control_message (Gcs_message *msg, Gcs_protocol_version maximum_supported_protocol_version, Gcs_protocol_version used_protocol_version)
 Process a message from the control interface and if necessary delegate it to the state exchange. More...
 
std::map< int, const Gcs_control_event_listener & > * get_event_listeners ()
 
Gcs_xcom_node_addressget_node_address ()
 Return the address associated with the current node. More...
 
Gcs_xcom_node_information const & get_node_information () const
 
Gcs_xcom_proxyget_xcom_proxy ()
 Return a pointer to the proxy object used to access XCOM. More...
 
Gcs_suspicions_managerget_suspicions_manager ()
 
void set_boot_node (bool boot)
 
void set_node_address (Gcs_xcom_node_address *node_address)
 Set the address associated with the current node. More...
 
void set_peer_nodes (std::vector< Gcs_xcom_node_address * > &xcom_peers)
 Inserts in m_initial_peers copies of the Gcs_xcom_node_address objects whose addresses are in the xcom_peers vector. More...
 
void clear_peer_nodes ()
 Deletes all the Gcs_xcom_node_address objects pointed by the elements of the m_initial_peers vector, clearing it at the end. More...
 
My_xp_socket_utilget_socket_util ()
 Return a pointer to a socket utility. More...
 
void wait_for_xcom_thread ()
 This member function can be used to wait until xcom thread exits. More...
 
bool is_xcom_running ()
 Whether XCOM's Thread is running or not. More...
 
void set_join_behavior (unsigned int join_attempts, unsigned int join_sleep_time)
 
enum_gcs_error set_xcom_cache_size (uint64_t size) override
 Sets a new value for the maximum size of the XCom cache. More...
 
void install_leave_view (Gcs_view::Gcs_view_error_code error_code)
 Notify that the current member has left the group and whether it left gracefully or not. More...
 
- Public Member Functions inherited from Gcs_control_interface
virtual ~Gcs_control_interface ()=default
 

Static Public Attributes

static constexpr int CONNECTION_ATTEMPTS = 10
 

Protected Attributes

bool m_xcom_running
 
bool m_leave_view_requested
 
bool m_leave_view_delivered
 
bool m_boot
 
std::vector< Gcs_xcom_node_address * > m_initial_peers
 
Gcs_xcom_view_change_control_interfacem_view_control
 
Gcs_xcom_enginem_gcs_engine
 

Private Member Functions

void init_me ()
 
void build_total_members (Gcs_xcom_nodes *xcom_nodes, std::vector< Gcs_member_identifier * > &alive_members, std::vector< Gcs_member_identifier * > &failed_members)
 
void build_left_members (std::vector< Gcs_member_identifier * > &left_members, std::vector< Gcs_member_identifier * > &alive_members, std::vector< Gcs_member_identifier * > &failed_members, const std::vector< Gcs_member_identifier > *current_members)
 
void build_joined_members (std::vector< Gcs_member_identifier * > &joined_members, std::vector< Gcs_member_identifier * > &alive_members, const std::vector< Gcs_member_identifier > *current_members)
 
void build_member_suspect_nodes (std::vector< Gcs_member_identifier * > &member_suspect_nodes, std::vector< Gcs_member_identifier * > &failed_members, const std::vector< Gcs_member_identifier > *current_members)
 
void build_non_member_suspect_nodes (std::vector< Gcs_member_identifier * > &non_member_suspect_nodes, std::vector< Gcs_member_identifier * > &failed_members, const std::vector< Gcs_member_identifier > *current_members)
 
bool is_killer_node (const std::vector< Gcs_member_identifier * > &alive_members) const
 Decides if this node shall be the one to kill failed nodes. More...
 
void build_member_list (std::set< Gcs_member_identifier * > *origin, std::vector< Gcs_member_identifier > *to_fill)
 Copies from a set to a vector of Gcs_member_identifier. More...
 
void install_view (Gcs_xcom_view_identifier *new_view_id, const Gcs_group_identifier &group_id, std::map< Gcs_member_identifier, Xcom_member_state * > *states, std::set< Gcs_member_identifier * > *total, std::set< Gcs_member_identifier * > *left, std::set< Gcs_member_identifier * > *join, Gcs_view::Gcs_view_error_code error_code=Gcs_view::OK)
 Makes all the necessary arrangements to install a new view in the binding and in all registered client applications. More...
 
bool is_this_node_in (std::vector< Gcs_member_identifier * > *members)
 Check whether the current member is in the received vector of members. More...
 
connection_descriptorget_connection_to_node (std::vector< Gcs_xcom_node_address * > *peers_list)
 Cycle through peers_list and try to open a connection to the peer, if it isn't the node itself. More...
 
bool send_add_node_request (std::map< std::string, int > const &my_addresses)
 Attempts to send an add_node request to some initial peer from m_initial_peers. More...
 
bool try_send_add_node_request_to_seeds (std::map< std::string, int > const &my_addresses)
 Attempts to send an add_node request to some initial peer from m_initial_peers. More...
 
std::pair< bool, connection_descriptor * > connect_to_peer (Gcs_xcom_node_address &peer, std::map< std::string, int > const &my_addresses)
 Connects to the given peer's XCom. More...
 
void expel_incompatible_members (std::vector< Gcs_xcom_node_information > const &incompatible_members)
 Expel the given members from XCom. More...
 
 Gcs_xcom_control (const Gcs_xcom_control &)
 
Gcs_xcom_controloperator= (const Gcs_xcom_control &)
 

Private Attributes

Gcs_group_identifierm_gid
 
unsigned int m_gid_hash
 
Gcs_xcom_proxym_xcom_proxy
 
Gcs_xcom_group_managementm_xcom_group_management
 
std::map< int, const Gcs_control_event_listener & > event_listeners
 
Gcs_xcom_node_informationm_local_node_info
 
Gcs_xcom_node_addressm_local_node_address
 
Gcs_xcom_state_exchange_interfacem_state_exchange
 
My_xp_thread_impl m_xcom_thread
 
My_xp_socket_utilm_socket_util
 
unsigned int m_join_attempts
 
unsigned int m_join_sleep_time
 
Gcs_suspicions_managerm_suspicions_manager
 
My_xp_thread_impl m_suspicions_processing_thread
 
Gcs_sock_probe_interfacem_sock_probe_interface
 
std::unique_ptr< Network_provider_operations_interfacem_comms_operation_interface
 

Constructor & Destructor Documentation

◆ Gcs_xcom_control() [1/2]

Gcs_xcom_control::Gcs_xcom_control ( Gcs_xcom_node_address xcom_node_address,
std::vector< Gcs_xcom_node_address * > &  xcom_peers,
Gcs_group_identifier  group_identifier,
Gcs_xcom_proxy xcom_proxy,
Gcs_xcom_group_management xcom_group_management,
Gcs_xcom_engine gcs_engine,
Gcs_xcom_state_exchange_interface state_exchange,
Gcs_xcom_view_change_control_interface view_control,
bool  boot,
My_xp_socket_util socket_util,
std::unique_ptr< Network_provider_operations_interface comms_operation_interface 
)
explicit

Gcs_xcom_control_interface constructor.

Parameters
[in]xcom_node_addressInformation about the node's address
[in]xcom_peersInformation about the nodes that it should get in touch to enter a group
[in]group_identifierGroup identifier object
[in]xcom_proxyProxy implementation reference
[in]xcom_group_managementGroup management reference
[in]gcs_engineMySQL GCS engine
[in]state_exchangeReference to the State Exchange algorithm implementation
[in]view_controlView change control interface reference
[in]bootWhether the node will be used to bootstrap the group
[in]socket_utilReference to a socket utility
[in]comms_operation_interfacean unique_ptr to a Network_provider_operations_interface

◆ ~Gcs_xcom_control()

Gcs_xcom_control::~Gcs_xcom_control ( )
override

◆ Gcs_xcom_control() [2/2]

Gcs_xcom_control::Gcs_xcom_control ( const Gcs_xcom_control )
private

Member Function Documentation

◆ add_event_listener()

int Gcs_xcom_control::add_event_listener ( const Gcs_control_event_listener event_listener)
overridevirtual

Registers an implementation of a Gcs_control_event_listener that will receive Control Events.

See the class header for more details on implementations and usage.

Note that a binding implementation shall not offer the possibility of changing listeners while the system is up and running. In that sense, listeners must be added to it only when booting up the system.

Parameters
[in]event_listenera class that implements Gcs_control_event_listener
Returns
an handle representing the registration of this object to be used in remove_event_listener

Implements Gcs_control_interface.

◆ belongs_to_group()

bool Gcs_xcom_control::belongs_to_group ( )
overridevirtual

Reports if one has joined and belongs to a group.

Return values
trueif belonging to a group

Implements Gcs_control_interface.

◆ build_joined_members()

void Gcs_xcom_control::build_joined_members ( std::vector< Gcs_member_identifier * > &  joined_members,
std::vector< Gcs_member_identifier * > &  alive_members,
const std::vector< Gcs_member_identifier > *  current_members 
)
private

◆ build_left_members()

void Gcs_xcom_control::build_left_members ( std::vector< Gcs_member_identifier * > &  left_members,
std::vector< Gcs_member_identifier * > &  alive_members,
std::vector< Gcs_member_identifier * > &  failed_members,
const std::vector< Gcs_member_identifier > *  current_members 
)
private

◆ build_member_list()

void Gcs_xcom_control::build_member_list ( std::set< Gcs_member_identifier * > *  origin,
std::vector< Gcs_member_identifier > *  to_fill 
)
private

Copies from a set to a vector of Gcs_member_identifier.

Parameters
[in]originoriginal set
[in]to_filldestination vector

◆ build_member_suspect_nodes()

void Gcs_xcom_control::build_member_suspect_nodes ( std::vector< Gcs_member_identifier * > &  member_suspect_nodes,
std::vector< Gcs_member_identifier * > &  failed_members,
const std::vector< Gcs_member_identifier > *  current_members 
)
private

◆ build_non_member_suspect_nodes()

void Gcs_xcom_control::build_non_member_suspect_nodes ( std::vector< Gcs_member_identifier * > &  non_member_suspect_nodes,
std::vector< Gcs_member_identifier * > &  failed_members,
const std::vector< Gcs_member_identifier > *  current_members 
)
private

◆ build_total_members()

void Gcs_xcom_control::build_total_members ( Gcs_xcom_nodes xcom_nodes,
std::vector< Gcs_member_identifier * > &  alive_members,
std::vector< Gcs_member_identifier * > &  failed_members 
)
private

◆ clear_peer_nodes()

void Gcs_xcom_control::clear_peer_nodes ( )

Deletes all the Gcs_xcom_node_address objects pointed by the elements of the m_initial_peers vector, clearing it at the end.

◆ connect_to_peer()

std::pair< bool, connection_descriptor * > Gcs_xcom_control::connect_to_peer ( Gcs_xcom_node_address peer,
std::map< std::string, int > const &  my_addresses 
)
private

Connects to the given peer's XCom.

Parameters
peerPeer to connect to.
my_addressesThe addresses of this node, used to filter our own address from the initial peers.
Return values
{true,connection_descriptor*}If we connected successfully.
{false,_}If we could not connect.

◆ do_join()

enum_gcs_error Gcs_xcom_control::do_join ( const bool  retry = true)

◆ do_leave()

enum_gcs_error Gcs_xcom_control::do_leave ( )

◆ do_leave_view()

void Gcs_xcom_control::do_leave_view ( )

Sends a leave view message to informat that XCOM has already exited or is about to do so.

◆ do_remove_node_from_group()

void Gcs_xcom_control::do_remove_node_from_group ( )

Request other members to remove node from the group.

◆ expel_incompatible_members()

void Gcs_xcom_control::expel_incompatible_members ( std::vector< Gcs_xcom_node_information > const &  incompatible_members)
private

Expel the given members from XCom.

Parameters
incompatible_membersthe members to expel

◆ get_connection_to_node()

connection_descriptor * Gcs_xcom_control::get_connection_to_node ( std::vector< Gcs_xcom_node_address * > *  peers_list)
private

Cycle through peers_list and try to open a connection to the peer, if it isn't the node itself.

Parameters
[in]peers_listlist of the peers
Returns
connection descriptor to a peer

◆ get_current_view()

Gcs_view * Gcs_xcom_control::get_current_view ( )
overridevirtual

Returns the currently installed view.

Return values
pointerto a Gcs_view object. If one has left a group, this shall be the last installed view. That view can be considered a best-effort view since, in some GCSs, the one that leaves might not have access to the exchanged information.
NULLif one never joined a group.

Implements Gcs_control_interface.

◆ get_event_listeners()

map< int, const Gcs_control_event_listener & > * Gcs_xcom_control::get_event_listeners ( )

◆ get_local_member_identifier()

const Gcs_member_identifier Gcs_xcom_control::get_local_member_identifier ( ) const
overridevirtual

Retrieves the local identifier of this member on a group.

Return values
referenceto a valid Gcs_member_identifier instance
NULLin case of error

Implements Gcs_control_interface.

◆ get_node_address()

Gcs_xcom_node_address * Gcs_xcom_control::get_node_address ( )

Return the address associated with the current node.

◆ get_node_information()

Gcs_xcom_node_information const & Gcs_xcom_control::get_node_information ( ) const
Returns
the information about the local membership of this node.

◆ get_socket_util()

My_xp_socket_util * Gcs_xcom_control::get_socket_util ( )

Return a pointer to a socket utility.

Returns
a pointer to a socket utility

◆ get_suspicions_manager()

Gcs_suspicions_manager * Gcs_xcom_control::get_suspicions_manager ( )

◆ get_xcom_proxy()

Gcs_xcom_proxy * Gcs_xcom_control::get_xcom_proxy ( )

Return a pointer to the proxy object used to access XCOM.

◆ init_me()

void Gcs_xcom_control::init_me ( )
private

◆ install_leave_view()

void Gcs_xcom_control::install_leave_view ( Gcs_view::Gcs_view_error_code  error_code)

Notify that the current member has left the group and whether it left gracefully or not.

Parameters
[in]error_codethat identifies whether there was any error when the view was received.

◆ install_view()

void Gcs_xcom_control::install_view ( Gcs_xcom_view_identifier new_view_id,
const Gcs_group_identifier group_id,
std::map< Gcs_member_identifier, Xcom_member_state * > *  states,
std::set< Gcs_member_identifier * > *  total,
std::set< Gcs_member_identifier * > *  left,
std::set< Gcs_member_identifier * > *  join,
Gcs_view::Gcs_view_error_code  error_code = Gcs_view::OK 
)
private

Makes all the necessary arrangements to install a new view in the binding and in all registered client applications.

Parameters
[in]new_view_idnew view identifier
[in]group_idgroup id
[in]statescollection of states to set in the new view
[in]totalall the members
[in]leftmembers that left the last view
[in]joinmembers that joined from the last view
[in]error_codeError code to set in the new view

◆ is_killer_node()

bool Gcs_xcom_control::is_killer_node ( const std::vector< Gcs_member_identifier * > &  alive_members) const
private

Decides if this node shall be the one to kill failed nodes.

The algorithm is: i am the highest node id alive.

Parameters
alive_membersSet of alive members.
Returns
true if i am the node responsible to call remove_node to expel another member

◆ is_this_node_in()

bool Gcs_xcom_control::is_this_node_in ( std::vector< Gcs_member_identifier * > *  members)
private

Check whether the current member is in the received vector of members.

Parameters
[in]memberslist of members

◆ is_xcom_running()

bool Gcs_xcom_control::is_xcom_running ( )

Whether XCOM's Thread is running or not.

◆ join()

enum_gcs_error Gcs_xcom_control::join ( )
overridevirtual

Method that causes one to join the group that this interface pertains.

The method is non-blocking, meaning that it shall only send the request to an underlying GCS. The final result shall come via a View Change event delivered through Gcs_control_event_listener.

Return values
GCS_OKin case of everything goes well. Any other value of gcs_error in case of error.

Implements Gcs_control_interface.

◆ leave()

enum_gcs_error Gcs_xcom_control::leave ( )
overridevirtual

Method that causes one to leave the group that this interface pertains.

The method is non-blocking, meaning that it shall only send the request to an underlying GCS. The final result shall come via a View Change event delivered through Gcs_control_event_listener.

Return values
GCS_OKin case of everything goes well. Any other value of gcs_error in case of error

Implements Gcs_control_interface.

◆ operator=()

Gcs_xcom_control & Gcs_xcom_control::operator= ( const Gcs_xcom_control )
private

◆ process_control_message()

void Gcs_xcom_control::process_control_message ( Gcs_message msg,
Gcs_protocol_version  maximum_supported_protocol_version,
Gcs_protocol_version  used_protocol_version 
)

Process a message from the control interface and if necessary delegate it to the state exchange.

Parameters
[in]msgmessage
[in]maximum_supported_protocol_versionmaximum supported protocol version
[in]used_protocol_versionprotocol version in use by control message, i.e. state exchange message

◆ remove_event_listener()

void Gcs_xcom_control::remove_event_listener ( int  event_listener_handle)
overridevirtual

Removes a previously registered event listener.

Note that a binding implementation shall not offer the possibility of changing listeners while the system is up and running. In that sense listeners must be removed from it only when shutting down the system.

Parameters
[in]event_listener_handlethe handle returned when the listener was registered

Implements Gcs_control_interface.

◆ retry_do_join()

enum_gcs_error Gcs_xcom_control::retry_do_join ( )

◆ send_add_node_request()

bool Gcs_xcom_control::send_add_node_request ( std::map< std::string, int > const &  my_addresses)
private

Attempts to send an add_node request to some initial peer from m_initial_peers.

Performs up to s_connection_attempts attempts.

Parameters
my_addressesThe addresses of this node, used to filter our own address from the initial peers.
Returns
true if the add_node request was successfully sent, false otherwise.

◆ set_boot_node()

void Gcs_xcom_control::set_boot_node ( bool  boot)

◆ set_join_behavior()

void Gcs_xcom_control::set_join_behavior ( unsigned int  join_attempts,
unsigned int  join_sleep_time 
)

◆ set_node_address()

void Gcs_xcom_control::set_node_address ( Gcs_xcom_node_address node_address)

Set the address associated with the current node.

◆ set_peer_nodes()

void Gcs_xcom_control::set_peer_nodes ( std::vector< Gcs_xcom_node_address * > &  xcom_peers)

Inserts in m_initial_peers copies of the Gcs_xcom_node_address objects whose addresses are in the xcom_peers vector.

Parameters
[in]xcom_peersvector with peers' information

◆ set_xcom_cache_size()

enum_gcs_error Gcs_xcom_control::set_xcom_cache_size ( uint64_t  size)
overridevirtual

Sets a new value for the maximum size of the XCom cache.

Parameters
[in]sizethe new maximum size of the XCom cache
Return values
-GCS_OK if request was successfully scheduled in XCom, GCS_NOK otherwise.

Implements Gcs_control_interface.

◆ try_send_add_node_request_to_seeds()

bool Gcs_xcom_control::try_send_add_node_request_to_seeds ( std::map< std::string, int > const &  my_addresses)
private

Attempts to send an add_node request to some initial peer from m_initial_peers.

Parameters
my_addressesThe addresses of this node, used to filter our own address from the initial peers.
Returns
true if the add_node request was successfully sent, false otherwise.

◆ wait_for_xcom_thread()

void Gcs_xcom_control::wait_for_xcom_thread ( )

This member function can be used to wait until xcom thread exits.

◆ xcom_receive_global_view()

bool Gcs_xcom_control::xcom_receive_global_view ( synode_no const  config_id,
synode_no  message_id,
Gcs_xcom_nodes xcom_nodes,
bool  do_not_deliver_to_client,
synode_no  max_synode 
)

The purpose of this method is to be called when in Gcs_xcom_interface callback method of View Changing is invoked.

This allows, in terms of software architecture, to concentrate all the view change logic and processing in a single place. The view_change callback that is registered in Gcs_xcom_interface should be a simple pass-through.

Parameters
[in]config_idThe configuration ID that this view pertains to
[in]message_idthe message that conveys the View Change
[in]xcom_nodesSet of nodes that participated in the consensus to deliver the message
[in]do_not_deliver_to_clientWhether to filter this view from being delivered to the client
[in]max_synodeXCom max synode

◆ xcom_receive_leave()

bool Gcs_xcom_control::xcom_receive_leave ( )

◆ xcom_receive_local_view()

bool Gcs_xcom_control::xcom_receive_local_view ( synode_no const  config_id,
Gcs_xcom_nodes xcom_nodes,
synode_no  max_synode 
)

Member Data Documentation

◆ CONNECTION_ATTEMPTS

constexpr int Gcs_xcom_control::CONNECTION_ATTEMPTS = 10
staticconstexpr

◆ event_listeners

std::map<int, const Gcs_control_event_listener &> Gcs_xcom_control::event_listeners
private

◆ m_boot

bool Gcs_xcom_control::m_boot
protected

◆ m_comms_operation_interface

std::unique_ptr<Network_provider_operations_interface> Gcs_xcom_control::m_comms_operation_interface
private

◆ m_gcs_engine

Gcs_xcom_engine* Gcs_xcom_control::m_gcs_engine
protected

◆ m_gid

Gcs_group_identifier* Gcs_xcom_control::m_gid
private

◆ m_gid_hash

unsigned int Gcs_xcom_control::m_gid_hash
private

◆ m_initial_peers

std::vector<Gcs_xcom_node_address *> Gcs_xcom_control::m_initial_peers
protected

◆ m_join_attempts

unsigned int Gcs_xcom_control::m_join_attempts
private

◆ m_join_sleep_time

unsigned int Gcs_xcom_control::m_join_sleep_time
private

◆ m_leave_view_delivered

bool Gcs_xcom_control::m_leave_view_delivered
protected

◆ m_leave_view_requested

bool Gcs_xcom_control::m_leave_view_requested
protected

◆ m_local_node_address

Gcs_xcom_node_address* Gcs_xcom_control::m_local_node_address
private

◆ m_local_node_info

Gcs_xcom_node_information* Gcs_xcom_control::m_local_node_info
private

◆ m_sock_probe_interface

Gcs_sock_probe_interface* Gcs_xcom_control::m_sock_probe_interface
private

◆ m_socket_util

My_xp_socket_util* Gcs_xcom_control::m_socket_util
private

◆ m_state_exchange

Gcs_xcom_state_exchange_interface* Gcs_xcom_control::m_state_exchange
private

◆ m_suspicions_manager

Gcs_suspicions_manager* Gcs_xcom_control::m_suspicions_manager
private

◆ m_suspicions_processing_thread

My_xp_thread_impl Gcs_xcom_control::m_suspicions_processing_thread
private

◆ m_view_control

Gcs_xcom_view_change_control_interface* Gcs_xcom_control::m_view_control
protected

◆ m_xcom_group_management

Gcs_xcom_group_management* Gcs_xcom_control::m_xcom_group_management
private

◆ m_xcom_proxy

Gcs_xcom_proxy* Gcs_xcom_control::m_xcom_proxy
private

◆ m_xcom_running

bool Gcs_xcom_control::m_xcom_running
protected

◆ m_xcom_thread

My_xp_thread_impl Gcs_xcom_control::m_xcom_thread
private

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