abstract class HostApp[AppParams] extends PreludeBuilders with prelude.external.IOLogging
An application hosting at least one server node.
By default:
- initial state defined by configuration file or command line arguments
- all service fragments under glngn.server.services are enabled
- dynamic service instantiation of service fragments
- operations interfaces for all instantiated services
- ad-hoc definition of singleton services and operations by operators
See also DefaultHostApp.
The type NoAppParams is suitable if no additional application parameters are required.
- Grouped
- Alphabetic
- By Inheritance
- HostApp
- IOLogging
- PreludeBuilders
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- type BaseEnvironment = Clock with Console with System with Random with Blocking
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
- def clusteredHostCommand(deploymentConfig: DeploymentConfig, hostParams: Params, appParams: AppParams, hostCommand: HostCommand): HostUIO[Int]
- def clusteredNodeCommandHandler(hostParams: Params, appParams: AppParams, config: Config, impureBindings: ImpureBindings, hostCommand: HostCommand): HostTask[Int]
-
def
clusteredRunUntilTerm(appParams: AppParams): ServerIO[node.Error, node.TermReason]
Does not complete until this cluster node completes.
Does not complete until this cluster node completes. Returns cause of termination. Error occurs if the server is unable to start.
-
val
deploymentImpureBindings: ImpureBindings
Impure injectable values for this deployment.
Impure injectable values for this deployment. Defaults to
ImpureBindings.empty
. -
def
deploymentName: DeploymentName
Name of this deployment.
Name of this deployment. Defaults to "glngn-server".
This is used as the akka system name and is echoed to logs and other status channels (EG: /healthz).
-
def
deploymentPrelude: Prelude
The prelude (Prelude) included in this deployment.
The prelude (Prelude) included in this deployment. Defaults to Prelude.empty.
-
def
dispatchOnArgs(args: List[String]): prelude.external.ZIO[BaseEnvironment, Nothing, Int]
Given a list of arguments and a
HostCommandHandler
either return a program for assisting with usage that exits immediately or dispatches toonHostCommand
.Given a list of arguments and a
HostCommandHandler
either return a program for assisting with usage that exits immediately or dispatches toonHostCommand
.Specifically, this is one of:
0. on no args provided: a program that reports the error and exits with status code 1.
- on failure to parse param args a program that reports the error and exits with status code 1.
- on failure to parse a command a program that reports the error and exits with status code 1.
2. on usage or help request a program that provides the requested output and exits with
status code 0.
3. on command the parsed command and params are provided to
onHostCommand
.
- def dispatchOnCommandParse(hostParams: Params, appParams: AppParams, commandName: String, isCommandUsage: Boolean, isCommandHelp: Boolean, maybeHostCommand: Either[caseapp.core.Error, HostCommand]): prelude.external.ZIO[BaseEnvironment, Nothing, Int]
-
val
empty: Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId, entry: Enable): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId, groupName: Option[GroupName], operators: Option[Set[Identity]]): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId, groupName: GroupName, operators: Set[Identity]): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId, operators: Set[Identity]): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId, groupName: GroupName): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableGroup(groupId: GroupId): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableService(groupId: GroupId, serviceId: ServiceId, logicalServiceId: LogicalServiceId): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableService(groupId: GroupId, serviceId: ServiceId, serviceFragment: ServiceFragment): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableService(logicalServiceId: LogicalServiceId, serviceFragment: ServiceFragment): Prelude
- Definition Classes
- PreludeBuilders
-
def
enableService(serviceFragment: ServiceFragment): Prelude
- Definition Classes
- PreludeBuilders
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
lazy val
impureLogger: prelude.external.Logger
- Attributes
- protected
- Definition Classes
- IOLogging
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
main(args: Array[String]): Unit
See run.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
printClusteredConfigThenExit: ServerTask[Int]
Print the clustered mode config then exit.
- def printCommandHelp(commandName: String): prelude.external.ZIO[BaseEnvironment, Nothing, Int]
- def printCommandUsage(commandName: String): prelude.external.ZIO[BaseEnvironment, Nothing, Int]
-
def
printConfigThenExit(config: Config): prelude.external.Task[Int]
Print the config then exit.
-
def
printFullClusteredConfigThenExit: ServerTask[Int]
Print the full clustered mode config then exit.
- def printFullConfigThenExit(config: Config): prelude.external.Task[Int]
- def printHelpThenExit: prelude.external.ZIO[BaseEnvironment, Nothing, Int]
- def printUsageThenExit: prelude.external.ZIO[BaseEnvironment, Nothing, Int]
-
def
printVersionThenExit: prelude.external.Task[Int]
Print glngn server and deployment version.
Print glngn server and deployment version.
- To do
Currently only displays "HEAD" for both.
- def resolveConfig(deploymentConfig: DeploymentConfig, hostParams: Params, appParams: AppParams): HostTask[Config]
-
def
resolveDeploymentConfig(name: DeploymentName, appParams: AppParams): HostTask[DeploymentConfig]
Given a name of the deployment and application specific parameters, resolve the configuration of this deployment.
Given a name of the deployment and application specific parameters, resolve the configuration of this deployment.
By default
- the application specific parameters are ignored
- standalone unless the environment is Kubernetes
- slow start if the environment is Kubernetes
-
def
resolveDeploymentConfig(appParams: AppParams): HostTask[DeploymentConfig]
Given the application parameters resolve the deployment configuration.
Given the application parameters resolve the deployment configuration.
Defaults to providing exactly the name deploymentName to
resolveDeploymentConfig
. Override, for example, to define the deployment name from AppParams. -
def
resolveImpureBindings(deploymentConfig: DeploymentConfig, appParams: AppParams): HostTask[ImpureBindings]
Given the application parameters resolve the effect bindings for this deployment.
Given the application parameters resolve the effect bindings for this deployment.
Default is:
Task { deploymentImpureBindings }
-
def
resolvePrelude(deploymentConfig: DeploymentConfig, appParams: AppParams): HostTask[Prelude]
Given the deployment and application parameters, resolve the prelude for this deployment.
Given the deployment and application parameters, resolve the prelude for this deployment.
This is, by default, HostApp$.standardPrelude plus deploymentPrelude.
-
def
run(args: List[String]): prelude.external.ZIO[BaseEnvironment, Nothing, Int]
Given application arguments as a list of strings (EG: executable args provided to main).
Given application arguments as a list of strings (EG: executable args provided to main). Provide a host that, when run, will complete once the hosted server node(s). The exit code will only be 0 if all server nodes stop in time without failing.
See also ExitCodes.
Default implementation:
dispatchOnArgs(args)
-
def
runUntilExit[R <: Logging](app: prelude.external.ZIO[R, Error, TermReason]): prelude.external.ZIO[R, Nothing, Int]
Does not complete until the server completes.
Does not complete until the server completes. Returns process exit code. An exit code of 0 indicates the server completed due to a normal event. An exit code of non-0 indicates an unrecoverable error occurred.
-
def
setGroupName(groupId: GroupId, groupName: GroupName): Prelude
- Definition Classes
- PreludeBuilders
- def standaloneHostCommand(deploymentConfig: DeploymentConfig, hostParams: Params, appParams: AppParams, hostCommand: HostCommand): HostUIO[Int]
- def standaloneRunUntilTerm(deploymentConfig: DeploymentConfig, appParams: AppParams, stateDir: prelude.external.Path, options: Run): Host[TermReason]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
object
logger
- Definition Classes
- IOLogging
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.