# defmodule Strom.Node do # # alias Strom.{Composite, Plug, Socket} # # defstruct composite: nil, sockets: [], plugs: [] # # def new(%Composite{} = composite, inputs, outputs) when is_list(inputs) and is_list(outputs) do # %__MODULE__{ # composite: composite, # sockets: Enum.map(inputs, &Socket.new/1), # plugs: Enum.map(inputs, &Plug.new/1) # } # end # # def start(%__MODULE__{composite: composite, sockets: sockets, plugs: plugs}) do # composite = Composite.start(composite1()) # # plug = Plug.new(:numbers) |> Plug.start() # end # # def call(flow, %__MODULE__{composite: composite, sockets: sockets, plugs: plugs}) do # flow = # sockets # |> Enum.reduce(flow, fn socket, fl -> # Socket.call(fl, socket) # end) # |> Composite.call(composite) # # Enum.reduce(plugs, flow, fn plug, fl -> # Plug.call(fl, plug) # end) # end # end