Documentation ¶
Index ¶
- Constants
- Variables
- func ReleaseMailboxMessage(m *MailboxMessage)
- type Acceptor
- type AcceptorInfo
- type AcceptorOptions
- type Alias
- type ApplicationBehavior
- type ApplicationDepends
- type ApplicationInfo
- type ApplicationMemberSpec
- type ApplicationMode
- type ApplicationOptions
- type ApplicationOptionsExtra
- type ApplicationRoute
- type ApplicationSpec
- type ApplicationState
- type Atom
- type CancelFunc
- type CertManager
- type Compression
- type CompressionLevel
- type CompressionType
- type Connection
- type Core
- type DefaultLoggerOptions
- type Env
- type Event
- type EventOptions
- type HandshakeOptions
- type HandshakeResult
- type Log
- type LogLevel
- type LogOptions
- type Logger
- type LoggerBehavior
- type LoggerInfo
- type MailboxMessage
- type MailboxMessageType
- type MailboxQueues
- type MessageDownAlias
- type MessageDownEvent
- type MessageDownNode
- type MessageDownPID
- type MessageDownProcessID
- type MessageDownProxy
- type MessageEvent
- type MessageEventStart
- type MessageEventStop
- type MessageExitAlias
- type MessageExitEvent
- type MessageExitNode
- type MessageExitPID
- type MessageExitProcessID
- type MessageFallback
- type MessageLog
- type MessageLogMeta
- type MessageLogNetwork
- type MessageLogNode
- type MessageLogProcess
- type MessageOptions
- type MessagePriority
- type MetaBehavior
- type MetaInfo
- type MetaOptions
- type MetaProcess
- type MetaState
- type Network
- type NetworkApplicationStartInfo
- type NetworkDial
- type NetworkFlags
- type NetworkHandshake
- type NetworkInfo
- type NetworkMode
- type NetworkOptions
- type NetworkProto
- type NetworkProxyFlags
- type NetworkProxyRoute
- type NetworkRoute
- type NetworkSpawnInfo
- type Node
- type NodeHandshake
- type NodeInfo
- type NodeOptions
- type NodeRegistrar
- type PID
- type Process
- type ProcessBehavior
- type ProcessFactory
- type ProcessFallback
- type ProcessID
- type ProcessInfo
- type ProcessMailbox
- type ProcessOptions
- type ProcessOptionsExtra
- type ProcessShortInfo
- type ProcessState
- type ProxyAcceptOptions
- type ProxyRoute
- type ProxyRouteInfo
- type ProxyTransitOptions
- type Ref
- type RegisterRoutes
- type Registrar
- type RegistrarConfig
- type RegistrarInfo
- type RemoteNode
- type RemoteNodeInfo
- type Resolver
- type Route
- type RouteInfo
- type SecurityOptions
- type StaticRoutes
- type Version
Constants ¶
const ( ApplicationModeTemporary ApplicationMode = 1 ApplicationModeTransient ApplicationMode = 2 ApplicationModePermanent ApplicationMode = 3 ApplicationStateLoaded ApplicationState = 1 ApplicationStateRunning ApplicationState = 2 ApplicationStateStopping ApplicationState = 3 )
const ( CompressionDefault CompressionLevel = 0 CompressionBestSpeed CompressionLevel = 1 CompressionBestSize CompressionLevel = 2 CompressionTypeGZIP CompressionType = "gzip" CompressionTypeLZW CompressionType = "lzw" CompressionTypeZLIB CompressionType = "zlib" )
Variables ¶
var ( DefaultRequestTimeout = 5 DefaultCompressionType CompressionType = CompressionTypeGZIP DefaultCompressionLevel CompressionLevel = CompressionDefault DefaultCompressionThreshold int = 1024 DefaultLogFilter = []LogLevel{ LogLevelTrace, LogLevelDebug, LogLevelInfo, LogLevelWarning, LogLevelError, LogLevelPanic, } DefaultKeepAlivePeriod time.Duration = 15 * time.Second DefaultTCPBufferSize int = 65535 DefaultPort uint16 = 11144 DefaultNetworkFlags = NetworkFlags{ Enable: true, EnableRemoteSpawn: true, EnableRemoteApplicationStart: true, EnableFragmentation: false, EnableProxyTransit: false, EnableProxyAccept: true, EnableImportantDelivery: true, } DefaultNetworkProxyFlags = NetworkProxyFlags{ Enable: true, EnableRemoteSpawn: false, EnableRemoteApplicationStart: false, EnableEncryption: false, EnableImportantDelivery: true, } DefaultLogLevels = []LogLevel{ LogLevelSystem, LogLevelTrace, LogLevelDebug, LogLevelInfo, LogLevelWarning, LogLevelError, LogLevelPanic, } )
var ( ErrNameUnknown = errors.New("unknown name") ErrParentUnknown = errors.New("parent/leader is not set") ErrNodeTerminated = errors.New("node terminated") ErrProcessMailboxFull = errors.New("process mailbox is full") ErrProcessUnknown = errors.New("unknown process") ErrProcessIncarnation = errors.New("process ID belongs to the previous incarnation") ErrProcessTerminated = errors.New("process terminated") ErrMetaUnknown = errors.New("unknown meta process") ErrMetaMailboxFull = errors.New("meta process mailbox is full") ErrApplicationUnknown = errors.New("unknown application") ErrApplicationDepends = errors.New("dependency fail") ErrApplicationState = errors.New("application is in running/stopping state") ErrApplicationLoadPanic = errors.New("panic in application loading") ErrApplicationEmpty = errors.New("application has no items") ErrApplicationName = errors.New("application has no name") ErrApplicationStopping = errors.New("application stopping is in progress") ErrApplicationRunning = errors.New("application is still running") ErrTargetUnknown = errors.New("unknown target") ErrTargetExist = errors.New("target is already exist") ErrRegistrarTerminated = errors.New("registrar client terminated") ErrAliasUnknown = errors.New("unknown alias") ErrAliasOwner = errors.New("not an owner") ErrEventUnknown = errors.New("unknown event") ErrEventOwner = errors.New("not an owner") ErrTaken = errors.New("resource is taken") ErrAtomTooLong = errors.New("too long Atom (max: 255)") ErrTimeout = errors.New("timed out") ErrUnsupported = errors.New("not supported") ErrUnknown = errors.New("unknown") ErrNotAllowed = errors.New("not allowed") ErrIncorrect = errors.New("incorrect value or argument") ErrMalformed = errors.New("malformed value") ErrResponseIgnored = errors.New("response ignored") ErrUnregistered = errors.New("unregistered") ErrTooLarge = errors.New("too large") ErrNetworkStopped = errors.New("network stack is stopped") ErrNoConnection = errors.New("no connection") ErrNoRoute = errors.New("no route") ErrInternal = errors.New("internal error") )
Functions ¶
func ReleaseMailboxMessage ¶
func ReleaseMailboxMessage(m *MailboxMessage)
Types ¶
type Acceptor ¶
type Acceptor interface { Cookie() string SetCookie(cokie string) NetworkFlags() NetworkFlags SetNetworkFlags(flags NetworkFlags) MaxMessageSize() int SetMaxMessageSize(size int) Info() AcceptorInfo }
type AcceptorInfo ¶
type AcceptorOptions ¶
type AcceptorOptions struct { // Cookie cookie for the incoming connection to this acceptor. Leave it empty in // case of using the node's cookie. Cookie string // Hostname defines an interface for the listener. Default: takes from the node name. Host string // Port defines a listening port number for accepting incoming connections. Default 15000 Port uint16 // PortRange a range of the ports for the attempts to start listening: // Starting from: <Port> // Ending at: <Port> + <PortRange> PortRange uint16 // TCP defines the TCP network. By default will be used IPv4 only. // For IPv6 use "tcp6". To listen on any available address use "tcp" TCP string // BufferSize defines buffer size for the TCP connection BufferSize int // MaxMessageSize set max message size. overrides gen.NetworkOptions.MaxMessageSize MaxMessageSize int Flags NetworkFlags AtomMapping map[Atom]Atom CertManager CertManager InsecureSkipVerify bool Registrar Registrar Handshake NetworkHandshake Proto NetworkProto }
type ApplicationBehavior ¶
type ApplicationBehavior interface { // Load invoked on loading application using method ApplicationLoad of gen.Node interface. Load(node Node, args ...any) (ApplicationSpec, error) // Start invoked once the application started Start(mode ApplicationMode) // Terminate invoked once the application stopped Terminate(reason error) }
type ApplicationDepends ¶
type ApplicationInfo ¶
type ApplicationInfo struct { Name Atom Weight int Description string Version Version Env map[Env]any Depends ApplicationDepends Mode ApplicationMode State ApplicationState Parent Atom Uptime int64 Group []PID }
type ApplicationMemberSpec ¶
type ApplicationMemberSpec struct { Factory ProcessFactory Options ProcessOptions Name Atom Args []any }
ApplicationMemberSpec
type ApplicationMode ¶
type ApplicationMode int
func (ApplicationMode) MarshalJSON ¶
func (am ApplicationMode) MarshalJSON() ([]byte, error)
func (ApplicationMode) String ¶
func (am ApplicationMode) String() string
type ApplicationOptions ¶
type ApplicationOptionsExtra ¶
type ApplicationOptionsExtra struct { ApplicationOptions CorePID PID CoreEnv map[Env]any CoreLogLevel LogLevel }
type ApplicationRoute ¶
type ApplicationRoute struct { Node Atom Name Atom Weight int Mode ApplicationMode State ApplicationState }
type ApplicationSpec ¶
type ApplicationSpec struct { Name Atom Description string Version Version Depends ApplicationDepends Env map[Env]any Group []ApplicationMemberSpec Mode ApplicationMode Weight int LogLevel LogLevel }
ApplicationSpec
type ApplicationState ¶
type ApplicationState int32
func (ApplicationState) MarshalJSON ¶
func (as ApplicationState) MarshalJSON() ([]byte, error)
func (ApplicationState) String ¶
func (as ApplicationState) String() string
type Atom ¶
type Atom string
Atom is a special kind of string used for process names and node names. The max allowed length is 255 bytes. Exceed this limit causes disability to send it over the network. Keep this in mind.
const (
CoreEvent Atom = "core"
)
type CancelFunc ¶
type CancelFunc func() bool
type CertManager ¶
type CertManager interface { Update(cert tls.Certificate) GetCertificateFunc() func(*tls.ClientHelloInfo) (*tls.Certificate, error) GetCertificate() tls.Certificate }
func CreateCertManager ¶
func CreateCertManager(cert tls.Certificate) CertManager
type Compression ¶
type Compression struct { // Enable enables compression for all outgoing messages having size // greater than the defined threshold. Enable bool // Type defines type of compression. Use gen.CompressionTypeZLIB or gen.CompressionTypeLZW. By default is using gen.CompressionTypeGZIP Type CompressionType // Level defines compression level. Use gen.CompressionBestSize or gen.CompressionBestSpeed. By default is using gen.CompressionDefault Level CompressionLevel // Threshold defines the minimal message size for the compression. // Messages less of this threshold will not be compressed. Threshold int }
type CompressionLevel ¶
type CompressionLevel int
func (CompressionLevel) MarshalJSON ¶
func (cl CompressionLevel) MarshalJSON() ([]byte, error)
func (CompressionLevel) String ¶
func (cl CompressionLevel) String() string
type CompressionType ¶
type CompressionType string
func (CompressionType) ID ¶
func (ct CompressionType) ID() uint8
type Connection ¶
type Connection interface { Node() RemoteNode // Methods for sending async message to the remote process SendPID(from PID, to PID, options MessageOptions, message any) error SendProcessID(from PID, to ProcessID, options MessageOptions, message any) error SendAlias(from PID, to Alias, options MessageOptions, message any) error SendEvent(from PID, options MessageOptions, message MessageEvent) error SendExit(from PID, to PID, reason error) error SendResponse(from PID, to PID, options MessageOptions, response any) error SendResponseError(from PID, to PID, options MessageOptions, err error) error // target terminated SendTerminatePID(target PID, reason error) error SendTerminateProcessID(target ProcessID, reason error) error SendTerminateAlias(target Alias, reason error) error SendTerminateEvent(target Event, reason error) error // Methods for sending sync request to the remote process CallPID(from PID, to PID, options MessageOptions, message any) error CallProcessID(from PID, to ProcessID, options MessageOptions, message any) error CallAlias(from PID, to Alias, options MessageOptions, message any) error // Links LinkPID(pid PID, target PID) error UnlinkPID(pid PID, target PID) error LinkProcessID(pid PID, target ProcessID) error UnlinkProcessID(pid PID, target ProcessID) error LinkAlias(pid PID, target Alias) error UnlinkAlias(pid PID, target Alias) error LinkEvent(pid PID, target Event) ([]MessageEvent, error) UnlinkEvent(pid PID, targer Event) error // Monitors MonitorPID(pid PID, target PID) error DemonitorPID(pid PID, target PID) error MonitorProcessID(pid PID, target ProcessID) error DemonitorProcessID(pid PID, target ProcessID) error MonitorAlias(pid PID, target Alias) error DemonitorAlias(pid PID, target Alias) error MonitorEvent(pid PID, target Event) ([]MessageEvent, error) DemonitorEvent(pid PID, targer Event) error RemoteSpawn(name Atom, options ProcessOptionsExtra) (PID, error) Join(c net.Conn, id string, dial NetworkDial, tail []byte) error Terminate(reason error) }
type Core ¶
type Core interface { // sending message RouteSendPID(from PID, to PID, options MessageOptions, message any) error RouteSendProcessID(from PID, to ProcessID, options MessageOptions, message any) error RouteSendAlias(from PID, to Alias, options MessageOptions, message any) error RouteSendEvent(from PID, token Ref, options MessageOptions, message MessageEvent) error RouteSendExit(from PID, to PID, reason error) error RouteSendResponse(from PID, to PID, options MessageOptions, message any) error RouteSendResponseError(from PID, to PID, options MessageOptions, err error) error // call requests RouteCallPID(from PID, to PID, options MessageOptions, message any) error RouteCallProcessID(from PID, to ProcessID, options MessageOptions, message any) error RouteCallAlias(from PID, to Alias, options MessageOptions, message any) error // linking requests RouteLinkPID(pid PID, target PID) error RouteUnlinkPID(pid PID, target PID) error RouteLinkProcessID(pid PID, target ProcessID) error RouteUnlinkProcessID(pid PID, target ProcessID) error RouteLinkAlias(pid PID, target Alias) error RouteUnlinkAlias(pid PID, target Alias) error RouteLinkEvent(pid PID, target Event) ([]MessageEvent, error) RouteUnlinkEvent(pid PID, target Event) error // monitoring requests RouteMonitorPID(pid PID, target PID) error RouteDemonitorPID(pid PID, target PID) error RouteMonitorProcessID(pid PID, target ProcessID) error RouteDemonitorProcessID(pid PID, target ProcessID) error RouteMonitorAlias(pid PID, target Alias) error RouteDemonitorAlias(pid PID, target Alias) error RouteMonitorEvent(pid PID, target Event) ([]MessageEvent, error) RouteDemonitorEvent(pid PID, target Event) error // target termination RouteTerminatePID(target PID, reason error) error RouteTerminateProcessID(target ProcessID, reason error) error RouteTerminateEvent(target Event, reason error) error RouteTerminateAlias(terget Alias, reason error) error RouteSpawn(node Atom, name Atom, options ProcessOptionsExtra, source Atom) (PID, error) RouteApplicationStart(name Atom, mode ApplicationMode, options ApplicationOptionsExtra, source Atom) error RouteNodeDown(node Atom, reason error) MakeRef() Ref Name() Atom Creation() int64 PID() PID LogLevel() LogLevel Security() SecurityOptions EnvList() map[Env]any }
type DefaultLoggerOptions ¶
type DefaultLoggerOptions struct { // Disable makes node to disable default logger Disable bool // TimeFormat enables output time in the defined format. See https://pkg.go.dev/time#pkg-constants // Not defined format makes output time as a timestamp in nanoseconds. TimeFormat string // IncludeBehavior includes process/meta behavior to the log message IncludeBehavior bool // IncludeName includes registered process name to the log message IncludeName bool // Filter enables filtering log messages. Filter []LogLevel // Output defines output for the log messages. By default, it uses os.Stdout Output io.Writer }
DefaultLoggerOptions
type EventOptions ¶
type HandshakeOptions ¶
type HandshakeOptions struct { Cookie string Flags NetworkFlags CertManager CertManager MaxMessageSize int }
type HandshakeResult ¶
type HandshakeResult struct { HandshakeVersion Version ConnectionID string Peer Atom PeerCreation int64 PeerVersion Version // peer's version (gen.Node.Version()) PeerFlags NetworkFlags // peer's flags PeerMaxMessageSize int NodeFlags NetworkFlags NodeMaxMessageSize int AtomMapping map[Atom]Atom // Tail if something is left in the buffer after the handshaking we should // pass it to the proto handler Tail []byte // Custom allows passing the custom data to the proto handler Custom any }
type Log ¶
type Log interface { Level() LogLevel SetLevel(level LogLevel) error Logger() string SetLogger(name string) Trace(format string, args ...any) Debug(format string, args ...any) Info(format string, args ...any) Warning(format string, args ...any) Error(format string, args ...any) Panic(format string, args ...any) }
type LogLevel ¶
type LogLevel int
LogLevel
const ( LogLevelSystem LogLevel = -100 LogLevelTrace LogLevel = -2 LogLevelDebug LogLevel = -1 LogLevelDefault LogLevel = 0 // inherite from node/app/parent process LogLevelInfo LogLevel = 1 LogLevelWarning LogLevel = 2 LogLevelError LogLevel = 3 LogLevelPanic LogLevel = 4 LogLevelDisabled LogLevel = 5 )
func (LogLevel) MarshalJSON ¶
type LogOptions ¶
type LogOptions struct { // Level default logging level for node Level LogLevel // DefaultLogger options DefaultLogger DefaultLoggerOptions // Loggers add extra loggers on start Loggers []Logger }
LogOptions
type Logger ¶
type Logger struct { Name string Logger LoggerBehavior Filter []LogLevel }
type LoggerBehavior ¶
type LoggerBehavior interface { Log(message MessageLog) Terminate() }
func CreateDefaultLogger ¶
func CreateDefaultLogger(options DefaultLoggerOptions) LoggerBehavior
type LoggerInfo ¶
type MailboxMessage ¶
type MailboxMessage struct { From PID Ref Ref Type MailboxMessageType Target any Message any }
func TakeMailboxMessage ¶
func TakeMailboxMessage() *MailboxMessage
type MailboxMessageType ¶
type MailboxMessageType int
const ( MailboxMessageTypeRegular MailboxMessageType = 0 MailboxMessageTypeRequest MailboxMessageType = 1 MailboxMessageTypeEvent MailboxMessageType = 2 MailboxMessageTypeExit MailboxMessageType = 3 MailboxMessageTypeInspect MailboxMessageType = 4 // for the observer's purposes )
type MessageDownProcessID ¶
MessageDownProcessID
type MessageDownProxy ¶
MessageDownProxy
type MessageEvent ¶
MessageEvent
type MessageExitProcessID ¶
MessageExitProcessID
type MessageFallback ¶
MessageFallback
type MessageLog ¶
type MessageLog struct { Time time.Time Level LogLevel Source any // MessageLogProcess, MessageLogNode, MessageLogNetwork, MessageLogMeta Format string Args []any }
MessageLog
type MessageLogMeta ¶
MessageLogMeta
type MessageLogNetwork ¶
type MessageLogProcess ¶
MessageLogProcess
type MessageOptions ¶
type MessageOptions struct { Ref Ref Priority MessagePriority Compression Compression KeepNetworkOrder bool ImportantDelivery bool }
type MessagePriority ¶
type MessagePriority int
const MessagePriorityHigh MessagePriority = 1
const MessagePriorityMax MessagePriority = 2
const MessagePriorityNormal MessagePriority = 0 // default
func (MessagePriority) MarshalJSON ¶
func (mp MessagePriority) MarshalJSON() ([]byte, error)
func (MessagePriority) String ¶
func (mp MessagePriority) String() string
type MetaBehavior ¶
type MetaInfo ¶
type MetaInfo struct { ID Alias Parent PID Application Atom Behavior string MailboxSize int64 MailboxQueues MailboxQueues MessagePriority MessagePriority MessagesIn uint64 MessagesOut uint64 LogLevel LogLevel Uptime int64 State MetaState }
MetaInfo
type MetaOptions ¶
type MetaOptions struct { MailboxSize int64 SendPriority MessagePriority LogLevel LogLevel }
type MetaProcess ¶
type MetaProcess interface { ID() Alias Parent() PID Send(to any, message any) error SendImportant(to any, message any) error SendWithPriority(to any, message any, priority MessagePriority) error Spawn(behavior MetaBehavior, options MetaOptions) (Alias, error) Env(name Env) (any, bool) EnvList() map[Env]any Log() Log }
type Network ¶
type Network interface { Registrar() (Registrar, error) Cookie() string SetCookie(cookie string) error MaxMessageSize() int SetMaxMessageSize(size int) NetworkFlags() NetworkFlags SetNetworkFlags(flags NetworkFlags) Acceptors() ([]Acceptor, error) // Node returns existing connection with the given node Node(name Atom) (RemoteNode, error) // GetNode attempts to connect to the given node if the connection doesn't exist. // Otherwise, it returns the existing connection. GetNode(name Atom) (RemoteNode, error) // GetNodeWithRoute attempts to connect to the given node using provided route GetNodeWithRoute(name Atom, route NetworkRoute) (RemoteNode, error) // Nodes return list of connected nodes Nodes() []Atom // AddRoute add static route AddRoute(match string, route NetworkRoute, weight int) error RemoveRoute(match string) error Route(name Atom) ([]NetworkRoute, error) AddProxyRoute(match string, proxy NetworkProxyRoute, weight int) error RemoveProxyRoute(match string) error ProxyRoute(name Atom) ([]NetworkProxyRoute, error) RegisterProto(proto NetworkProto) RegisterHandshake(handshake NetworkHandshake) // EnableSpawn allows the starting of the given process by the remote node(s) // Leaving argument "nodes" empty makes spawning this process by any remote node EnableSpawn(name Atom, factory ProcessFactory, nodes ...Atom) error DisableSpawn(name Atom, nodes ...Atom) error // EnableApplicationStart allows the starting of the given application by the remote node(s). // Leaving argument "nodes" empty makes starting this application by any remote node. EnableApplicationStart(name Atom, nodes ...Atom) error DisableApplicationStart(name Atom, nodes ...Atom) error Info() (NetworkInfo, error) Mode() NetworkMode }
type NetworkFlags ¶
type NetworkFlags struct { // Enable enable flags customization. Enable bool // EnableRemoteSpawn accepts remote spawn request EnableRemoteSpawn bool // EnableRemoteApplicationStart accepts remote request to start application EnableRemoteApplicationStart bool // EnableFragmentation enables support fragmentation messages EnableFragmentation bool // EnableProxyTransit enables support for transit proxy connection EnableProxyTransit bool // EnableProxyAccept enables support for incoming proxy connection EnableProxyAccept bool // EnableImportantDelivery enables support 'important' flag EnableImportantDelivery bool }
NetworkFlags
func (NetworkFlags) MarshalSDF ¶
func (nf NetworkFlags) MarshalSDF(w io.Writer) error
we must be able to extend this structure by introducing new features. it is using in the handshake process. to keep capability use the custom marshaling for this type.
func (*NetworkFlags) UnmarshalSDF ¶
func (nf *NetworkFlags) UnmarshalSDF(buf []byte) error
type NetworkHandshake ¶
type NetworkHandshake interface { NetworkFlags() NetworkFlags // Start initiates handshake process. // Cert value has CertManager that was used to create this connection Start(NodeHandshake, net.Conn, HandshakeOptions) (HandshakeResult, error) // Join is invoking within the NetworkDial to shortcut the handshake process Join(NodeHandshake, net.Conn, string, HandshakeOptions) ([]byte, error) // Accept accepts handshake process initiated by another side of this connection. Accept(NodeHandshake, net.Conn, HandshakeOptions) (HandshakeResult, error) // Version Version() Version }
Handshake defines handshake interface
type NetworkInfo ¶
type NetworkInfo struct { Mode NetworkMode Registrar RegistrarInfo Acceptors []AcceptorInfo MaxMessageSize int HandshakeVersion Version ProtoVersion Version Nodes []Atom Routes []RouteInfo ProxyRoutes []ProxyRouteInfo Flags NetworkFlags EnabledSpawn []NetworkSpawnInfo EnabledApplicationStart []NetworkApplicationStartInfo }
type NetworkMode ¶
type NetworkMode int
const ( // NetworkModeEnabled default network mode for the node. It makes node to // register on the registrar services providing the port number for the // incomming connections NetworkModeEnabled NetworkMode = 0 // NerworkModeHidden makes node to start network with disabled acceptor(s) for the incomming connections. NetworkModeHidden NetworkMode = 1 // NetworkModeDisabled disables networking for the node entirely. NetworkModeDisabled NetworkMode = -1 )
func (NetworkMode) MarshalJSON ¶
func (nm NetworkMode) MarshalJSON() ([]byte, error)
func (NetworkMode) String ¶
func (nm NetworkMode) String() string
type NetworkOptions ¶
type NetworkOptions struct { Mode NetworkMode // Cookie Cookie string // Flags Flags NetworkFlags // Registrar default registrar for outgoing connections Registrar Registrar // Handshake set default handshake Handshake NetworkHandshake // Proto set default proto Proto NetworkProto // Acceptors node can have multiple acceptors at once Acceptors []AcceptorOptions // InsecureSkipVerify skips the certificate verification InsecureSkipVerify bool // MaxMessageSize limit the message size for the incoming messages. MaxMessageSize int // ProxyAccept options for incomming proxy connections ProxyAccept ProxyAcceptOptions // ProxyTransit options for the proxy connections through this node ProxyTransit ProxyTransitOptions }
NetworkOptions
type NetworkProto ¶
type NetworkProto interface { // NewConnection NewConnection(core Core, result HandshakeResult, log Log) (Connection, error) // Serve connection. Argument dial is the closure to create TCP connection with invoking // NetworkHandshake.Join inside to shortcut the handshake process Serve(conn Connection, dial NetworkDial) error // Version Version() Version }
type NetworkProxyFlags ¶
type NetworkProxyFlags struct { Enable bool EnableRemoteSpawn bool EnableRemoteApplicationStart bool EnableEncryption bool EnableImportantDelivery bool }
NetworkProxyFlags
func (NetworkProxyFlags) MarshalSDF ¶
func (npf NetworkProxyFlags) MarshalSDF(w io.Writer) error
func (*NetworkProxyFlags) UnmarshalSDF ¶
func (npf *NetworkProxyFlags) UnmarshalSDF(buf []byte) error
type NetworkProxyRoute ¶
type NetworkProxyRoute struct { Resolver Resolver Route ProxyRoute Cookie string Flags NetworkProxyFlags MaxHop int // DefaultProxyMaxHop == 8 }
type NetworkRoute ¶
type NetworkRoute struct { Resolver Resolver Route Route Cookie string Cert CertManager InsecureSkipVerify bool Flags NetworkFlags AtomMapping map[Atom]Atom LogLevel LogLevel }
type NetworkSpawnInfo ¶
type Node ¶
type Node interface { // Name returns node name Name() Atom // IsAlive returns true if node is still alive IsAlive() bool // Uptime returns node uptime in seconds. Returns 0 if node is stopped. Uptime() int64 // Version returns node version Version() Version // FrameworkVersion returns framework version FrameworkVersion() Version // Info returns summary information about this node Info() (NodeInfo, error) // EnvList returns a map of configured Node environment variables. EnvList() map[Env]any // SetEnv set node environment variable with given name. Use nil value to remove variable with given name. SetEnv(name Env, value any) // Env returns value associated with given environment name. Env(name Env) (any, bool) // Spawn spawns a new process Spawn(factory ProcessFactory, options ProcessOptions, args ...any) (PID, error) // SpawnRegister spawns a new process and register associated name with it SpawnRegister(register Atom, factory ProcessFactory, options ProcessOptions, args ...any) (PID, error) // RegisterName register associates the name with the given PID so you can address messages // to this process using gen.ProcessID{<name>, <nodename>}. Returns error if this process // is already has registered name. RegisterName(name Atom, pid PID) error // UnregisterName unregister associated name. Returns PID that this name belonged to. UnregisterName(name Atom) (PID, error) // MetaInfo returns summary information about given meta process MetaInfo(meta Alias) (MetaInfo, error) // ProcessInfo returns short summary information about given process ProcessInfo(pid PID) (ProcessInfo, error) // ProcessList returns the list of the processes ProcessList() ([]PID, error) // ProcessListShortInfo returns the list of the processes with short information // for the given range of process identifiers (gen.PID.ID) ProcessListShortInfo(start, limit int) ([]ProcessShortInfo, error) // ProcessState returns state of the given process: // - ProcessStateSleep (process has no messages) // - ProcessStateRunning (process is handling its mailbox) // - ProcessStateTerminated (final state of the process lifespan before it will be removed // from the node) // - ProcessStateZombee (process was killed by node being in the running state). ProcessState(pid PID) (ProcessState, error) // ApplicationLoad loads application to the node. To start it use ApplicationStart method. // Returns the name of loaded application. Returns error gen.ErrTaken if application name // is already registered in the node. ApplicationLoad(app ApplicationBehavior, args ...any) (Atom, error) // ApplcationInfo returns the short information about the given application. // Returns error gen.ErrApplicationUnknown if it does not exist in the node ApplicationInfo(name Atom) (ApplicationInfo, error) // ApplicationUnload unloads application from the node. Returns gen.ErrApplicationRunning // if given application is already started (must be stopped before the unloading). // Or returns error gen.ErrApplicationUnknown if it does not exist in the node. ApplicationUnload(name Atom) error // ApplicationStart starts application with its children processes. Starting mode is according // to the defined in the gen.ApplicationSpec.Mode ApplicationStart(name Atom, options ApplicationOptions) error // ApplicationStartTemporary starts application in temporary mode overriding the value // of gen.ApplicationSpec.Mode ApplicationStartTemporary(name Atom, options ApplicationOptions) error // ApplicationStartTransient starts application in transient mode overriding the value // of gen.ApplicationSpec.Mode ApplicationStartTransient(name Atom, options ApplicationOptions) error // ApplicationStartPermanent starts application in permanent mode overriding the value // of gen.ApplicationSpec.Mode ApplicationStartPermanent(name Atom, options ApplicationOptions) error // ApplicationStop stops the given applications, awaiting all children to be stopped. // The default waiting time is 5 seconds. Returns error gen.ErrApplicationStopping // if application is still stopping. Once the application is stopped it can be unloaded // from the node using ApplicationUnload. ApplicationStop(name Atom) error // ApplicationStopForce force to kill all children, no awaiting the termination of children processes. ApplicationStopForce(name Atom) error // ApplicationStopWithTimeout stops the given applications, awaiting all children to be stopped // during the given period of time. Returns gen.ErrApplicationStopping on timeout. ApplicationStopWithTimeout(name Atom, timeout time.Duration) error // Applications return list of all applications (loaded and started). Applications() []Atom // ApplicationsRunning return list of all running applications ApplicationsRunning() []Atom NetworkStart(options NetworkOptions) error NetworkStop() error Network() Network CertManager() CertManager Security() SecurityOptions Stop() StopForce() // Wait waits node termination Wait() // WaitWithTimeout waits node termination with the given period of time WaitWithTimeout(timeout time.Duration) error // Kill terminates the given process. Can be used for the local process only. Kill(pid PID) error // Send sends a message to the given process. Send(to any, message any) error // SendEvent sends event message to the subscribers (to the processes that made link/monitor // on this event). Event must be registered with RegisterEvent method. SendEvent(name Atom, token Ref, options MessageOptions, message any) error // RegisterEvent registers a new event. Returns a reference as the token // for sending events. Unregistering this event is allowed to the node only. // Sending an event can be done using SendEvent method with the provided token. RegisterEvent(name Atom, options EventOptions) (Ref, error) // UnregisterEvent unregisters an event. Can be used for the registered // events by the node. UnregisterEvent(name Atom) error // SendExit sends graceful termination request to the process. SendExit(pid PID, reason error) error // Log returns gen.Log interface Log() Log // LogLevelProcess returns logging level for the given process LogLevelProcess(pid PID) (LogLevel, error) // SetLogLevelProcess allows set logging level for the given process SetLogLevelProcess(pid PID, level LogLevel) error // LogLevelMeta returns logging level for the given meta process LogLevelMeta(meta Alias) (LogLevel, error) // SetLogLevelMeta allows set logging level for the given meta process SetLogLevelMeta(meta Alias, level LogLevel) error // Loggers returns list of loggers Loggers() []string // LoggerAdd makes process to receive log messages gen.MessageLogNode, gen.MessageLogProcess LoggerAddPID(pid PID, name string, filter ...LogLevel) error // LoggerAdd allows to add a custom logger LoggerAdd(name string, logger LoggerBehavior, filter ...LogLevel) error // LoggerDelete removes process from the loggers list LoggerDeletePID(pid PID) // LoggerDeleteCustom removes custom logger from the logger list LoggerDelete(name string) // LoggerLevels returns list of log levels for the given logger LoggerLevels(name string) []LogLevel // MakeRef creates an unique reference within this node MakeRef() Ref // Commercial returns list of component versions with a commercial license (gen.LicenseBSL1) Commercial() []Version // PID returns virtual PID of the core. This PID is using as a source // for the messages sent by node using methods Send, SendExit or SendEvent // and as a parent PID for the spawned process by the node PID() PID Creation() int64 // SetCTRLC allows you to catch Ctrl+C to enable/disable debug level for the node // Twice Ctrl+C - to stop node gracefully SetCTRLC(enable bool) }
type NodeHandshake ¶
NodeHandshake bridge interface from Node to the Handshake
type NodeInfo ¶
type NodeInfo struct { Name Atom Uptime int64 Version Version Framework Version Commercial []Version Env map[Env]any // gen.NodeOptions.Security.ExposeEnvInfo must be enabled to reveal this data LogLevel LogLevel Loggers []LoggerInfo ProcessesTotal int64 ProcessesRunning int64 ProcessesZombee int64 RegisteredAliases int64 RegisteredNames int64 RegisteredEvents int64 ApplicationsTotal int64 ApplicationsRunning int64 MemoryUsed uint64 MemoryAlloc uint64 UserTime int64 SystemTime int64 }
type NodeOptions ¶
type NodeOptions struct { // Applications application list that must be started Applications []ApplicationBehavior // Env node environment Env map[Env]any // Network Network NetworkOptions // CertManager CertManager CertManager // Security options Security SecurityOptions // Log options for the defaulf logger Log LogOptions // Version sets the version details for your node Version Version }
NodeOptions defines bootstrapping options for the node
type NodeRegistrar ¶
type NodeRegistrar interface { Name() Atom RegisterEvent(name Atom, options EventOptions) (Ref, error) UnregisterEvent(name Atom) error SendEvent(name Atom, token Ref, options MessageOptions, message any) error Log() Log }
NodeRegistrar bridge interface from Node to the Registrar
type Process ¶
type Process interface { // Node returns Node interface Node() Node // Name returns registered name associated with this process Name() Atom // PID returns identificator belonging to the process PID() PID // Leader returns group leader process. Usually it points to the application (or supervisor) process. Otherwise, it has the same value as parent. Leader() PID // Parent returns parent process. Parent() PID // Uptime returns process uptime in seconds Uptime() int64 // Spawn creates a child process. Terminating the parent process // doesn't cause terminating this process. Spawn(factory ProcessFactory, options ProcessOptions, args ...any) (PID, error) // SpawnRegister creates a child process with associated name. SpawnRegister(register Atom, factory ProcessFactory, options ProcessOptions, args ...any) (PID, error) // SpawnMeta creates a meta process. Returned alias is associated with this process and other // processes can send messages (using Send method) or make the requests (with Call method) // to this meta process. SpawnMeta(behavior MetaBehavior, options MetaOptions) (Alias, error) // RemoteSpawn makes request to the remote node to spawn a new process. See also ProvideSpawn method. RemoteSpawn(node Atom, name Atom, options ProcessOptions, args ...any) (PID, error) // RemoteSpawnRegister makes request to the remote node to spawn a new process and register it there // with the given rigistered name. RemoteSpawnRegister(node Atom, name Atom, register Atom, options ProcessOptions, args ...any) (PID, error) // State returns current process state. Usually, it returns gen.ProcessStateRunning. // But, If node has killed this process during the handling of its mailbox, // it returns gen.ProcessStateZombee, which means this process won't receive any new messages, // and most of the gen.Process methods won't be working returning gen.ErrNotAllowed. State() ProcessState // RegisterName register associates the name with PID so you can address messages to this // process using gen.ProcessID{<name>, <nodename>}. Returns error if this process is already // has registered name. RegisterName(name Atom) error // UnregisterName unregister associated name. UnregisterName() error // EnvList returns a map of configured environment variables. // It also includes environment variables from the GroupLeader, Parent and Node. // which are overlapped by priority: Process(Parent(GroupLeader(Node))) EnvList() map[Env]any // SetEnv set environment variable with given name. Use nil value to remove variable with given name. SetEnv(name Env, value any) // Env returns value associated with given environment name. Env(name Env) (any, bool) // Compression returns true if compression is enabled for this process. Compression() bool // SetCompression enables/disables compression for the messages sent over the network SetCompression(enabled bool) error // CompressionType returns type of compression CompressionType() CompressionType // SetCompressionType defines the compression type. Use gen.CompressionTypeZLIB or gen.CompressionTypeLZW. Be default is using gen.CompressionTypeGZIP SetCompressionType(ctype CompressionType) error // CompressionLevel returns comression level for the process CompressionLevel() CompressionLevel // SetCompressionLevel defines compression level. Use gen.CompressionBestSize or gen.CompressionBestSpeed. By default is using gen.CompressionDefault SetCompressionLevel(level CompressionLevel) error // CompressionThreshold returns compression threshold for the process CompressionThreshold() int // SetCompressionThreshold defines the minimal size for the message that must be compressed // Value must be greater than DefaultCompressionThreshold (1024) SetCompressionThreshold(threshold int) error // SendPriority returns priority for the sending messages SendPriority() MessagePriority // SetSendPriority defines priority for the sending messages SetSendPriority(priority MessagePriority) error // SetKeepNetworkOrder enables/disables to keep delivery order over the network. In some cases disabling this options allows improve network performance. SetKeepNetworkOrder(order bool) error // KeepNetworkOrder returns true if it was enabled, otherwise - false. Enabled by default. KeepNetworkOrder() bool // SetImportantDelivery enables/disables important flag for sending messages. This flag makes remote node to send confirmation that message was delivered into the process mailbox SetImportantDelivery(important bool) error // ImportantDelivery returns true if flag ImportantDelivery was set for this process ImportantDelivery() bool // CreateAlias creates a new alias associated with this process CreateAlias() (Alias, error) // DeleteAlias deletes the given alias DeleteAlias(alias Alias) error // Aliases lists of aliases associated with this process Aliases() []Alias // Events lists of registered events by this process Events() []Atom // Send sends a message Send(to any, message any) error SendPID(to PID, message any) error SendProcessID(to ProcessID, message any) error SendAlias(to Alias, message any) error SendWithPriority(to any, message any, priority MessagePriority) error SendImportant(to any, message any) error // SendAfter starts a timer. When the timer expires, the message sends to the process // identified by 'to'. Returns cancel function in order to discard // sending a message. CancelFunc returns bool value. If it returns false, than the timer has // already expired and the message has been sent. SendAfter(to any, message any, after time.Duration) (CancelFunc, error) // SendEvent sends event message to the subscribers (to the processes that made link/monitor // on this event). Event must be registered with RegisterEvent method. SendEvent(name Atom, token Ref, message any) error // SendExit sends graceful termination request to the process. SendExit(to PID, reason error) error // SendExitMeta sends graceful termination request to the meta process. SendExitMeta(meta Alias, reason error) error SendResponse(to PID, ref Ref, message any) error SendResponseError(to PID, ref Ref, err error) error // Call makes a sync request Call(to any, message any) (any, error) CallWithTimeout(to any, message any, timeout int) (any, error) CallWithPriority(to any, message any, priority MessagePriority) (any, error) CallImportant(to any, message any) (any, error) CallPID(to PID, message any, timeout int) (any, error) CallProcessID(to ProcessID, message any, timeout int) (any, error) CallAlias(to Alias, message any, timeout int) (any, error) // Inspect sends inspect request to the process. Inspect(target PID, item ...string) (map[string]string, error) // Inspect sends inspect request to the meta process. InspectMeta(meta Alias, item ...string) (map[string]string, error) // RegisterEvent registers a new event. Returns a reference as the token // for sending events. Unregistering the event is allowed to the process // that registered it. Sending an event can be done in any other process // by using the registered event name with the provided token (delegation of // event sending feature). RegisterEvent(name Atom, options EventOptions) (Ref, error) // UnregisterEvent unregisters an event. It can be done by the process owner // of this event only. UnregisterEvent(name Atom) error // links Link(target any) error Unlink(target any) error LinkPID(target PID) error UnlinkPID(target PID) error LinkProcessID(target ProcessID) error UnlinkProcessID(target ProcessID) error LinkAlias(target Alias) error UnlinkAlias(target Alias) error LinkEvent(target Event) ([]MessageEvent, error) UnlinkEvent(target Event) error LinkNode(target Atom) error UnlinkNode(target Atom) error // monitors Monitor(target any) error Demonitor(target any) error MonitorPID(pid PID) error DemonitorPID(pid PID) error MonitorProcessID(process ProcessID) error DemonitorProcessID(process ProcessID) error MonitorAlias(alias Alias) error DemonitorAlias(alias Alias) error MonitorEvent(event Event) ([]MessageEvent, error) DemonitorEvent(event Event) error MonitorNode(node Atom) error DemonitorNode(node Atom) error // Log returns gen.Log interface Log() Log // Info returns summary information about this process Info() (ProcessInfo, error) // MetaInfo returns summary information about given meta process MetaInfo(meta Alias) (MetaInfo, error) Mailbox() ProcessMailbox Behavior() ProcessBehavior Forward(to PID, message *MailboxMessage, priority MessagePriority) error }
Process
type ProcessBehavior ¶
type ProcessBehavior interface { ProcessInit(process Process, args ...any) error ProcessRun() error ProcessTerminate(reason error) }
ProcessBehavior interface contains methods you should implement to make your own process behavior
type ProcessFactory ¶
type ProcessFactory func() ProcessBehavior
type ProcessFallback ¶
ProcessFallback
type ProcessID ¶
ProcessID long notation of registered process {process_name, node_name}
func (ProcessID) MarshalJSON ¶
type ProcessInfo ¶
type ProcessInfo struct { // PID process ID PID PID // Name registered associated name with this process Name Atom // Application application name if this process started under application umbrella Application Atom // Behavior Behavior string // MailboxSize MailboxSize int64 // MailboxQueues MailboxQueues MailboxQueues // MessagesIn total number of messages this process received MessagesIn uint64 // MessagesOut total number of messages this process sent MessagesOut uint64 // RunningTime how long this process was in 'running' state in ns RunningTime uint64 // Compression Compression Compression // MessagePriority priority for the sending messages MessagePriority MessagePriority // Uptime of the process in seconds Uptime int64 // State shows current state of the process State ProcessState // Parent points to the parent process that spawned this process as a child Parent PID // Leader usually points to the Supervisor or Application process Leader PID // Fallback Fallback ProcessFallback // Env process environment. gen.NodeOptions.Security.ExposeEnvInfo must be enabled to reveal this data Env map[Env]any // Aliases list of the aliases belonging to this process Aliases []Alias // Events list of the events this process is the owner of Events []Atom // Metas list of meta processes Metas []Alias // MonitorsPID list of processes monitored by this process by the PID MonitorsPID []PID // MonitorsProcessID list of processes monitored by this process by the name MonitorsProcessID []ProcessID // MonitorsAlias list of aliases monitored by this process MonitorsAlias []Alias // MonitorsEvent list of events monitored by this process MonitorsEvent []Event // MonitorsNode list of remote nodes monitored by this process MonitorsNode []Atom // LinksPID list of the processes this process is linked with LinksPID []PID // LinksProcessID list of the processes this process is linked with by the name. LinksProcessID []ProcessID // LinksAlias list of the aliases this process is linked with LinksAlias []Alias // LinksEvent list of the events this process is linked with LinksEvent []Event //LinksNode list of the remote nodes this process is linked with LinksNode []Atom // LogLevel current logging level LogLevel LogLevel // KeepNetworkOrder KeepNetworkOrder bool // ImportantDelivery ImportantDelivery bool }
ProcessInfo
type ProcessMailbox ¶
type ProcessOptions ¶
type ProcessOptions struct { // MailboxSize defines the length of message queue for the process. Default is zero - unlimited MailboxSize int64 // Leader Leader PID // Env set the process environment variables Env map[Env]any Compression Compression // SendPriority defines the priority of the sending messages. // Actor-receiver handles its Mailbox with the next order: // - Urgent // - System // - Main // Setting this option to MessagePriorityHigh makes the node deliver messages // to the "Mailbox.System" of the receving Process // With MessagePriorityMax - makes delivering to the Mailbox.Urgent // By default, messages are delivering to the Mailbox.Main. SendPriority MessagePriority // ImportantDelivery enables important flag for sending messages. This flag makes remote node to send confirmation that message was delivered into the process mailbox ImportantDelivery bool // Fallback defines the process to where messages will be forwarded // if the mailbox is overflowed. The tag value could be used to // differentiate the source processes. Forwarded messages are wrapped // into the MessageFallback struct with the given tag value. // This option is ignored for the unlimited mailbox size Fallback ProcessFallback // LinkParent creates a link with the parent process on start. // It will make this process terminate on the parent process termination. // This option is ignored if this process starts by the node. LinkParent bool // LinkChild makes the node create a link with the spawning process. // This feature allows you to link the parent process with the child even // being in the init state. This option is ignored if this process starts by the node. LinkChild bool // LogLevel defines logging level. Default is gen.LogLevelInfo LogLevel LogLevel }
ProcessOptions
type ProcessOptionsExtra ¶
type ProcessShortInfo ¶
type ProcessShortInfo struct { // PID process ID PID PID // Name registered associated name with this process Name Atom // Application application name if this process started under application umbrella Application Atom // Behavior Behavior string // MessagesIn total number of messages this process received MessagesIn uint64 // MessagesOut total number of messages this process sent MessagesOut uint64 // MessagesMailbox total number of messages in mailbox queues MessagesMailbox uint64 // RunningTime how long this process was in 'running' state in ns RunningTime uint64 // Uptime of the process in seconds Uptime int64 // State shows current state of the process State ProcessState // Parent points to the parent process that spawned this process as a child Parent PID // Leader usually points to the Supervisor or Application process Leader PID // LogLevel current logging level LogLevel LogLevel }
ProcessShortInfo
type ProcessState ¶
type ProcessState int32
const ( ProcessStateInit ProcessState = 1 ProcessStateSleep ProcessState = 2 ProcessStateRunning ProcessState = 4 ProcessStateWaitResponse ProcessState = 8 ProcessStateTerminated ProcessState = 16 ProcessStateZombee ProcessState = 32 )
func (ProcessState) MarshalJSON ¶
func (p ProcessState) MarshalJSON() ([]byte, error)
func (ProcessState) String ¶
func (p ProcessState) String() string
type ProxyAcceptOptions ¶
type ProxyAcceptOptions struct { // Cookie sets cookie for incoming connections Cookie string // Flags sets options for incoming connections Flags NetworkProxyFlags }
type ProxyRoute ¶
type ProxyRouteInfo ¶
type ProxyTransitOptions ¶
type ProxyTransitOptions struct { }
type RegisterRoutes ¶
type RegisterRoutes struct { Routes []Route ApplicationRoutes []ApplicationRoute ProxyRoutes []ProxyRoute // if Proxy was enabled }
type Registrar ¶
type Registrar interface { // Register invokes on network start Register(node NodeRegistrar, routes RegisterRoutes) (StaticRoutes, error) // Resolver returns the gen.Resolver interface Resolver() Resolver // RegisterProxy allows to register this node as a proxy for the given node on the registrar // (if the registrar does support this feature) RegisterProxy(to Atom) error // UnregisterProxy unregisters this node as a proxy to the given node on the registrar // (if the registrar does support this feature) UnregisterProxy(to Atom) error // RegisterApplicationRoute registers the application on the registrar // (if the registrar does support this feature). RegisterApplicationRoute(route ApplicationRoute) error // UnregisterApplication unregisters the given application. // (if the registrar does support this feature). UnregisterApplicationRoute(name Atom) error // Nodes returns a list of the nodes registered on the registrar Nodes() ([]Atom, error) // Config returns config received from the registrar // (if the registrar does support this feature) Config(items ...string) (map[string]any, error) // ConfigItem returns the value from the config for the given name // (if the registrar does support this feature) ConfigItem(item string) (any, error) // Event returns the event you may want to Link/Monitor // (if the registrar does support this feature) Event() (Event, error) // Info return short information about the registrar Info() RegistrarInfo // Terminate invokes on network stop. Terminate() Version() Version }
Registrar interface
type RegistrarConfig ¶
type RegistrarInfo ¶
type RemoteNode ¶
type RemoteNode interface { Name() Atom Uptime() int64 ConnectionUptime() int64 Version() Version Info() RemoteNodeInfo Spawn(name Atom, options ProcessOptions, args ...any) (PID, error) SpawnRegister(register Atom, name Atom, options ProcessOptions, args ...any) (PID, error) // ApplicationStart starts application on the remote node. // Starting mode is according to the defined in the gen.ApplicationSpec.Mode ApplicationStart(name Atom, options ApplicationOptions) error // ApplicationStartTemporary starts application on the remote node in temporary mode // overriding the value of gen.ApplicationSpec.Mode ApplicationStartTemporary(name Atom, options ApplicationOptions) error // ApplicationStartTransient starts application on the remote node in transient mode // overriding the value of gen.ApplicationSpec.Mode ApplicationStartTransient(name Atom, options ApplicationOptions) error // ApplicationStartPermanent starts application on the remote node in permanent mode // overriding the value of gen.ApplicationSpec.Mode ApplicationStartPermanent(name Atom, options ApplicationOptions) error Creation() int64 Disconnect() }
type RemoteNodeInfo ¶
type RemoteNodeInfo struct { Node Atom Uptime int64 ConnectionUptime int64 Version Version HandshakeVersion Version ProtoVersion Version NetworkFlags NetworkFlags PoolSize int PoolDSN []string MaxMessageSize int MessagesIn uint64 MessagesOut uint64 BytesIn uint64 BytesOut uint64 TransitBytesIn uint64 TransitBytesOut uint64 }
type Resolver ¶
type Resolver interface { // Resolve resolves the routes for the given node name Resolve(node Atom) ([]Route, error) // Resolve resolves the proxy routes for the given node name ResolveProxy(node Atom) ([]ProxyRoute, error) // Resolve resolves the applications routes for the given application. // This information allows you to know where the given application is running // or loaded. ResolveApplication(name Atom) ([]ApplicationRoute, error) }
Resolver interface
type SecurityOptions ¶
type StaticRoutes ¶
type StaticRoutes struct { Routes map[string]NetworkRoute // match string => network route Proxies map[string]NetworkProxyRoute // match string => proxy route }