tres/lib/openflow/echo/request.ex
2019-05-05 23:39:46 +09:00

44 lines
922 B
Elixir

defmodule Openflow.Echo.Request do
defstruct(
version: 4,
xid: 0,
data: "",
# virtual field
datapath_id: nil,
# virtual field
aux_id: 0
)
alias __MODULE__
@type t :: %Request{
version: 4,
xid: 0..0xFFFFFFFF,
data: String.t(),
datapath_id: String.t() | nil,
aux_id: 0..0xFFFF | nil
}
@spec ofp_type :: 2
def ofp_type, do: 2
@spec new(xid: 0..0xFFFFFFFF, data: String.t()) :: t()
def new(options) when is_list(options) do
%Request{
xid: options[:xid] || 0,
data: options[:data] || ""
}
end
@spec new(String.t()) :: t()
def new(data) when is_binary(data), do: %Request{data: data}
@spec new() :: t()
def new, do: new([])
@spec read(String.t()) :: t()
def read(data), do: %Request{data: data}
@spec to_binary(t()) :: String.t()
def to_binary(%Request{data: data}), do: data
end