Implement Openflow Protocol and Callback system
This commit is contained in:
parent
fc02a678de
commit
e52fe31b79
48 changed files with 937 additions and 244 deletions
|
|
@ -26,6 +26,10 @@ defmodule Openflow do
|
|||
end
|
||||
end
|
||||
|
||||
def to_binary(messages) when is_list(messages) do
|
||||
binaries = for message <- messages, do: to_binary(message)
|
||||
Enum.join(binaries, "")
|
||||
end
|
||||
def to_binary(%{__struct__: encoder, version: version, xid: xid} = msg) do
|
||||
case encoder.to_binary(msg) do
|
||||
body_bin when is_binary(body_bin) ->
|
||||
|
|
@ -36,6 +40,16 @@ defmodule Openflow do
|
|||
end
|
||||
end
|
||||
|
||||
def append_body(nil, message), do: message
|
||||
def append_body(message, continue) do
|
||||
mod = message.__struct__
|
||||
if function_exported?(mod, :append_body, 2) do
|
||||
mod.append_body(message, continue)
|
||||
else
|
||||
message
|
||||
end
|
||||
end
|
||||
|
||||
# private functions
|
||||
|
||||
defp do_read({:error, reason}, _) do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue