Packages

A library for distributed reactive programming with flexible consistency guarantees drawing from QUARP and Rx.. Features the familiar behaviours and event streams in the spirit of FRP.

Current section

Files

Jump to
bquarp lib middleware deployer.ex
Raw

lib/middleware/deployer.ex

defmodule ReactiveMiddleware.Deployer do
use GenServer
require Logger
alias GenServer
####################
# CLIENT INTERFACE #
####################
@doc """
Start the GenServer.
"""
def start_link(args \\ []) do
GenServer.start_link(__MODULE__, args, name: __MODULE__)
end
@doc """
Deploys the given program to the remote node.
"""
def deploy(remote, program) do
GenServer.call(__MODULE__,{:deploy, program, remote})
end
####################
# SERVER CALLBACKS #
####################
def init([]) do
Logger.info("Starting the Deployer")
{:ok, %{}}
end
def handle_call({:deploy, program, remote}, _from, state) do
evaluator = :global.whereis_name({remote, :evaluator})
GenServer.call(evaluator, {:evaluate, program})
{:reply, :ok, state}
end
end