Packages

  • package root

    glngn server is a low-code business process as a service rapid development system.

    glngn server is a low-code business process as a service rapid development system. Conceptually similar to a programmable Microsoft Access or Apple FileMaker for scalable event sourced business services. In addition to a library, a standalone application is provided that is useful with minimal ceremony. This can be customized with a simple API. As well as deployed to a kubernetes cluster should those advantages be required.

    A deployment is cluster of glngn.server.node.AppNodes serving a dynamic composition of glngn.server.ServiceFragments. Deployments are designed to be fully usable as a standalone local application or a kubernetes service.

    Contact support@dogheadbone.com for support and licensing.

    Definition Classes
    root
  • package glngn
    Definition Classes
    root
  • package server

    Definition Classes
    glngn
  • package core
    Definition Classes
    server
  • package bindings
    Definition Classes
    core
  • trait ServiceBindings extends ServiceActor

    Declarative mapping from a service domain's protocol to implementations.

    Declarative mapping from a service domain's protocol to implementations. Included in ServiceFragment.

    In glngn server, the mapping of service domain protocol to implementations is refered to as the bindings: the binding of a domain term to an implementation. Logically similar to data binding in UI controller libraries. The bindings are determined by evaluating Instance.bindings for each service actor instance.

    See Bindings for the EDSL for declaring bindings.

    The ServiceBindings trait enforces this by requiring the ServiceActor object to define an Instance class implementing BindingsInstance. The ServiceFragment's Instance already satisfies this requirement.

    object BalanceSheet extends ServiceActor with ServiceBindings {
      sealed trait Proto extends Message
      case class PrintAndMailBalance(accountId: Int) extends Proto with Command[Unit]
      case class PostBalanceToMessageBus(accountId: Int) extends Proto with Command[Balance]
    
      class Instance(val env: InstanceEnv) extends BindingsInstance {
        import Bindings._
    
        val behavior: Behavior[Envelope] = Behaviors.receiveMessagePartial {
          case Request(scope, PostBalanceToMessageBus(accountId)) => {
            val balance = getBalanceNonIO(accountId)
            postBalanceToMessageBus(balance)
            scope.provide(balance)
            Behaviors.same
          }
        }
    
        // chain sequences individual Bindings[_].
        def bindings: Bindings[_] = chain(
          // a Bindings[_] constructor from object Bindings
          // this performs the given IO on protocol match.
          responderIO {
            case PrintAndMailBalance(accountId) => requestBalanceSheet(accountId) >>= printInMailroom
          },
          // a Bindings[_] constructor from object Bindings
          // this delegates to an akka typed Behavior[Envelope]
          delegate(behavior)
        )
      }
    }
    Definition Classes
    bindings
  • Bindings
  • BindingsInstance
  • Command
  • DelegateOps
  • Envelope
  • Event
  • Instance
  • InstanceEnv
  • Proto
  • Query
  • Request
  • StopEnvelope

implicit class DelegateOps extends AnyRef

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DelegateOps
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DelegateOps(delegate: Delegate)

Type Members

  1. sealed abstract class WithContext[T] extends AnyRef

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def askReply(envelope: (prelude.external.ActorRef[Reply]) ⇒ ServiceBindings.Envelope)(implicit executionContext: prelude.external.ExecutionContext, scheduler: prelude.external.Scheduler, timeout: prelude.external.Timeout = defaultTimeout): prelude.external.Future[Reply]
  6. def askResponse[Response](request: ServiceBindings.Proto with ServiceBindings.Request[Response])(implicit executionContext: prelude.external.ExecutionContext, responseType: Manifest[Response], scheduler: prelude.external.Scheduler, timeout: prelude.external.Timeout = defaultTimeout): prelude.external.Future[Response]

    Exec a future for asking the delegate the given request.

  7. def askResult(request: ServiceBindings.Proto with ServiceBindings.Request[_])(implicit executionContext: prelude.external.ExecutionContext, scheduler: prelude.external.Scheduler, timeout: prelude.external.Timeout = defaultTimeout): prelude.external.Future[RequestResult]
  8. def askTry[Response](request: ServiceBindings.Proto with ServiceBindings.Request[Response])(implicit executionContext: prelude.external.ExecutionContext, responseType: Manifest[Response], scheduler: prelude.external.Scheduler, timeout: prelude.external.Timeout = defaultTimeout): prelude.external.Future[prelude.external.Try[Response]]

    Exec a future asking the delegate the request and providing a response with explicit failure.

  9. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  20. def toString(): String
    Definition Classes
    AnyRef → Any
  21. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  24. def withContext[T](ctx: prelude.external.ActorContext[T]): WithContext[T]

Inherited from AnyRef

Inherited from Any

Ungrouped