Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

如何在客户机和服务器之间传送 SC_CALLBACK_REG 消息

客户机通过打开一个指向服务器的 IP 地址和端口号的 TCP 连接来启动登记。 建立 TCP 连接并做好写入准备后,客户机必须发送其登记消息。 登记消息必须是一条格式正确的 SC_CALLBACK_REG 消息,消息前后不能包含其它字节。

所有字节均已写入数据流后,该客户机必须使连接保持打开状态,以便接收来自服务器的应答。 如果客户机没有正确格式化消息,服务器将不登记客户机,并向客户机发送一条出错应答。 如果客户机在服务器发出应答之前关闭套接字连接,服务器将照常登记客户机。

客户机可以随时联系服务器。 客户机每次联系服务器时都必须发送一条 SC_CALLBACK_REG 消息。 如果服务器发送的消息格式不正确、次序有误或者无效,服务器将向该客户机发送一条出错应答。

客户机不能在发送 ADD_CLIENT 消息之前发送 ADD_EVENTSREMOVE_EVENTSREMOVE_CLIENT 消息。 客户机发送 ADD_CLIENT 消息后,才能发送 REMOVE_CLIENT 消息。

如果某台客户机发送一条 ADD_CLIENT 消息,但该客户机已经登记,那么服务器可能会接收这条消息。 这种情况下,服务器将使用第二条 ADD_CLIENT 消息中指定的新客户机登记替换旧的客户机登记,替换时不会发出提示。

大多数情况下,客户机在启动时通过发送一条 ADD_CLIENT 消息向服务器登记一次, 并通过向服务器发送一条 REMOVE_CLIENT 消息撤销登记一次。 然而,CRNP 为那些需要动态修改其事件类型列表的客户机提供了更大的灵活性。

SC_CALLBACK_REG 消息的内容

每条 ADD_CLIENTADD_EVENTSREMOVE_EVENTS 消息都包含一个事件列表。 下表描述了 CRNP 接受的事件类型,包括所需的名称和值对。

如果客户机:

则服务器将静默忽略这些消息。

类和子类  

名称和值对 

说明  

EC_Cluster

ESC_cluster_membership

必需: 无 

可选: 无  

登记所有群集成员更改事件(节点断开或连接) 

EC_Cluster

ESC_cluster_rg_state

一个是必需的,如下所示: 

rg_name

值类型: 字符串 

可选: 无  

登记资源组 name 的所有状态更改事件

EC_Cluster

ESC_cluster_r_state

一个是必需的,如下所示: 

r_name

值类型: 字符串 

可选: 无  

登记资源 name 的所有状态更改事件

EC_Cluster

无 

必需: 无  

可选: 无 

登记所有 Sun Cluster 事件