![]()  | 
  
    MySQL 8.0.44
    
   Source Code Documentation 
   | 
 
Implementation of the gcs_xcom_state_exchange_interface. More...
#include <gcs_xcom_state_exchange.h>
Public Member Functions | |
| Gcs_xcom_state_exchange (Gcs_communication_interface *comm) | |
| State Exchange constructor.  More... | |
| ~Gcs_xcom_state_exchange () override | |
| void | init () override | 
| Accomplishes all necessary initialization steps.  More... | |
| void | reset () override | 
| If messages were buffered during its processing, they are discarded and internal structures needed are cleaned up.  More... | |
| void | reset_with_flush () override | 
| Has the same behavior as the reset but additionally flushes buffered messages.  More... | |
| void | end () override | 
| If messages were buffered during its processing, they are delivered to upper layers and internal structures needed are cleaned up.  More... | |
| bool | state_exchange (synode_no configuration_id, std::vector< Gcs_member_identifier * > &total, std::vector< Gcs_member_identifier * > &left, std::vector< Gcs_member_identifier * > &joined, std::vector< std::unique_ptr< Gcs_message_data > > &exchangeable_data, Gcs_view *current_view, std::string *group, const Gcs_member_identifier &local_info, const Gcs_xcom_nodes &xcom_nodes) override | 
| Signals the module to start a State Exchange.  More... | |
| bool | process_member_state (Xcom_member_state *ms_info, const Gcs_member_identifier &p_id, Gcs_protocol_version maximum_supported_protocol_version, Gcs_protocol_version used_protocol_version) override | 
| Processes a member state message on an ongoing State Exchange round.  More... | |
| std::vector< Gcs_xcom_node_information > | compute_incompatible_members () override | 
| Compute the set of incompatible members after the state exchange has finished.  More... | |
| bool | process_recovery_state () override | 
| Recovers any missing packets required for the member to join the group.  More... | |
| Gcs_xcom_view_identifier * | get_new_view_id () override | 
| Retrieves the new view identifier after a State Exchange.  More... | |
| std::set< Gcs_member_identifier * > * | get_joined () override | 
| std::set< Gcs_member_identifier * > * | get_left () override | 
| std::set< Gcs_member_identifier * > * | get_total () override | 
| std::map< Gcs_member_identifier, Xcom_member_state * > * | get_member_states () override | 
| std::string * | get_group () override | 
| void | compute_maximum_supported_protocol_version () override | 
| Computes the maximum protocol version supported by the group.  More... | |
  Public Member Functions inherited from Gcs_xcom_state_exchange_interface | |
| virtual | ~Gcs_xcom_state_exchange_interface ()=default | 
Private Member Functions | |
| bool | is_leaving () | 
| Computes if the local member is leaving.  More... | |
| bool | is_joining () | 
| Computes if the local member is joining.  More... | |
| void | update_communication_channel (const Gcs_xcom_nodes &xcom_nodes) | 
| Update the communication system with information on membership.  More... | |
| enum_gcs_error | broadcast_state (const Gcs_xcom_view_identifier &proposed_view, std::vector< std::unique_ptr< Gcs_message_data > > &exchangeable_data) | 
| Broadcasts the local state to all nodes in the Cluster.  More... | |
| void | update_awaited_vector () | 
| Updates the structure that waits for State Exchanges.  More... | |
| void | fill_member_set (std::vector< Gcs_member_identifier * > &in, std::set< Gcs_member_identifier * > &pset) | 
| Converts xcom data to a set of internal representation.  More... | |
| void | save_member_state (Xcom_member_state *ms_info, const Gcs_member_identifier &p_id, Gcs_protocol_version maximum_supported_protocol_version, Gcs_protocol_version used_protocol_version) | 
| Stores the member's state and protocol version.  More... | |
| bool | snapshot_is_enough (Gcs_xcom_synode_set const &snapshot_to_recover) const | 
Auxiliary method that checks whether snapshot_to_recover contains all the synodes required.  More... | |
| std::pair< bool, Gcs_protocol_version > | members_announce_same_version () const | 
| Checks whether all the existing group members, myself excluded, announce the same protocol version.  More... | |
| bool | incompatible_with_group () const | 
| Checks whether this server is incompatible with the group.  More... | |
| std::vector< Gcs_xcom_node_information > | compute_incompatible_joiners () | 
| Computes the set of incompatible nodes that are trying to join the group.  More... | |
| Gcs_xcom_state_exchange (Gcs_xcom_state_exchange const &) | |
| Gcs_xcom_state_exchange & | operator= (Gcs_xcom_state_exchange const &) | 
Private Attributes | |
| Gcs_communication_interface * | m_broadcaster | 
| std::map< Gcs_member_identifier, uint > | m_awaited_vector | 
| std::map< Gcs_member_identifier, uint > | m_recover_vector | 
| std::set< Gcs_member_identifier * > | m_ms_total | 
| std::set< Gcs_member_identifier * > | m_ms_left | 
| std::set< Gcs_member_identifier * > | m_ms_joined | 
| std::map< Gcs_member_identifier, Xcom_member_state * > | m_member_states | 
| std::map< Gcs_member_identifier, Gcs_protocol_version > | m_member_versions | 
| std::map< Gcs_member_identifier, Gcs_protocol_version > | m_member_max_versions | 
| std::string * | m_group_name | 
| Gcs_member_identifier | m_local_information | 
| synode_no | m_configuration_id | 
| std::vector< synode_no > | cached_ids | 
| Gcs_xcom_nodes | m_ms_xcom_nodes | 
Implementation of the gcs_xcom_state_exchange_interface.
      
  | 
  explicit | 
