檢視原始碼 ei_global
存取全域註冊的名稱。
說明
此模組提供在 global
模組中註冊、查詢和取消註冊名稱的支援。如需更多資訊,請參閱 kernel:global
。
請注意,以下函數使用呼叫者提供的已開啟檔案描述符執行 RPC。此檔案描述符在全域操作期間不得用於其他流量,因為該函數可能會接收到非預期的資料並導致失敗。
ei_global_names()
char **ei_global_names(ei_cnode *ec, int fd, int *count);
檢索所有已知全域名稱的清單。
ec
是代表目前 cnode 的ei_cnode
。fd
是到 Erlang 連線的已開啟描述符。count
是一個整數的位址,或NULL
。如果count
不是NULL
,該函數會將其設定為找到的名稱數量。
成功時,該函數會傳回一個字串陣列,每個字串包含一個已註冊的名稱,並將 count
設定為找到的名稱數量。該陣列以單個 NULL
指標結束。失敗時,該函數會傳回 NULL
,且不會修改 count
。
注意
呼叫者有責任在之後釋放該陣列。它已由該函數透過單次呼叫
malloc()
進行配置,因此只需要單次free()
。
自 OTP 23.0 起可用
ei_global_register()
int ei_global_register(int fd, const char *name, erlang_pid *self);
在 global
中註冊一個名稱。
fd
是到 Erlang 連線的已開啟描述符。name
是要在global
中註冊的名稱。pid
是要與name
相關聯的 pid。當程序請求name
的位置時,global
會傳回此值。
成功時傳回 0
,否則傳回 -1
。
自 OTP 23.0 起可用
ei_global_unregister()
int ei_global_unregister(ei_cnode *ec, int fd, const char *name);
從 global
取消註冊一個名稱。
ec
是代表目前 cnode 的ei_cnode
。fd
是到 Erlang 連線的已開啟描述符。name
是要從global
取消註冊的名稱。
成功時傳回 0
,否則傳回 -1
。
自 OTP 23.0 起可用
ei_global_whereis()
int ei_global_whereis(ei_cnode *ec, int fd, const char *name, erlang_pid* pid, char *node);
在 global
中查詢一個名稱。
ec
是代表目前 cnode 的ei_cnode
。fd
是到 Erlang 連線的已開啟描述符。name
是要在global
中查詢的名稱。
pid
參數是指向 erlang_pid
的指標,如果成功,該函數將使用與全域名稱關聯的 pid 更新該指標。
如果 node
不是 NULL
,它是一個指向緩衝區的指標,該函數可以在其中填入找到 name
的節點名稱。如有必要,可以將 node
直接傳遞給 ei_connect()
。
成功時,該函數會傳回 0,更新 pid 參數指向的 erlang_pid
,並且 node
參數會初始化為找到 name
的節點名稱。失敗時,會傳回負數。
自 OTP 23.0 起可用