檢視原始碼 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 起可用