Modbus TCP listener と client connection を管理する server です。
connection ごとに独立した process が fragmented / concatenated MBAP stream を処理し、
同じ connection の request は順番に、異なる connection は並行して処理します。
socket owner は handler の完了を待たず受信を続け、worker へ未配送の broker buffer を
:max_buffer で制限します。active socket mailbox、worker が処理中の data、runtime の
socket buffer はこの値に含みません。
request semantics、handler isolation、authorization、device identification は
AVModbus.Server と共有します。
Summary
Functions
server が listen している port を返します。port 0 で起動した場合にも利用できます。
TCP port を listen して server を起動します。
listener state と現在の connection 数を返します。
listener と connection を閉じて server を停止します。
Types
@type option() :: {:port, 0..65535} | {:address, :inet.ip_address()} | {:connections, pos_integer()} | {:idle, pos_integer() | :infinity} | {:handler_timeout, pos_integer() | :infinity} | {:max_buffer, pos_integer()} | {:allow, nil | [term()]} | {:authorize, AVModbus.Server.authorize() | nil} | {:identification, AVModbus.Server.Identification.objects() | nil} | {:name, atom()}
Functions
@spec port(server()) :: 0..65535
server が listen している port を返します。port 0 で起動した場合にも利用できます。
@spec start_link(AVModbus.Server.handler(), [option()]) :: {:ok, pid()} | {:error, term()}
TCP port を listen して server を起動します。
@spec status(server()) :: {:listening, non_neg_integer()}
listener state と現在の connection 数を返します。
@spec stop(server()) :: :ok
listener と connection を閉じて server を停止します。