State Exchange constructor.
| [in] | comm | Communication interface reference to allow broadcasting of member states | 
      
  | 
  override | 
      
  | 
  private | 
      
  | 
  private | 
Broadcasts the local state to all nodes in the Cluster.
| [in] | proposed_view | proposed view to broadcast | 
| [in] | exchangeable_data | List with exchangeable messages | 
      
  | 
  private | 
Computes the set of incompatible nodes that are trying to join the group.
      
  | 
  overridevirtual | 
Compute the set of incompatible members after the state exchange has finished.
A member M is incompatible if it is attempting to join a group that is using protocol X, but M is using protocol Y s.t. X != Y.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
Computes the maximum protocol version supported by the group.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
If messages were buffered during its processing, they are delivered to upper layers and internal structures needed are cleaned up.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  private | 
Converts xcom data to a set of internal representation.
| [in] | in | xcom list | 
| [in] | pset | Set where the converted member ids will be written | 
      
  | 
  inlineoverridevirtual | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  inlineoverridevirtual | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  inlineoverridevirtual | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  inlineoverridevirtual | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
Retrieves the new view identifier after a State Exchange.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  inlineoverridevirtual | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  private | 
Checks whether this server is incompatible with the group.
| true | If it is incompatible | 
| false | If it is compatible | 
      
  | 
  overridevirtual | 
Accomplishes all necessary initialization steps.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  private | 
Computes if the local member is joining.
      
  | 
  private | 
Computes if the local member is leaving.
      
  | 
  private | 
Checks whether all the existing group members, myself excluded, announce the same protocol version.
| {false,_} | if they do not all announce the same protocol version | 
| {true,Gcs_protocol_version} | if they all announced the same protocol version of the return value | 
      
  | 
  private | 
      
  | 
  overridevirtual | 
Processes a member state message on an ongoing State Exchange round.
| [in] | ms_info | received Member State | 
| [in] | p_id | the node that the Member State pertains | 
| [in] | maximum_supported_protocol_version | maximum supported protocol version | 
| [in] | used_protocol_version | protocol version in use by a member during the state exchange phase | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
Recovers any missing packets required for the member to join the group.
| true | if successful | 
| false | otherwise | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
If messages were buffered during its processing, they are discarded and internal structures needed are cleaned up.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  overridevirtual | 
Has the same behavior as the reset but additionally flushes buffered messages.
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  private | 
Stores the member's state and protocol version.
| ms_info | state | |
| p_id | member | |
| [in] | maximum_supported_protocol_version | maximum supported protocol version | 
| used_protocol_version | protocol version | 
      
  | 
  private | 
Auxiliary method that checks whether snapshot_to_recover contains all the synodes required. 
      
  | 
  overridevirtual | 
Signals the module to start a State Exchange.
| [in] | configuration_id | Configuration identifier in use when the state exchange phase started | 
| [in] | total | xcom total members in the new view | 
| [in] | left | xcom members that left in the new view | 
| [in] | joined | xcom members that joined in the new view | 
| [in] | exchangeable_data | generic exchanged data | 
| [in] | current_view | the currently installed view | 
| [in] | group | group name | 
| [in] | local_info | the local GCS member identifier | 
| [in] | xcom_nodes | list of nodes | 
Implements Gcs_xcom_state_exchange_interface.
      
  | 
  private | 
Updates the structure that waits for State Exchanges.
      
  | 
  private | 
Update the communication system with information on membership.
| xcom_nodes | List of nodes that belong to the current membership. | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private |