User Tools

Site Tools


cs330_f2016:lab13scaffold

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cs330_f2016:lab13scaffold [2017/04/05 16:42]
dhart
cs330_f2016:lab13scaffold [2021/06/30 23:42]
Line 1: Line 1:
-<file elixir module.exs>​ 
-defmodule Database do 
-  use GenServer 
  
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :Database, self()) 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    #check Depends 
-    {:reply, :ok, state} 
-  end 
- 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
-end 
- 
- 
- 
- 
-defmodule CustomerService do 
-  use GenServer 
- 
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :​CustomerService,​ self()) 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    #check Depends 
-    {:reply, :ok, state} 
-  end 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
-end 
- 
- 
-defmodule Info do 
-  use GenServer 
- 
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :Info, self()) 
-    send self(), {:start, ns} 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    if ! check_alive(state) do 
-      {:stop, "​dependency not found",​ "​dependency not found",​ state} 
-    end 
-    {:reply, :ok, state} 
-  end 
- 
-  def check_alive(processes) do 
-    x = Enumerable.map(processes,​ &​Process.alive/​0) 
-    reducer =  fn l, r -> l and r end 
-    Enumberable.reduce(x,​ true, reducer) 
-  end 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info({:​start,​ ns}, _state) do 
-    :​timer.sleep(500) 
-    case NameServer.resolve(ns,​ :Database) do 
-      :error -> {:stop, "No Database Found",​ []} 
-      x -> {:noreply, [x]} 
-    end 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
-end 
- 
-defmodule Order do 
-  use GenServer 
- 
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :Order, self()) 
-    send self(), {:start, ns} 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    if ! check_alive(state) do 
-      {:stop, "​dependency not found",​ "​dependency not found",​ state} 
-    end 
-    {:reply, :ok, state} 
-  end 
- 
-  def check_alive(processes) do 
-    x = Enumerable.map(processes,​ &​Process.alive/​0) 
-    reducer = fn l, r -> l and r end 
-    Enumberable.reduce(x,​ true, reducer) 
-  end 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info({:​start,​ ns}, _state) do 
-    :​timer.sleep(500) 
-    case NameServer.resolve(ns,​ :Database) do 
-      :error -> {:stop, "No Database Found",​ []} 
-      x -> 
-        case NameServer.resolve(ns,​ :User) do 
-          :error -> {:stop, "User Module not Found",​ []} 
-          y -> {:noreply, [x, y]} 
-        end 
-    end 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
-end 
- 
-defmodule Shipper do 
-  use GenServer 
- 
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :Shipper, self()) 
-    send self(), {:start, ns} 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    if ! check_alive(state) do 
-      {:stop, "​dependency not found",​ "​dependency not found",​ state} 
-    end 
-    {:reply, :ok, state} 
-  end 
- 
-  def check_alive(processes) do 
-    x = Enumerable.map(processes,​ &​Process.alive/​0) 
-    reducer = fn l, r -> l and r end 
-    Enumberable.reduce(x,​ true, reducer) 
-  end 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info({:​start,​ ns}, _state) do 
-    :​timer.sleep(500) 
-    case NameServer.resolve(ns,​ :Database) do 
-      :error -> {:stop, "No Database Found",​ []} 
-      x ->​{:​noreply,​ [x]} 
- 
-    end 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
-end 
- 
-defmodule User do 
-  use GenServer 
- 
-  def start_link(name_server,​ opts \\ []) do 
-    GenServer.start_link(__MODULE__,​ name_server,​ []) 
-  end 
- 
-  def start(name_server) do 
-    GenServer.start(__MODULE__,​ name_server, ​ []) 
-  end 
- 
-  def call(mod) do 
-    GenServer.call(mod,​ "​Message"​) 
-  end 
- 
-  def kill(mod) do 
-    Process.exit(mod,​ "​killed"​) 
-  end 
- 
-  def init(ns) do 
-    # DB has no Depends 
-    IO.puts Atom.to_string(__MODULE__) <> " has started"​ 
-    NameServer.register(ns,​ :User, self()) 
-    send self(), {:start, ns} 
-    {:ok, []} 
-  end 
- 
-  def handle_call(_request,​ _From, state) do 
-    if ! check_alive(state) do 
-      {:stop, "​dependency not found",​ "​dependency not found",​ state} 
-    end 
-    {:reply, :ok, state} 
-  end 
- 
-  def check_alive(processes) do 
-    x = Enumerable.map(processes,​ &​Process.alive/​0) 
-    reducer = fn l, r -> l and r end 
-    Enumberable.reduce(x,​ true, reducer) 
-  end 
- 
-  def handle_cast(_request,​ state) do 
-    #check Depends (none) 
-    {:noreply, state} 
-  end 
- 
-  def handle_info({:​start,​ ns}, _state) do 
-    :​timer.sleep(500) 
-    case NameServer.resolve(ns,​ :Database) do 
-      :error -> {:stop, "No Database Found",​ []} 
-      x -> 
-        case NameServer.resolve(ns,​ :Order) do 
-          :error -> {:stop, "User Module not Found",​ []} 
-          y -> {:noreply, [x, y]} 
-        end 
-    end 
-  end 
- 
-  def handle_info(_,​ state) do 
-    #​checkDepends (none) 
-    {:noreply, state} 
-  end 
- 
-end 
- 
-defmodule Crasher do 
- 
-  def crash(ns, name) do 
-    IO.puts("​Crashing the module..."​) 
-    pid = GenServer.call(ns,​ {:resolve, name}) 
-    if pid == :error do 
- IO.puts(["​Unable to find process ", Atom.to_string(name)]) 
-    else 
- Process.exit(pid,​ :kill) 
-    end 
-  end 
-  ​ 
-end 
- 
-</​file>​ 
cs330_f2016/lab13scaffold.txt ยท Last modified: 2021/06/30 23:42 (external edit)