Packages

class CASExecutor extends ProcessExecutor[UUID] with SimplePiObservable[UUID]

A multi-state Compare-And-Swap ProcessExecutor.

Uses a ConcurrentHashMap to store states in a thread-safe way.

Updates states using compare-and-swap for a finite number of attempts. This is to avoid the situation of multiple asynchronous atomic processes posting their results on the same state at the same time.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CASExecutor
  2. SimplePiObservable
  3. PiPublisher
  4. PiObservable
  5. ProcessExecutor
  6. AnyRef
  7. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CASExecutor(maxCASAttempts: Int = 10)(implicit executionContext: ExecutionContext)

    maxCASAttempts

    The maximum number of Compare-And-Swap attempts before we fail.

Type Members

  1. case class Switch(name: String) extends PiSwitch with Product with Serializable
    Definition Classes
    SimplePiObservable

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from CASExecutor to any2stringadd[CASExecutor] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (CASExecutor, B)
    Implicit
    This member is added by an implicit conversion from CASExecutor to ArrowAssoc[CASExecutor] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def call[H <: PiEventHandler[UUID]](instance: PiInstance[_], factory: PiEventHandlerFactory[UUID, H]): Future[H]

    A init ; start sequence that gives us a chance to subscribe a listener that is specific to this execution.

    A init ; start sequence that gives us a chance to subscribe a listener that is specific to this execution. A new ID will be generated for the PiInstance to ensure freshness.

    instance

    The PiInstance to be executed

    factory

    A PiEventHandlerFactory which generates PiEventHandler's for a given ID

    returns

    A Future with the PiEventHandler that was generated

    Definition Classes
    ProcessExecutor
  8. def call[H <: PiEventHandler[UUID]](process: PiProcess, args: Seq[Any], factory: PiEventHandlerFactory[UUID, H]): Future[H]

    A init ; start sequence that gives us a chance to subscribe a listener that is specific to this execution.

    A init ; start sequence that gives us a chance to subscribe a listener that is specific to this execution.

    process

    The (atomic or composite) PiProcess to be executed

    args

    The (real) arguments to be passed to the process

    factory

    A PiEventHandlerFactory which generates PiEventHandler's for a given ID

    returns

    A Future with the PiEventHandler that was generated

    Definition Classes
    ProcessExecutor
  9. def call(instance: PiInstance[_]): Future[UUID]

    A simple init ; start sequence when we do not need any even listeners.

    A simple init ; start sequence when we do not need any even listeners. A new ID will be generated for the PiInstance to ensure freshness.

    instance

    The PiInstance to be executed

    returns

    A Future with the ID corresponding to this execution

    Definition Classes
    ProcessExecutor
  10. def call(process: PiProcess, args: Seq[Any]): Future[UUID]

    A simple init ; start sequence when we do not need any even listeners.

    A simple init ; start sequence when we do not need any even listeners.

    process

    The (atomic or composite) PiProcess to be executed

    args

    The (real) arguments to be passed to the process

    returns

    A Future with the ID corresponding to this execution

    Definition Classes
    ProcessExecutor
  11. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  12. def ensuring(cond: (CASExecutor) ⇒ Boolean, msg: ⇒ Any): CASExecutor
    Implicit
    This member is added by an implicit conversion from CASExecutor to Ensuring[CASExecutor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  13. def ensuring(cond: (CASExecutor) ⇒ Boolean): CASExecutor
    Implicit
    This member is added by an implicit conversion from CASExecutor to Ensuring[CASExecutor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  14. def ensuring(cond: Boolean, msg: ⇒ Any): CASExecutor
    Implicit
    This member is added by an implicit conversion from CASExecutor to Ensuring[CASExecutor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  15. def ensuring(cond: Boolean): CASExecutor
    Implicit
    This member is added by an implicit conversion from CASExecutor to Ensuring[CASExecutor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  16. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  18. def execute(instance: PiInstance[_]): Future[Any]

    Executes a PiInstance with a PromiseHandler A new ID will be generated for the PiInstance to ensure freshness.

    Executes a PiInstance with a PromiseHandler A new ID will be generated for the PiInstance to ensure freshness.

    returns

    A Future with the result of the executed process

    Definition Classes
    ProcessExecutor
  19. def execute(process: PiProcess, args: Seq[Any]): Future[Any]

    Executes a process with a PromiseHandler

    Executes a process with a PromiseHandler

    returns

    A Future with the result of the executed process

    Definition Classes
    ProcessExecutor
  20. implicit val executionContext: ExecutionContext
  21. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  22. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from CASExecutor to StringFormat[CASExecutor] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  23. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  24. val handlers: Map[String, PiEventHandler[UUID]]
    Attributes
    protected
    Definition Classes
    SimplePiObservable
  25. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  26. def init(instance: PiInstance[_]): Future[UUID]

    Initializes a PiInstance for a process execution.

    Initializes a PiInstance for a process execution. A new ID will be generated for the PiInstance to ensure freshness. This is always and only invoked before a start, hence why it is protected. This separation gives a chance to PiEventHandlers to subscribe before execution starts.

    instance

    The PiInstance to be executed

    returns

    A Future with the new unique ID that was generated

    Attributes
    protected
    Definition Classes
    CASExecutorProcessExecutor
  27. def init(process: PiProcess, args: Seq[PiObject]): Future[UUID]

    Initializes a PiProcess call for a process execution.

    Initializes a PiProcess call for a process execution. This is always and only invoked before a start, hence why it is protected. This separation gives a chance to PiEventHandlers to subscribe before execution starts.

    process

    The (atomic or composite) PiProcess to be executed

    args

    The PiObject arguments to be passed to the process

    returns

    A Future with the new unique ID that was generated

    Attributes
    protected
    Definition Classes
    ProcessExecutor
  28. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  29. final val maxCASAttempts: Int
  30. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  31. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  32. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  33. def postResult(id: UUID, ref: Int, res: PiObject): Unit
  34. def publish(evt: PiEvent[UUID]): Unit
    Definition Classes
    SimplePiObservablePiPublisher
  35. def start(id: UUID): Unit

    Starts the execution of an initialized PiInstance.

    Starts the execution of an initialized PiInstance. This is always and only invoked after an init, hence why it is protected. This separation gives a chance to PiEventHandlers to subscribe before execution starts.

    id

    The ID of the instance to start executing

    Definition Classes
    CASExecutorProcessExecutor
  36. val store: ConcurrentHashMap[UUID, PiInstance[UUID]]
  37. def subscribe(handler: PiEventHandler[UUID]): Future[PiSwitch]

    Subscribes a com.workflowfm.pew.stream.PiEventHandler to observe.

    handler

    the handler to subscribe

    returns

    the com.workflowfm.pew.stream.PiSwitch that allows us to stop/unsubscribe the subscribed handler

    Definition Classes
    SimplePiObservablePiObservable
  38. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  39. def toString(): String
    Definition Classes
    AnyRef → Any
  40. def unsubscribe(handlerName: String): Future[Boolean]
    Definition Classes
    SimplePiObservable
  41. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  42. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  43. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  44. def [B](y: B): (CASExecutor, B)
    Implicit
    This member is added by an implicit conversion from CASExecutor to ArrowAssoc[CASExecutor] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc

Inherited from SimplePiObservable[UUID]

Inherited from PiPublisher[UUID]

Inherited from PiObservable[UUID]

Inherited from ProcessExecutor[UUID]

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd from CASExecutor to any2stringadd[CASExecutor]

Inherited by implicit conversion StringFormat from CASExecutor to StringFormat[CASExecutor]

Inherited by implicit conversion Ensuring from CASExecutor to Ensuring[CASExecutor]

Inherited by implicit conversion ArrowAssoc from CASExecutor to ArrowAssoc[CASExecutor]

Ungrouped