Options
All
  • Public
  • Public/Protected
  • All
Menu

Keeps track of agents or specific Coaty objects in a Coaty network by monitoring agent identities or custom object types.

This controller observes advertisements and deadvertisements of such objects and discovers them. Changes are emitted on corresponding observables that applications can subscribe to.

You can use this controller either standalone by adding it to the container components or extend your custom controller class from this controller class.

If you want to keep track of custom object types (not agent identities), you have to implement the remote side of the distributed object lifecycle management explicitely, i.e. advertise/readvertise/deadvertise your custom objects and observe/resolve corresponding Discover events. To facilitate this, this controller provides convenience methods: advertiseDiscoverableObject, readvertiseDiscoverableObject, and deadvertiseDiscoverableObject.

Usually, a custom object should have the object ID of its agent identity, i.e. Container.identity, set as its parentObjectId in order to be automatically deadvertised when the agent terminates abnormally. You can automate this by passing true to the optional parameter shouldSetParentObjectId of method advertiseDiscoverableObject (true is also the default parameter value).

Hierarchy

Index

Constructors

constructor

Accessors

communicationManager

container

options

registeredName

  • get registeredName(): string
  • Gets the registered name of this controller.

    The registered name is either defined by the corresponding key in the Components.controllers object in the container configuration, or by invoking Container.registerController method with this name.

    Returns string

runtime

Methods

advertiseDiscoverableObject

  • advertiseDiscoverableObject(object: CoatyObject, shouldSetParentObjectId?: boolean): Subscription
  • Advertises the given Coaty object and makes it discoverable either by its objectType or objectId.

    The optional shouldSetParentObjectId parameter determines whether the parent object ID of the given object should be set to the agent identity's object ID (default is true). This is required if you want to observe the object's lifecycle info by method observeObjectLifecycleInfoByObjectType and to get notified when the advertising agent terminates abnormally.

    The returned subscription should be unsubscribed when the object is deadvertised explicitely in your application code (see method deadvertiseDiscoverableObject). It will be automatically unsubscribed when the communication manager is stopped.

    Parameters

    • object: CoatyObject

      a CoatyObject that is advertised and discoverable

    • shouldSetParentObjectId: boolean = true

      determines whether the parent object ID of the given object should be set to the agent identity's object ID (default is true)

    Returns Subscription

    the subscription on a DiscoverEvent observable that should be unsubscribed if no longer needed

deadvertiseDiscoverableObject

  • deadvertiseDiscoverableObject(object: CoatyObject, discoverableSubscription: Subscription): void
  • Deadvertises the given Coaty object and unsubscribes the given subscription resulting from a corresponding invocation of method advertiseDiscoverableObject.

    Note that if you want to keep a Coaty object for the whole lifetime of its agent you don't necessarily need to invoke this method explicitely. Deadvertise events are published automatically by or on behalf of an agent whenever its communication manager is stopped or when the agent terminates abnormally.

    Parameters

    • object: CoatyObject

      a CoatyObject to be deadvertised

    • discoverableSubscription: Subscription

      subscription on DiscoverEvent to be unsubscribed

    Returns void

Protected extendLogObject

  • extendLogObject(log: Log): void
  • Whenever one of the controller's log methods (e.g. logDebug, logInfo, logWarning, logError, logFatal) is called by application code, the controller creates a Log object with appropriate property values and passes it to this method before advertising it.

    You can override this method to additionally set certain properties (such as LogHost.hostname or Log.logLabels). Ensure that super.extendLogObject is called in your override. The base method does nothing.

    Parameters

    • log: Log

      log object to be extended before being advertised

    Returns void

logDebug

  • logDebug(message: string, ...tags: string[]): void

logError

  • logError(error: any, message: string, ...tags: string[]): void
  • Advertise a Log object for an error.

    Parameters

    • error: any

      an error (object)

    • message: string

      additional error message

    • Rest ...tags: string[]

      any number of log tags

    Returns void

logErrorWithStacktrace

  • logErrorWithStacktrace(error: any, message: string, ...tags: string[]): void

logFatal

  • logFatal(error: any, message: string, ...tags: string[]): void
  • Advertise a Log object for a fatal error.

    Parameters

    • error: any

      an error (object)

    • message: string

      additional error message

    • Rest ...tags: string[]

      any number of log tags

    Returns void

logInfo

  • logInfo(message: string, ...tags: string[]): void

logWarning

  • logWarning(message: string, ...tags: string[]): void

observeObjectLifecycleInfoByCoreType

  • Observes advertisements, deadvertisments and initial discoveries of objects of the given core type. To track agent identity objects, specify core type Identity.

    Specify an optional filter predicate to be applied to trackable objects. If the predicate function returns true, the object is being tracked; otherwise the object is not tracked. If no predicate is specified, all objects corresponding to the given core type are tracked.

    remarks

    Subscriptions to the returned observable are automatically unsubscribed when the communication manager is stopped.

    Parameters

    • coreType: CoreType

      the core type of objects to be tracked

    • Optional objectFilter: (obj: CoatyObject) => boolean

      a predicate for filtering objects to be tracked (optional)

    Returns Observable<ObjectLifecycleInfo>

    an observable emitting changes concerning tracked objects of the given core type

observeObjectLifecycleInfoByObjectType

  • Observes advertisements, deadvertisments and initial discoveries of objects of the given object type.

    Specify an optional filter predicate to be applied to trackable objects. If the predicate function returns true, the object is being tracked; otherwise the object is not tracked. If no predicate is specified, all objects corresponding to the given core type are tracked.

    remarks

    Subscriptions to the returned observable are automatically unsubscribed when the communication manager is stopped.

    Parameters

    • objectType: string

      the object type of objects to be tracked

    • Optional objectFilter: (obj: CoatyObject) => boolean

      a predicate for filtering objects to be tracked (optional)

    Returns Observable<ObjectLifecycleInfo>

    an observable emitting changes concerning tracked objects of the given object type

onCommunicationManagerStarting

  • onCommunicationManagerStarting(): void

onCommunicationManagerStopping

  • onCommunicationManagerStopping(): void

onDispose

  • onDispose(): void
  • Called by the container when this instance should be disposed.

    Implement cleanup side effects here. Ensure that super.onDispose is called in your override. The base implementation does nothing.

    Returns void

onInit

  • onInit(): void
  • Called when the container has completely set up and injected all dependency components, including all its controllers.

    Override this method to perform initializations in your custom controller class instead of defining a constructor. Although the base implementation does nothing it is good practice to call super.onInit() in your override method; especially if your custom controller class does not extend from the base Controller class directly.

    Returns void

readvertiseDiscoverableObject

  • readvertiseDiscoverableObject(object: CoatyObject): void
  • Readvertises the given Coaty object, usually after some properties have changed. The object reference should have been advertised before once using the method advertiseDiscoverableObject.

    Parameters

    • object: CoatyObject

      a CoatyObject that should be advertised again after properties have changed

    Returns void

Generated using TypeDoc