17 #include "gcs_defrag.h"
18 #include "gcs_comp_msg.h"
19 #include "gcs_state_msg.h"
23 #define NODE_NO_ID "undefined"
24 #define NODE_NO_NAME "unspecified"
25 #define NODE_NO_ADDR "unspecified"
33 const char id[GCS_COMP_MEMB_ID_MAX_LEN + 1];
36 char joiner[GCS_COMP_MEMB_ID_MAX_LEN + 1];
37 char donor [GCS_COMP_MEMB_ID_MAX_LEN + 1];
41 const gcs_state_msg_t* state_msg;
43 gcs_seqno_t last_applied;
47 gcs_node_state_t status;
48 gcs_segment_t segment;
49 bool count_last_applied;
64 gcs_segment_t segment);
93 if (gu_likely(GCS_ACT_SERVICE != frg->act_type)) {
94 return gcs_defrag_handle_frag (&node->app, frg, act, local);
96 else if (GCS_ACT_SERVICE == frg->act_type) {
97 return gcs_defrag_handle_frag (&node->oob, frg, act, local);
100 gu_warn (
"Unrecognised action type: %d", frg->act_type);
107 gcs_node_set_last_applied (
gcs_node_t* node, gcs_seqno_t seqno)
109 if (gu_unlikely(seqno < node->last_applied)) {
110 gu_warn (
"Received bogus LAST message: %lld, from node %s, "
111 "expected >= %lld. Ignoring.",
112 seqno, node->id, node->last_applied);
114 node->last_applied = seqno;
118 static inline gcs_seqno_t
121 return node->last_applied;
126 gcs_node_record_state (
gcs_node_t* node, gcs_state_msg_t* state);
132 static inline gcs_node_state_t
138 static inline gcs_seqno_t
144 return gcs_state_msg_cached(node->state_msg);
146 return GCS_SEQNO_ILL;
149 static inline uint8_t
152 return gcs_state_msg_flags(node->state_msg);
156 gcs_node_is_joined (
const gcs_node_state_t st)
158 return (st >= GCS_NODE_STATE_DONOR);
Definition: gcs_node.h:27
Definition: gcs_defrag.h:25
Definition: gcs_act_proto.h:24
Definition: gcs_state_msg.h:53