MySQL 9.1.0
Source Code Documentation
gcs_xcom_notification.h
Go to the documentation of this file.
1/* Copyright (c) 2017, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef GCS_XCOM_NOTIFICATION_INCLUDED
25#define GCS_XCOM_NOTIFICATION_INCLUDED
26
27#include <queue>
28
37#include "plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp.h"
38
39/**
40 Abstract class that defines a notification that will be sent from XCOM
41 to MySQL GCS or from an user thread to MySQL GCS.
42
43 This is a very simple implementation that chooses simplicity over flexibility.
44 For example, it does not support notifications on member functions (i.e.
45 methods) and a new notification generates some duplicated code. Note that
46 these limitations could be eliminated with the use of generalized functors.
47 However, this solution would have increased code complexity as we cannot
48 use C++ 11.
49
50 Note also that we have used the term functor here to designed the pointer
51 to the callback function.
52
53 We will revisit this decision in the future if any of the choices become a
54 problem and when we start using C++ 11.
55*/
57 public:
58 /**
59 Constructor for Gcs_xcom_notification which an abstract class
60 that represents notifications sent from XCOM to MySQL GCS.
61
62 Such notifications are read from a queue by a MySQL GCS' thread,
63 specifically by the Gcs_xcom_engine which is responsible for
64 executing them.
65
66 The main loop in the GCS_xcom_engine is stopped when the
67 execution returns true.
68 */
69
70 explicit Gcs_xcom_notification() = default;
71
72 /**
73 Task implemented by this notification which calls do_execute.
74 */
75
76 virtual bool operator()() = 0;
77
78 /**
79 Destructor for the Gcs_xcom_notification.
80 */
81
82 virtual ~Gcs_xcom_notification() = default;
83
84 private:
85 /*
86 Disabling the copy constructor and assignment operator.
87 */
90};
91
93typedef void(xcom_finalize_functor)();
95 public:
96 /**
97 Constructor for Gcs_xcom_engine.
98 */
99
100 explicit Gcs_xcom_engine();
101
102 /**
103 Destructor for Gcs_xcom_engine.
104 */
105
107
108 /**
109 Start the notification processing by spwaning a thread that will be
110 responsible for reading all incoming notifications.
111 */
112
113 void initialize(xcom_initialize_functor *functor);
114
115 /**
116 Finalize the notification processing by stopping the thread that is
117 responsible for reading all incoming notifications. Optionally, a
118 callback function can be scheduled in order to do some clean up.
119
120 When the finalize has been executed the engine will not accept any
121 new incoming notification, the processing thread will be stopped
122 and the optional callback will be the last one called if there is
123 any.
124
125 @param functor Last callback function to be executed.
126 */
127
128 void finalize(xcom_finalize_functor *functor);
129
130 /**
131 Process notifications from the incoming queue until an empty
132 notifications comes in.
133 */
134
135 void process();
136
137 /**
138 Clean up the notification queue and also forbid any incoming
139 notitification to be added to the queue.
140 */
141
142 void cleanup();
143
144 /**
145 Push a notification to the queue.
146
147
148 @param notification Pointer to notification to be queued.
149
150 @return If the request was successfully enqueued true is
151 returned, otherwise, false is returned.
152 */
153
154 bool push(Gcs_xcom_notification *notification);
155
156 private:
157 /*
158 Condition variable used to inform when there are new
159 notifications in the queue.
160 */
162
163 /*
164 Mutex used to prevent concurrent access to the queue.
165 */
167
168 /*
169 Queue that holds notifications from XCOM.
170 */
171 std::queue<Gcs_xcom_notification *> m_notification_queue;
172
173 /*
174 Thread responsible for reading the queue and process
175 the notifications enqueued by XCOM.
176 */
178
179 /*
180 Whether the engine is accepting new notifications or not.
181 */
183
184 /*
185 Disabling the copy constructor and assignment operator.
186 */
189};
190
191/**
192 Template that defines whether a notification shall make the
193 engine stop or not.
194
195 class X_notification : public Paremetrized_notification<true>
196 {
197 public:
198 void do_execute()
199 {
200 // Do something.
201 }
202 }
203*/
204template <bool stop>
206 public:
207 /**
208 Constructor for Parameterized_notification.
209 */
210
211 explicit Parameterized_notification() = default;
212
213 /**
214 Destructor for Parameterized_notification.
215 */
216
217 ~Parameterized_notification() override = default;
218
219 /**
220 Task implemented by this notification which calls do_execute.
221
222 Return whether the notification should stop the engine or not.
223 */
224
225 bool operator()() override {
226 do_execute();
227
228 return stop;
229 }
230
231 private:
232 /**
233 Method that must be implemented buy the different types of
234 notifications.
235 */
236
237 virtual void do_execute() = 0;
238
239 /*
240 Disabling the copy constructor and assignment operator.
241 */
244};
245
246/**
247 Notification used to stop the Gcs_xcom_engine.
248*/
250 public:
251 /**
252 Constructor for Finalize_notification.
253
254 @param gcs_engine Reference to the engine.
255 @param functor Pointer to a function that contains that actual
256 core of the execution.
257 */
258
260 xcom_finalize_functor *functor);
261
262 /**
263 Destructor for Finalize_notification.
264 */
265
267
268 private:
269 /**
270 Task implemented by this notification.
271 */
272
273 void do_execute() override;
274
275 /**
276 Pointer to the MySQL GCS Engine.
277 */
279
280 /*
281 Pointer to a function that contains that actual core of the
282 execution.
283 */
285
286 /*
287 Disabling the copy constructor and assignment operator.
288 */
291};
292
294 public:
295 /**
296 Constructor for Initialize_notification.
297
298 @param functor Pointer to a function that contains that actual
299 core of the execution.
300 */
301
303
304 /**
305 Destructor for Initialize_notification.
306 */
307
309
310 private:
311 /**
312 Task implemented by this notification.
313 */
314
315 void do_execute() override;
316
317 /*
318 Pointer to a function that contains that actual core of the
319 execution.
320 */
322
323 /*
324 Disabling the copy constructor and assignment operator.
325 */
328};
329
330typedef void(xcom_receive_data_functor)(synode_no, synode_no, Gcs_xcom_nodes *,
331 synode_no, u_int, char *);
332/**
333 Notification used to inform that data has been totally ordered.
334*/
336 public:
337 /**
338 Constructor for Data_notification.
339
340 @param functor Pointer to a function that contains that actual
341 core of the execution.
342 @param message_id Messaged Id.
343 @param origin XCom synod of origin.
344 @param xcom_nodes Set of nodes that participated in the consensus
345 to deliver the message.
346 @param size Size of the message's content.
347 @param last_removed The synode_no of the last message removed from the
348 XCom cache. Used to update the suspicions manager.
349 @param data This is the message's content.
350 */
351
353 synode_no message_id, synode_no origin,
354 Gcs_xcom_nodes *xcom_nodes, synode_no last_removed,
355 u_int size, char *data);
356
357 /**
358 Destructor for Data_notification
359 */
360
362
363 private:
364 /**
365 Task implemented by this notification which calls the functor
366 with the parameters provided in the constructor.
367 */
368
369 void do_execute() override;
370
371 /*
372 Pointer to a function that contains that actual core of the
373 execution.
374 */
376
377 /*
378 Messaged Id.
379 */
380 synode_no m_message_id;
381
382 /*
383 XCom synode of origin.
384 */
385 synode_no m_origin;
386
387 /*
388 Set of nodes that participated in the consensus to deliver the
389 message.
390 */
392
393 /*
394 The synode_no of the last message removed from the XCom cache. Used to
395 update the suspicions manager, which needs this value to know if a
396 suspected node has gone too far behind the group.
397 */
398 synode_no m_last_removed;
399
400 /*
401 Size of the message's content.
402 */
404
405 /*
406 This is the message's content.
407 */
408 char *m_data;
409
410 /*
411 Disabling the copy constructor and assignment operator.
412 */
415};
416
417typedef void(xcom_status_functor)(int);
418/**
419 Notification used to inform that has been a change in XCOM's state
420 machine such as it has started up or shut down.
421*/
423 public:
424 /**
425 Constructor for Status_notification.
426
427 @param functor Pointer to a function that contains that actual
428 core of the execution.
429 @param status XCOM's status.
430 */
431
432 explicit Status_notification(xcom_status_functor *functor, int status);
433
434 /**
435 Destructor for Status_notification.
436 */
437
439
440 private:
441 /**
442 Task implemented by this notification.
443 */
444
445 void do_execute() override;
446
447 /*
448 Pointer to a function that contains that actual core of the
449 execution.
450 */
452
453 /*
454 XCOM's status.
455 */
457
458 /*
459 Disabling the copy constructor and assignment operator.
460 */
463};
464
465typedef void(xcom_global_view_functor)(synode_no, synode_no, Gcs_xcom_nodes *,
466 xcom_event_horizon, synode_no);
467/**
468 Notification used to inform there have been change to the configuration,
469 i.e. nodes have been added, removed or considered dead/faulty.
470*/
472 public:
473 /**
474 Constructor for Global_view_notification.
475
476 @param functor Pointer to a function that contains that actual
477 core of the execution.
478 @param config_id Message Id when the configuration, i.e. nodes,
479 was installed.
480 @param message_id Messaged Id.
481 @param xcom_nodes Set of nodes that participated in the consensus
482 to deliver the message.
483 @param event_horizon the XCom configuration's event horizon
484 @param max_synode XCom max synode
485 */
486
488 synode_no config_id, synode_no message_id,
489 Gcs_xcom_nodes *xcom_nodes,
490 xcom_event_horizon event_horizon,
491 synode_no max_synode);
492
493 /**
494 Destructor for Global_view_notification.
495 */
496
498
499 private:
500 /**
501 Task implemented by this notification.
502 */
503
504 void do_execute() override;
505
506 /*
507 Pointer to a function that contains that actual core of the
508 execution.
509 */
511
512 /*
513 Message Id when the configuration, i.e. nodes, was installed.
514 */
515 synode_no m_config_id;
516
517 /*
518 Messaged Id.
519 */
520
521 synode_no m_message_id;
522
523 /*
524 Set of nodes that participated in the consensus to deliver
525 the message.
526 */
528
529 /*
530 Event horizon of the configuration.
531 */
532 xcom_event_horizon m_event_horizon;
533
534 /*
535 The highest synode_no seen by the group at the time the view is thrown.
536 Used by the suspicions manager to identify when suspected nodes have
537 lost messages that they need to recover.
538 */
539 synode_no m_max_synode;
540
541 /*
542 Disabling the copy constructor and assignment operator.
543 */
546};
547
548typedef void(xcom_local_view_functor)(synode_no, Gcs_xcom_nodes *, synode_no);
549/**
550 Notification used to provide hints on nodes' availability.
551*/
553 public:
554 /**
555 Constructor for Local_view_notification.
556
557 @param functor Pointer to a function that contains that actual
558 core of the execution.
559 @param config_id Configuration ID to which this view pertains to
560 @param xcom_nodes Set of nodes that were defined when the notification
561 happened.
562 @param max_synode XCom max synode
563 */
564
566 synode_no config_id,
567 Gcs_xcom_nodes *xcom_nodes,
568 synode_no max_synode);
569
570 /**
571 Destructor for Local_view_notification.
572 */
574
575 private:
576 /**
577 Task implemented by this notification.
578 */
579
580 void do_execute() override;
581
582 /*
583 Pointer to a function that contains that actual core of the
584 execution.
585 */
587
588 /*
589 Configuration ID.
590 */
591 synode_no m_config_id;
592
593 /*
594 Set of nodes that were defined when the notification happened.
595 */
597
598 /*
599 The highest synode_no seen by the group at the time the view is thrown.
600 Used by the suspicions manager to identify when suspected nodes have
601 lost messages that they need to recover.
602 */
603 synode_no m_max_synode;
604
605 /*
606 Disabling the copy constructor and assignment operator.
607 */
610};
611
613/**
614 Notification used to make a node join or leave the cluster, provided
615 the system was already initialized.
616*/
618 public:
619 /**
620 Constructor for Control_notification.
621
622 @param functor Pointer to a function that contains that actual
623 core of the execution.
624 @param control_if Reference to Control Interface.
625 */
626
628 Gcs_control_interface *control_if);
629
630 /**
631 Destructor for Control_notification.
632 */
634
635 private:
636 /**
637 Task implemented by this notification.
638 */
639
640 void do_execute() override;
641
642 /*
643 Pointer to a function that contains that actual core of the
644 execution.
645 */
647
648 /*
649 Pointer to a function that contains that actual core of the
650 execution.
651 */
653
654 /*
655 Disabling the copy constructor and assignment operator.
656 */
659};
660
661typedef void(xcom_expel_functor)(void);
662/**
663 Notification used to inform that the node has been expelled or is about
664 to be.
665*/
667 public:
668 /**
669 Constructor for Expel_notification.
670
671 @param functor Pointer to a function that contains that actual
672 core of the execution.
673 */
674
675 explicit Expel_notification(xcom_expel_functor *functor);
676
677 /**
678 Destructor for Expel_notification.
679 */
680
682
683 private:
684 /**
685 Task implemented by this notification.
686 */
687
688 void do_execute() override;
689
690 /*
691 Pointer to a function that contains that actual core of the
692 execution.
693 */
695
696 /*
697 Disabling the copy constructor and assignment operator.
698 */
701};
702
706/**
707 Notification used to finish a protocol change.
708*/
710 public:
711 /**
712 Constructor for Protocol_change_notification.
713
714 @param functor Pointer to a function that contains that actual
715 core of the execution.
716 @param protocol_changer communication protocol change logic
717 @param tag tag reference to the lock
718 */
719
723 Gcs_tagged_lock::Tag const tag);
724
725 /**
726 Destructor for Protocol_change_notification.
727 */
729
730 private:
731 /**
732 Task implemented by this notification.
733 */
734
735 void do_execute() override;
736
737 /*
738 Pointer to a function that contains that actual core of the
739 execution.
740 */
742
743 /*
744 Pointer to a function that contains that actual core of the
745 execution.
746 */
748
750
751 /*
752 Disabling the copy constructor and assignment operator.
753 */
756};
757
758#endif // GCS_XCOM_NOTIFICATION_INCLUDED
Notification used to make a node join or leave the cluster, provided the system was already initializ...
Definition: gcs_xcom_notification.h:617
Control_notification(xcom_control_functor *functor, Gcs_control_interface *control_if)
Constructor for Control_notification.
Definition: gcs_xcom_notification.cc:135
xcom_control_functor * m_functor
Definition: gcs_xcom_notification.h:646
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:141
Control_notification(Control_notification const &)
Control_notification & operator=(Control_notification const &)
~Control_notification() override
Destructor for Control_notification.
Gcs_control_interface * m_control_if
Definition: gcs_xcom_notification.h:652
Notification used to inform that data has been totally ordered.
Definition: gcs_xcom_notification.h:335
Data_notification & operator=(Data_notification const &)
char * m_data
Definition: gcs_xcom_notification.h:408
Data_notification(Data_notification const &)
xcom_receive_data_functor * m_functor
Definition: gcs_xcom_notification.h:375
synode_no m_message_id
Definition: gcs_xcom_notification.h:380
~Data_notification() override
Destructor for Data_notification.
void do_execute() override
Task implemented by this notification which calls the functor with the parameters provided in the con...
Definition: gcs_xcom_notification.cc:81
synode_no m_origin
Definition: gcs_xcom_notification.h:385
Gcs_xcom_nodes * m_xcom_nodes
Definition: gcs_xcom_notification.h:391
Data_notification(xcom_receive_data_functor *functor, synode_no message_id, synode_no origin, Gcs_xcom_nodes *xcom_nodes, synode_no last_removed, u_int size, char *data)
Constructor for Data_notification.
Definition: gcs_xcom_notification.cc:65
synode_no m_last_removed
Definition: gcs_xcom_notification.h:398
u_int m_size
Definition: gcs_xcom_notification.h:403
Notification used to inform that the node has been expelled or is about to be.
Definition: gcs_xcom_notification.h:666
Expel_notification & operator=(Expel_notification const &)
xcom_expel_functor * m_functor
Definition: gcs_xcom_notification.h:694
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:133
Expel_notification(Expel_notification const &)
Expel_notification(xcom_expel_functor *functor)
Constructor for Expel_notification.
Definition: gcs_xcom_notification.cc:128
~Expel_notification() override
Destructor for Expel_notification.
Notification used to stop the Gcs_xcom_engine.
Definition: gcs_xcom_notification.h:249
xcom_finalize_functor * m_functor
Definition: gcs_xcom_notification.h:284
Finalize_notification(Finalize_notification const &)
Finalize_notification & operator=(Finalize_notification const &)
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:38
~Finalize_notification() override
Destructor for Finalize_notification.
Gcs_xcom_engine * m_gcs_engine
Pointer to the MySQL GCS Engine.
Definition: gcs_xcom_notification.h:278
Finalize_notification(Gcs_xcom_engine *gcs_engine, xcom_finalize_functor *functor)
Constructor for Finalize_notification.
Definition: gcs_xcom_notification.cc:32
This interface represents all the control functionalities that a binding implementation must provide.
Definition: gcs_control_interface.h:111
std::uint64_t Tag
Definition: gcs_tagged_lock.h:86
Implements the communication protocol change logic.
Definition: gcs_xcom_communication_protocol_changer.h:217
Definition: gcs_xcom_notification.h:94
bool m_schedule
Definition: gcs_xcom_notification.h:182
Gcs_xcom_engine()
Constructor for Gcs_xcom_engine.
Definition: gcs_xcom_notification.cc:174
My_xp_thread_impl m_engine_thread
Definition: gcs_xcom_notification.h:177
Gcs_xcom_engine & operator=(Gcs_xcom_engine const &)
void finalize(xcom_finalize_functor *functor)
Finalize the notification processing by stopping the thread that is responsible for reading all incom...
Definition: gcs_xcom_notification.cc:200
Gcs_xcom_engine(Gcs_xcom_engine const &)
void cleanup()
Clean up the notification queue and also forbid any incoming notitification to be added to the queue.
Definition: gcs_xcom_notification.cc:237
My_xp_mutex_impl m_wait_for_notification_mutex
Definition: gcs_xcom_notification.h:166
~Gcs_xcom_engine()
Destructor for Gcs_xcom_engine.
Definition: gcs_xcom_notification.cc:186
bool push(Gcs_xcom_notification *notification)
Push a notification to the queue.
Definition: gcs_xcom_notification.cc:258
std::queue< Gcs_xcom_notification * > m_notification_queue
Definition: gcs_xcom_notification.h:171
void initialize(xcom_initialize_functor *functor)
Start the notification processing by spwaning a thread that will be responsible for reading all incom...
Definition: gcs_xcom_notification.cc:191
void process()
Process notifications from the incoming queue until an empty notifications comes in.
Definition: gcs_xcom_notification.cc:214
My_xp_cond_impl m_wait_for_notification_cond
Definition: gcs_xcom_notification.h:161
This class contains information on the configuration, i.e set of nodes or simply site definition.
Definition: gcs_xcom_group_member_information.h:391
Abstract class that defines a notification that will be sent from XCOM to MySQL GCS or from an user t...
Definition: gcs_xcom_notification.h:56
virtual bool operator()()=0
Task implemented by this notification which calls do_execute.
virtual ~Gcs_xcom_notification()=default
Destructor for the Gcs_xcom_notification.
Gcs_xcom_notification()=default
Constructor for Gcs_xcom_notification which an abstract class that represents notifications sent from...
Gcs_xcom_notification & operator=(Gcs_xcom_notification const &)
Gcs_xcom_notification(Gcs_xcom_notification const &)
Notification used to inform there have been change to the configuration, i.e.
Definition: gcs_xcom_notification.h:471
synode_no m_config_id
Definition: gcs_xcom_notification.h:515
Global_view_notification(xcom_global_view_functor *functor, synode_no config_id, synode_no message_id, Gcs_xcom_nodes *xcom_nodes, xcom_event_horizon event_horizon, synode_no max_synode)
Constructor for Global_view_notification.
Definition: gcs_xcom_notification.cc:94
xcom_event_horizon m_event_horizon
Definition: gcs_xcom_notification.h:532
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:108
Global_view_notification & operator=(Global_view_notification const &)
synode_no m_message_id
Definition: gcs_xcom_notification.h:521
~Global_view_notification() override
Destructor for Global_view_notification.
synode_no m_max_synode
Definition: gcs_xcom_notification.h:539
Global_view_notification(Global_view_notification const &)
Gcs_xcom_nodes * m_xcom_nodes
Definition: gcs_xcom_notification.h:527
xcom_global_view_functor * m_functor
Definition: gcs_xcom_notification.h:510
Definition: gcs_xcom_notification.h:293
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:61
Initialize_notification(Initialize_notification const &)
~Initialize_notification() override
Destructor for Initialize_notification.
Initialize_notification(xcom_initialize_functor *functor)
Constructor for Initialize_notification.
Definition: gcs_xcom_notification.cc:55
Initialize_notification & operator=(Initialize_notification const &)
xcom_initialize_functor * m_functor
Definition: gcs_xcom_notification.h:321
Notification used to provide hints on nodes' availability.
Definition: gcs_xcom_notification.h:552
Gcs_xcom_nodes * m_xcom_nodes
Definition: gcs_xcom_notification.h:596
Local_view_notification(Local_view_notification const &)
synode_no m_config_id
Definition: gcs_xcom_notification.h:591
Local_view_notification(xcom_local_view_functor *functor, synode_no config_id, Gcs_xcom_nodes *xcom_nodes, synode_no max_synode)
Constructor for Local_view_notification.
Definition: gcs_xcom_notification.cc:113
synode_no m_max_synode
Definition: gcs_xcom_notification.h:603
~Local_view_notification() override
Destructor for Local_view_notification.
Local_view_notification & operator=(Local_view_notification const &)
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:124
xcom_local_view_functor * m_functor
Definition: gcs_xcom_notification.h:586
Definition: my_xp_cond.h:136
Definition: my_xp_mutex.h:123
Definition: my_xp_thread.h:139
Template that defines whether a notification shall make the engine stop or not.
Definition: gcs_xcom_notification.h:205
bool operator()() override
Task implemented by this notification which calls do_execute.
Definition: gcs_xcom_notification.h:225
virtual void do_execute()=0
Method that must be implemented buy the different types of notifications.
Parameterized_notification & operator=(Parameterized_notification const &)
Parameterized_notification()=default
Constructor for Parameterized_notification.
~Parameterized_notification() override=default
Destructor for Parameterized_notification.
Parameterized_notification(Parameterized_notification const &)
Notification used to finish a protocol change.
Definition: gcs_xcom_notification.h:709
xcom_protocol_change_functor * m_functor
Definition: gcs_xcom_notification.h:741
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:153
~Protocol_change_notification() override
Destructor for Protocol_change_notification.
Protocol_change_notification & operator=(Protocol_change_notification const &)
Gcs_tagged_lock::Tag const m_tag
Definition: gcs_xcom_notification.h:749
Protocol_change_notification(xcom_protocol_change_functor *functor, Gcs_xcom_communication_protocol_changer *protocol_changer, Gcs_tagged_lock::Tag const tag)
Constructor for Protocol_change_notification.
Definition: gcs_xcom_notification.cc:145
Gcs_xcom_communication_protocol_changer * m_protocol_changer
Definition: gcs_xcom_notification.h:747
Protocol_change_notification(Protocol_change_notification const &)
Notification used to inform that has been a change in XCOM's state machine such as it has started up ...
Definition: gcs_xcom_notification.h:422
void do_execute() override
Task implemented by this notification.
Definition: gcs_xcom_notification.cc:92
xcom_status_functor * m_functor
Definition: gcs_xcom_notification.h:451
Status_notification(Status_notification const &)
int m_status
Definition: gcs_xcom_notification.h:456
~Status_notification() override
Destructor for Status_notification.
Status_notification & operator=(Status_notification const &)
Status_notification(xcom_status_functor *functor, int status)
Constructor for Status_notification.
Definition: gcs_xcom_notification.cc:86
static Gcs_xcom_engine * gcs_engine
Definition: gcs_xcom_interface.cc:144
void() xcom_receive_data_functor(synode_no, synode_no, Gcs_xcom_nodes *, synode_no, u_int, char *)
Definition: gcs_xcom_notification.h:330
void() xcom_local_view_functor(synode_no, Gcs_xcom_nodes *, synode_no)
Definition: gcs_xcom_notification.h:548
void() xcom_status_functor(int)
Definition: gcs_xcom_notification.h:417
void() xcom_finalize_functor()
Definition: gcs_xcom_notification.h:93
void() xcom_expel_functor(void)
Definition: gcs_xcom_notification.h:661
void() xcom_control_functor(Gcs_control_interface *)
Definition: gcs_xcom_notification.h:612
void() xcom_protocol_change_functor(Gcs_xcom_communication_protocol_changer *, Gcs_tagged_lock::Tag const)
Definition: gcs_xcom_notification.h:704
void() xcom_global_view_functor(synode_no, synode_no, Gcs_xcom_nodes *, xcom_event_horizon, synode_no)
Definition: gcs_xcom_notification.h:465
void() xcom_initialize_functor()
Definition: gcs_xcom_notification.h:92
size_t size(const char *const c)
Definition: base64.h:46
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
__u_int u_int
Definition: types.h:73
synode_no max_synode
Definition: xcom_base.cc:406