ha/service-mgmt/sm/src/sm_msg.h

265 lines
12 KiB
C

//
// Copyright (c) 2014 Wind River Systems, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
#ifndef __SM_MSG_H__
#define __SM_MSG_H__
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#include "sm_types.h"
#include "sm_uuid.h"
#include "sm_service_domain_interface_table.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*SmMsgNodeHelloCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char node_name[],
SmNodeAdminStateT admin_state, SmNodeOperationalStateT oper_state,
SmNodeAvailStatusT avail_status, SmNodeReadyStateT ready_state,
SmUuidT state_uuid, long uptime);
typedef void (*SmMsgNodeUpdateCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char node_name[],
SmNodeAdminStateT admin_state, SmNodeOperationalStateT oper_state,
SmNodeAvailStatusT avail_status, SmNodeReadyStateT ready_state,
SmUuidT old_state_uuid, SmUuidT state_uuid, long uptime, bool force);
typedef void (*SmMsgNodeSwactCallbackT) (
SmNetworkAddressT* network_address, int network_port, int version,
int revision, char node_name[], bool force, SmUuidT request_uuid );
typedef void (*SmMsgNodeSwactAckCallbackT) (
SmNetworkAddressT* network_address, int network_port, int version,
int revision, char node_name[], bool force, SmUuidT request_uuid );
typedef void (*SmMsgHelloCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], char orchestration[], char designation[],
int generation, int priority, int hello_interval, int dead_interval,
int wait_interval, int exchange_interval, char leader[]);
typedef void (*SmMsgPauseCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], int pause_interval);
typedef void (*SmMsgExchangeStartCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], int exchange_seq);
typedef void (*SmMsgExchangeCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], int exchange_seq, int64_t member_id,
char member_name[], SmServiceGroupStateT member_desired_state,
SmServiceGroupStateT member_state, SmServiceGroupStatusT member_status,
SmServiceGroupConditionT member_condition, int64_t member_health,
char reason_text[], bool more_members, int64_t last_received_member_id );
typedef void (*SmMsgMemberRequestCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], char member_node_name[], int64_t member_id,
char member_name[], SmServiceGroupActionT member_action,
SmServiceGroupActionFlagsT member_action_flags );
typedef void (*SmMsgMemberUpdateCallbackT) (SmNetworkAddressT* network_address,
int network_port, int version, int revision, char service_domain[],
char node_name[], char member_node_name[], int64_t member_id,
char member_name[], SmServiceGroupStateT member_desired_state,
SmServiceGroupStateT member_state, SmServiceGroupStatusT member_status,
SmServiceGroupConditionT condition, int64_t member_health,
char reason_text[] );
typedef struct
{
// Node Message Callbacks
SmMsgNodeHelloCallbackT node_hello;
SmMsgNodeUpdateCallbackT node_update;
SmMsgNodeSwactCallbackT node_swact;
SmMsgNodeSwactCallbackT node_swact_ack;
// Service Domain Message Callbacks
SmMsgHelloCallbackT hello;
SmMsgPauseCallbackT pause;
SmMsgExchangeStartCallbackT exchange_start;
SmMsgExchangeCallbackT exchange;
SmMsgMemberRequestCallbackT member_request;
SmMsgMemberUpdateCallbackT member_update;
} SmMsgCallbacksT;
// ****************************************************************************
// Messaging - Enable
// ==================
extern void sm_msg_enable( void );
// ****************************************************************************
// ****************************************************************************
// Messaging - Disable
// ===================
extern void sm_msg_disable( void );
// ****************************************************************************
// ****************************************************************************
// Messaging - Add Peer Interface
// ==============================
extern SmErrorT sm_msg_add_peer_interface( char interface_name[],
SmNetworkAddressT* network_address, int network_port,
SmAuthTypeT auth_type, char auth_key[] );
// ****************************************************************************
// ****************************************************************************
// Messaging - Delete Peer Interface
// =================================
extern SmErrorT sm_msg_delete_peer_interface( char interface_name[],
SmNetworkAddressT* network_address, int network_port );
// ****************************************************************************
// ****************************************************************************
// Messaging - Register Callbacks
// ==============================
extern SmErrorT sm_msg_register_callbacks( SmMsgCallbacksT* callbacks );
// ****************************************************************************
// ****************************************************************************
// Messaging - Deregister Callbacks
// ================================
extern SmErrorT sm_msg_deregister_callbacks( SmMsgCallbacksT* callbacks );
// ****************************************************************************
// ****************************************************************************
// Messaging - Increment Sequence Number
// =====================================
extern void sm_msg_increment_seq_num( void );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Node Hello
// ===========================
extern SmErrorT sm_msg_send_node_hello( char node_name[],
SmNodeAdminStateT admin_state, SmNodeOperationalStateT oper_state,
SmNodeAvailStatusT avail_status, SmNodeReadyStateT ready_state,
SmUuidT state_uuid, long uptime, SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Node Update
// ============================
extern SmErrorT sm_msg_send_node_update( char node_name[],
SmNodeAdminStateT admin_state, SmNodeOperationalStateT oper_state,
SmNodeAvailStatusT avail_status, SmNodeReadyStateT ready_state,
SmUuidT old_state_uuid, SmUuidT state_uuid, long uptime, bool force,
SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Node Swact
// ===========================
extern SmErrorT sm_msg_send_node_swact( char node_name[], bool force,
SmUuidT request_uuid, SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Node Swact Ack
// ===============================
extern SmErrorT sm_msg_send_node_swact_ack( char node_name[], bool force,
SmUuidT request_uuid, SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Hello
// =====================================
extern SmErrorT sm_msg_send_service_domain_hello( char node_name[],
SmOrchestrationTypeT orchestration, SmDesignationTypeT designation,
int generation, int priority, int hello_interval, int dead_interval,
int wait_interval, int exchange_interval, char leader[],
SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Pause
// =====================================
extern SmErrorT sm_msg_send_service_domain_pause( char node_name[],
int pause_interval, SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Exchange Start
// ==============================================
extern SmErrorT sm_msg_send_service_domain_exchange_start( char node_name[],
char exchange_node_name[], int exchange_seq,
SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Exchange
// ========================================
extern SmErrorT sm_msg_send_service_domain_exchange( char node_name[],
char exchange_node_name[], int exchange_seq, int64_t member_id,
char member_name[], SmServiceGroupStateT member_desired_state,
SmServiceGroupStateT member_state, SmServiceGroupStatusT member_status,
SmServiceGroupConditionT member_condition, int64_t member_health,
char reason_text[], bool more_members, int64_t last_received_member_id,
SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Member Request
// ==============================================
extern SmErrorT sm_msg_send_service_domain_member_request( char node_name[],
char member_node_name[], int64_t member_id, char member_name[],
SmServiceGroupActionT member_action,
SmServiceGroupActionFlagsT member_action_flags,
SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Send Service Domain Member Update
// =============================================
extern SmErrorT sm_msg_send_service_domain_member_update( char node_name[],
char member_node_name[], int64_t member_id, char member_name[],
SmServiceGroupStateT member_desired_state,
SmServiceGroupStateT member_state, SmServiceGroupStatusT member_status,
SmServiceGroupConditionT member_condition, int64_t member_health,
const char reason_text[], SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Open Sockets
// ========================
extern SmErrorT sm_msg_open_sockets( SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Close Sockets
// =========================
extern SmErrorT sm_msg_close_sockets( SmServiceDomainInterfaceT* interface );
// ****************************************************************************
// ****************************************************************************
// Messaging - Dump Data
// =====================
extern void sm_msg_dump_data( FILE* log );
// ****************************************************************************
// ****************************************************************************
// Messaging - Initialize
// ======================
extern SmErrorT sm_msg_initialize( void );
// ****************************************************************************
// ****************************************************************************
// Messaging - Finalize
// ====================
extern SmErrorT sm_msg_finalize( void );
// ****************************************************************************
#ifdef __cplusplus
}
#endif
#endif // __SM_MSG_H__