Packages

package framework

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Package Members

  1. package data
  2. package modules
  3. package pekko
  4. package utils

Type Members

  1. trait BlockSubscription extends AnyRef
  2. trait CancellableEvent extends AnyRef

    An abstraction of cancelable delayedEvent for deterministic simulation testing purposes.

  3. trait ClientP2PNetworkManager[E <: Env[E], -P2PMessageT] extends AnyRef

    An abstraction of the P2P network manager for deterministic simulation testing purposes.

  4. trait Env[E <: Env[E]] extends AnyRef

    An environment defines the concrete actor context, reference and timer times for a specific actor framework, such as Pekko or the deterministic simulation testing framework.

    An environment defines the concrete actor context, reference and timer times for a specific actor framework, such as Pekko or the deterministic simulation testing framework.

    A bit of theory: This type utilizes F-bounded polymorphism, meaning that Env is parameterized over its own subtypes. This enables passing the implementing type as an argument to the superclass, facilitating the use of more specific argument and return types where subtypes of Env are present. Another commonly used pattern for this use case is the type-class pattern (also known as ad-hoc polymorphism), you can read more about both here: https://stackoverflow.com/questions/59813323/advantages-of-f-bounded-polymorphism-over-typeclass-for-return-current-type-prob

  5. trait FutureContext[E <: Env[E]] extends AnyRef

    FutureContext contains functions for creating and combining E#FutureUnlessShutdown that will be safe to use in pipeToSelf.

  6. trait Module[E <: Env[E], MessageT] extends NamedLogging with FlagCloseable

    Modules abstract actors away from the concrete actor framework, mainly so that their logic can be more easily deterministically simulation-tested.

    Modules abstract actors away from the concrete actor framework, mainly so that their logic can be more easily deterministically simulation-tested.

    E

    An environment corresponding to the actor framework, such as Pekko or the deterministic simulation testing framework.

    MessageT

    The root message type understood by the actor.

  7. trait ModuleContext[E <: Env[E], MessageT] extends NamedLogging with FutureContext[E]

    An abstraction of actor contexts for deterministic simulation testing purposes.

  8. final case class ModuleName(name: String) extends Product with Serializable
  9. trait ModuleRef[-AcceptedMessageT] extends AnyRef

    Modules abstract actor references away from the concrete actor framework, mainly so that their logic can be more easily deterministically simulation-tested.

    Modules abstract actor references away from the concrete actor framework, mainly so that their logic can be more easily deterministically simulation-tested.

    AcceptedMessageT

    The root message type understood by the actor.

  10. trait ModuleSystem[E <: Env[E]] extends AnyRef

    A module system abstracts how modules are constructed away from the concrete actors framework, such as Pekko or the deterministic simulation testing framework.

    A module system abstracts how modules are constructed away from the concrete actors framework, such as Pekko or the deterministic simulation testing framework.

    Note that modules, unlike actors, are arranged in a static topology at bootstrap.

  11. class OrderingModuleSystemInitializer[E <: Env[E]] extends SystemInitializer[E, BftOrderingServiceReceiveRequest, Message]

    A module system initializer for the general ordering system based on module factories.

  12. trait P2PNetworkRef[-P2PMessageT] extends FlagCloseable

    An abstraction of the network for deterministic simulation testing purposes.

  13. sealed trait PureFun[A, B] extends (A) => B

    A subset of functions that are pure, this is used by ModuleContext.mapFuture to guarantee we don't mutate state when we shouldn't.

    A subset of functions that are pure, this is used by ModuleContext.mapFuture to guarantee we don't mutate state when we shouldn't.

    This trait is sealed so that we *can't* use lambda abstraction to construct values of this type

    A

    input type

    B

    output type

Value Members

  1. object Module
  2. object OrderingModuleSystemInitializer
  3. object PureFun
  4. object SupportedVersions

Ungrouped