Parallelize BlockRegistry
This commit is contained in:
parent
ceb4daaf57
commit
4e702caa6a
@ -31,9 +31,17 @@ defmodule Amethyst.Application do
|
|||||||
child_spec: DynamicSupervisor.child_spec([]),
|
child_spec: DynamicSupervisor.child_spec([]),
|
||||||
name: Amethyst.GameMetaSupervisor
|
name: Amethyst.GameMetaSupervisor
|
||||||
},
|
},
|
||||||
{Amethyst.BlockRegistry, %{}},
|
{PartitionSupervisor,
|
||||||
|
child_spec: Amethyst.BlockRegistry.child_spec(%{}),
|
||||||
|
name: Amethyst.BlockRegistry},
|
||||||
Supervisor.child_spec(
|
Supervisor.child_spec(
|
||||||
{Task, fn -> Amethyst.DataGenerator.generate_and_populate_data(:latest, "/tmp/server.jar", "/tmp/amethyst-generated") end}, id: Amethyst.DataGenerator)
|
{Task, fn ->
|
||||||
|
Amethyst.DataGenerator.generate_and_populate_data(
|
||||||
|
:latest,
|
||||||
|
"/tmp/server.jar",
|
||||||
|
"/tmp/amethyst-generated")
|
||||||
|
end},
|
||||||
|
id: Amethyst.DataGenerator)
|
||||||
]
|
]
|
||||||
|
|
||||||
children = case Application.fetch_env!(:amethyst, :port) do
|
children = case Application.fetch_env!(:amethyst, :port) do
|
||||||
|
@ -22,9 +22,8 @@ defmodule Amethyst.BlockRegistry do
|
|||||||
"""
|
"""
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
def start_link(initial) do
|
def start_link(map) do
|
||||||
Logger.info("Starting BlockRegistry")
|
GenServer.start_link(__MODULE__, map)
|
||||||
GenServer.start_link(__MODULE__, initial, name: __MODULE__)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def init(map) do
|
def init(map) do
|
||||||
@ -44,6 +43,11 @@ defmodule Amethyst.BlockRegistry do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_call(:debug, _from, state) do
|
||||||
|
Logger.debug("BlockRegistry state: #{inspect(state)}")
|
||||||
|
{:reply, :ok, state}
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Adds a block state to the registry.
|
Adds a block state to the registry.
|
||||||
|
|
||||||
@ -54,7 +58,7 @@ defmodule Amethyst.BlockRegistry do
|
|||||||
"""
|
"""
|
||||||
@spec add(String.t(), map(), integer()) :: :ok
|
@spec add(String.t(), map(), integer()) :: :ok
|
||||||
def add(id, bs, bsi) do
|
def add(id, bs, bsi) do
|
||||||
GenServer.cast(__MODULE__, {:add, id, bs, bsi})
|
GenServer.cast({:via, PartitionSupervisor, {__MODULE__, id}}, {:add, id, bs, bsi})
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@ -64,6 +68,6 @@ defmodule Amethyst.BlockRegistry do
|
|||||||
"""
|
"""
|
||||||
@spec get(String.t(), map() | nil) :: integer() | nil
|
@spec get(String.t(), map() | nil) :: integer() | nil
|
||||||
def get(id, bs \\ %{}) do
|
def get(id, bs \\ %{}) do
|
||||||
GenServer.call(__MODULE__, {:get, id, bs})
|
GenServer.call({:via, PartitionSupervisor, {__MODULE__, id}}, {:get, id, bs})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,4 +6,5 @@ config :amethyst,
|
|||||||
auth: true, # Whether or not users should be authenticated with Mojang.
|
auth: true, # Whether or not users should be authenticated with Mojang.
|
||||||
compression: 256, # Packets larger than this amount are sent compressed. Set to nil to disable compression.
|
compression: 256, # Packets larger than this amount are sent compressed. Set to nil to disable compression.
|
||||||
default_game: Example.Game, # Which game new players should be sent to
|
default_game: Example.Game, # Which game new players should be sent to
|
||||||
|
|
||||||
release: config_env() == :prod # If this is set to false, Amethyst will perform additional checks at runtime and will handle errors more loosely
|
release: config_env() == :prod # If this is set to false, Amethyst will perform additional checks at runtime and will handle errors more loosely
|
||||||
|
Loading…
Reference in New Issue
Block a user