GrassHopper behaviour (grass_hopper v0.1.0)
GrassHopper is a tiny abstraction over GenServer, that helps building dynamically scheduled recursive processes. It allows to efficiently jump along timestamps and perform user defined actions. Think of a librarian going through the list of borrowed books and calling the borrowers as their leases reach the due date.
User of GrassHopper needs to implement two callbacks:
next
is called to compute the next timestamp (NaiveDateTime) or nil which will cause the process to wait indefinitely or max_timeoutperform
: called to perform the operation on a given interval
Link to this section Summary
Link to this section Types
Link to this type
state()
Specs
state() :: %{opts: Keyword.t(), from: NaiveDateTime.t(), to: NaiveDateTime.t()}
Link to this section Callbacks
Link to this callback
next(state)
Specs
next(state()) :: NaiveDateTime.t() | nil
Link to this callback
perform(state)
Specs
Link to this section Functions
Link to this function
refresh(dest)
Specs
Link to this function