View Source Exshome.Dependency.GenServerDependency behaviour (Exshome - Elixir Smart Home v0.1.7)
This module stores generic API for GenServer based dependencies.
Link to this section Summary
Functions
Returns a specification to start this module under a supervisor.
Validates configuration for the dependency and raises if it is invalid. Available configuration options: :name (required) - name of the dependency :dependencies (default []) - dependencies list :events (default []) - events to subscribe, where key is a module, and value is a topic
Link to this section Callbacks
@callback handle_call( request :: term(), GenServer.from(), state :: Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: {:reply, reply, new_state} | {:reply, reply, new_state, timeout() | :hibernate | {:continue, term()}} | {:noreply, new_state} | {:noreply, new_state, timeout() | :hibernate | {:continue, term()}} | {:stop, reason, reply, new_state} | {:stop, reason, new_state} when reply: term(), new_state: Exshome.Dependency.GenServerDependency.DependencyState.t(), reason: term()
@callback handle_dependency_change( Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@callback handle_event( Exshome.Event.event_message(), Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@callback handle_info( message :: any(), Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: {:noreply, new_state} | {:noreply, new_state, timeout() | :hibernate | {:continue, term()}} | {:stop, reason :: term(), new_state} when new_state: Exshome.Dependency.GenServerDependency.DependencyState.t()
@callback update_value( Exshome.Dependency.GenServerDependency.DependencyState.t(), value :: any() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
Link to this section Functions
@spec call(GenServer.server(), any()) :: any()
Returns a specification to start this module under a supervisor.
See Supervisor
.
@spec get_value(GenServer.server()) :: any()
@spec handle_dependency_change( Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@spec handle_dependency_info( any(), Exshome.Dependency.GenServerDependency.DependencyState.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@spec modules(app :: atom()) :: MapSet.t(Exshome.Dependency.dependency())
@spec start_link(map()) :: GenServer.on_start()
@spec subscribe_to_dependencies( Exshome.Dependency.GenServerDependency.DependencyState.t(), Enumerable.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@spec subscribe_to_events( Exshome.Dependency.GenServerDependency.DependencyState.t(), Enumerable.t() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@spec update_data( Exshome.Dependency.GenServerDependency.DependencyState.t(), (any() -> any()) ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
@spec update_value( Exshome.Dependency.GenServerDependency.DependencyState.t(), value :: any() ) :: Exshome.Dependency.GenServerDependency.DependencyState.t()
Validates configuration for the dependency and raises if it is invalid. Available configuration options: :name (required) - name of the dependency :dependencies (default []) - dependencies list :events (default []) - events to subscribe, where key is a module, and value is a topic
@spec validate_module!(Macro.Env.t(), String.t()) :: keyword()