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