用戶端透過開啟至伺服器 IP 位址和連接埠號碼的 TCP 連線來初始化註冊。在建立了 TCP 連接並為寫入做好準備之後,用戶端必須發送其註冊訊息。該註冊訊息必須是一條已正確格式化的 SC_CALLBACK_REG 訊息,在其前後都不包含額外位元組。
在將所有位元組寫入至串流之後,用戶端必須保持其連接的開啟狀態,才能接收到來自伺服器的回覆。如果用戶端沒有正確格式化該訊息,則伺服器不會註冊該用戶端,並且會將錯誤的回覆發送給該用戶端。然而,如果用戶端在伺服器傳送回覆之前關閉套接字連接,則伺服器會正常註冊該用戶端。
用戶端可以隨時聯絡伺服器。每當用戶端聯絡伺服器時,該用戶端必須發送 SC_CALLBACK_REG 訊息。如果該伺服器接收到形式錯誤的、順序紊亂的或者無效的訊息,便會將錯誤的回覆發送給該用戶端。
用戶端無法在該用戶端傳送 ADD_CLIENT 訊息之前傳送 ADD_EVENTS、REMOVE_EVENTS 或 REMOVE_CLIENT 訊息。用戶端無法在該用戶端傳送 ADD_CLIENT 訊息之前傳送 REMOVE_CLIENT 訊息。
如果用戶端發送了 ADD_CLIENT 訊息,並且該用戶端已經註冊,則伺服器可以容許此訊息。在此情形下,伺服器會以靜音方式將舊的用戶端註冊取代為在第二條 ADD_CLIENT 訊息中所指定的新的用戶端註冊。
在大多數情形下,用戶端透過在啟動時發送 ADD_CLIENT 訊息,在伺服器中註冊一次。透過將 REMOVE_CLIENT 訊息傳送至伺服器,用戶端可取消註冊。然而,CRNP 會為需要動態修改其事件類型清單的那些用戶端提供更多靈活性。
每個 ADD_CLIENT、REMOVE_CLIENT、ADD_EVENTS 和 REMOVE_EVENTS 訊息均包含一個事件清單。下表說明 CRNP 接受的事件類型,其中包括必需的名稱與值對。
如果用戶端執行以下動作之一,則伺服器將會無訊息地忽略這些訊息︰
傳送 REMOVE_EVENTS 訊息,指定用戶端之前尚未註冊的一個或多個事件類型
兩次註冊同一事件類型
類別與子類別 |
名稱與值對 |
描述 |
---|---|---|
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 事件 |