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
  • ServiceBindings
  • package endpoints
    Definition Classes
    core
  • package ops
    Definition Classes
    core
  • package proto
    Definition Classes
    core
  • package rts

    The eventual ZIO runtime hosting application code (AppRuntime) is constructed incrementally from:

    The eventual ZIO runtime hosting application code (AppRuntime) is constructed incrementally from:

    1. runtime provided by ZIO 2. runtime extended with environment required of host process: HostRuntime, HostIO. 3. runtime extended with environment required of a server node: ServerRuntime, ServerIO 4. runtime extended with environment required by all application domains: AppRuntime, AppIO

    The AppRuntime is the base runtime available to the actor system via AppRuntimeExt.

    Definition Classes
    core
  • package serdes
    Definition Classes
    core
  • package storage
    Definition Classes
    core
p

glngn.server.core

bindings

package bindings

Ordering
  1. Grouped
  2. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. 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)
        )
      }
    }

Value Members

  1. object ServiceBindings

Implementation Detail

Ungrouped