通訊端

NAME

通訊端 - 雙向串流 IPC 傳輸

概要

通訊端是一種雙向串流傳輸。與管道不同,通訊端只會移動資料 (而非控制)。

說明

資料會透過 zx_socket_write() 寫入通訊端的一端,並透過 zx_socket_read() 從對端讀取。

通訊端建立後,通訊端的兩端都可寫入。只要使用 zx_socket_set_disposition() 系統呼叫,即可使用 ZX_SOCKET_DISPosition_WRITE_ENABLEDZX_SOCKET_DISPosition_WRITE_DISABLED 分別啟用或停用通訊端。

屬性

您可透過通訊端物件查詢下列屬性:

通訊端讀取門檻的 ZX_PROP_SOCKET_RX_THRESHOLD 大小,以位元組為單位。當通訊端上佇列中的位元組 (可供讀取) 等於或大於這個值時,系統會宣告 ZX_SOCKET_READ_THRESHOLD 信號。讀取門檻信號功能預設為停用 (設定時,如果這項屬性的值為 0,則會停用該信號)。

通訊端寫入門檻的 ZX_PROP_SOCKET_TX_THRESHOLD 大小,以位元組為單位。當通訊端可寫入的空間等於或大於這個值時,系統會宣告 ZX_SOCKET_WRITE_THRESHOLD 信號。寫入門檻信號功能預設為停用 (設定時,如果這項屬性的值為 0,則會停用該值)。

從通訊端控點的觀點來看,接收緩衝區包含可透過該帳號代碼的 zx_socket_read() 讀取的資料 (由相反的控制代碼寫入),而且傳輸緩衝區包含透過 zx_socket_write() 寫入至該控制代碼的資料 (且可從相反的控點讀取)。

訊號

可為通訊端物件設定下列信號:

ZX_SOCKET_READABLE 資料可從通訊端讀取

ZX_SOCKET_WRITABLE 資料可能會寫入通訊端

ZX_SOCKET_PEER_CLOSED 已關閉。

由於另一個端點的 ZX_SOCKET_PEER_WRITE_DISABLED 寫入功能已停用,因為其處理方式已設為 ZX_SOCKET_DISPosition_WRITE_DISABLED。只要通訊端中有在寫入前寫入的資料,這個訊號所引發的通訊端端點讀取就會成功。

這個端點的 ZX_SOCKET_WRITE_DISABLED 寫入功能已停用,因為其配置已設為 ZX_SOCKET_DISPosition_WRITE_DISABLED。若使用這個信號,在通訊端端點上寫入會失敗。

ZX_SOCKET_READ_THRESHOLD 資料在通訊端上排入佇列以用於讀取作業超過讀取閾值。

通訊端用於寫入的 ZX_SOCKET_WRITE_THRESHOLD 空間超過寫入門檻。

音效