nx_metadata_sdk 1.0 Metadata SDK

Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
nx::sdk::analytics::IEngine Class Referenceabstract

`#include <i_engine.h>`

Inheritance diagram for nx::sdk::analytics::IEngine:

## Classes
class | IHandler

## Public Member Functions
virtual void | setEngineInfo (const IEngineInfo *engineInfo)=0
Result< const ISettingsResponse * > | setSettings (const IStringMap *settings)
Result< const ISettingsResponse * > | pluginSideSettings () const
Result< const IString * > | manifest () const
virtual bool | isCompatible (const IDeviceInfo *deviceInfo) const =0
Result< IDeviceAgent * > | obtainDeviceAgent (const IDeviceInfo *deviceInfo)
Result< IAction::Result > | executeAction (const IAction *action)
virtual void | setHandler (IHandler *handler)=0
Public Member Functions inherited from nx::sdk::Interface< IEngine >
virtual IRefCountable * | queryInterface (const InterfaceId *id)
Ptr< Interface > | queryInterface ()
Ptr< const Interface > | queryInterface () const
Public Member Functions inherited from nx::sdk::IRefCountable
virtual | ~IRefCountable ()=default
template<class Interface >
Ptr< Interface > | queryInterface ()
template<class Interface >
Ptr< const Interface > | queryInterface () const
virtual int | addRef () const =0
virtual int | releaseRef () const =0
int | refCountThreadUnsafe () const

## Static Public Member Functions
static auto | interfaceId ()
Static Public Member Functions inherited from nx::sdk::IRefCountable
static auto | interfaceId ()

## Protected Member Functions
virtual void | doSetSettings (Result< const ISettingsResponse *> *outResult, const IStringMap *settings)=0
virtual void | getPluginSideSettings (Result< const ISettingsResponse *> *outResult) const =0
virtual void | getManifest (Result< const IString *> *outResult) const =0
virtual void | doObtainDeviceAgent (Result< IDeviceAgent *> *outResult, const IDeviceInfo *deviceInfo)=0
virtual void | doExecuteAction (Result< IAction::Result > *outResult, const IAction *action)=0
Protected Member Functions inherited from nx::sdk::Interface< IEngine >
virtual IRefCountable * | queryInterface (const IRefCountable::InterfaceId *id) override
IRefCountable * | queryInterfaceSupportingDeprecatedId (const IRefCountable::InterfaceId *id, const Uuid &deprecatedInterfaceId)

## Additional Inherited Members
Static Protected Member Functions inherited from nx::sdk::IRefCountable
template<int len>
static constexpr const InterfaceId * | makeId (const char(&charArray)[len])
template<class TemplateInstance , class TemplateArg , int len>
static const InterfaceId * | makeIdForTemplate (const char(&baseIdCharArray)[len])

## Detailed Description

Main interface for an Analytics Engine instance. The instances are created by a Mediaserver via calling analytics::IPlugin::createEngine() typically on Mediaserver start (or when a new Engine is created by the system administrator), and destroyed (via releaseRef()) on Mediaserver shutdown (or when an existing Engine is deleted by the system administrator).

For the VMS end user, each Engine instance is perceived as an independent Analytics Engine which has its own set of values of settings stored in the Mediaserver database.

All methods are guaranteed to be called without overlapping even if from different threads (i.e. with a guaranteed barrier between the calls), thus, no synchronization is required for the implementation.

## Member Function Documentation

## ◆ doExecuteAction()

virtual void nx::sdk::analytics::IEngine::doExecuteAction | ( | Result< IAction::Result > * | outResult,
|  | const IAction * | action
| ) |  |
| protected pure virtual

Called by executeAction()

## ◆ doObtainDeviceAgent()

virtual void nx::sdk::analytics::IEngine::doObtainDeviceAgent | ( | Result< IDeviceAgent *> * | outResult,
|  | const IDeviceInfo * | deviceInfo
| ) |  |
| protected pure virtual

Called by obtainDeviceAgent()

## ◆ doSetSettings()

virtual void nx::sdk::analytics::IEngine::doSetSettings | ( | Result< const ISettingsResponse *> * | outResult,
|  | const IStringMap * | settings
| ) |  |
| protected pure virtual

Called by setSettings()

## ◆ executeAction()

Result<IAction::Result> nx::sdk::analytics::IEngine::executeAction | ( | const IAction * | action | ) |
| inline

Action handler. Called when some action defined by this Engine is triggered by Server.

Parameters

  action | Provides data for the action such as metadata object for which the action has been triggered, and a means for reporting back action results to Server. This object should not be used after returning from this function.

## ◆ getManifest()

virtual void nx::sdk::analytics::IEngine::getManifest | ( | Result< const IString *> * | outResult | ) | const
| protected pure virtual

Called by manifest()

## ◆ getPluginSideSettings()

virtual void nx::sdk::analytics::IEngine::getPluginSideSettings | ( | Result< const ISettingsResponse *> * | outResult | ) | const
| protected pure virtual

Called by pluginSideSettings()

## ◆ isCompatible()

virtual bool nx::sdk::analytics::IEngine::isCompatible | ( | const IDeviceInfo * | deviceInfo | ) | const
| pure virtual

Returns
  True if the Engine is able to create DeviceAgents for the provided device, false otherwise.

## ◆ manifest()

Result<const IString*> nx::sdk::analytics::IEngine::manifest | ( |  | ) | const
| inline

Provides a JSON Manifest for this Engine instance. See the example of such Manifest in stub_analytics_plugin.

When creating the new IEngine instance, this method is called after setSettings(), but the Manifest must not depend on the setting values, because it will not be re-requested on settings change afterwards.

See the manifest specification in Analytics Plugin Manifests.

Returns
  JSON string in UTF-8.

## ◆ obtainDeviceAgent()

Result<IDeviceAgent*> nx::sdk::analytics::IEngine::obtainDeviceAgent | ( | const IDeviceInfo * | deviceInfo | ) |
| inline

Creates, or returns an already existing, a DeviceAgent instance intended to work with the given device.

Parameters

  deviceInfo | Information about the device for which a DeviceAgent should be created.

Returns
  Pointer to an object that implements IDeviceAgent interface, or null if a DeviceAgent for this particular Device makes no sense (e.g. if the Device supports no Analytics Events and Objects) - this is not treated as an error (the user is not notified).

## ◆ pluginSideSettings()

Result<const ISettingsResponse*> nx::sdk::analytics::IEngine::pluginSideSettings | ( |  | ) | const
| inline

In addition to the settings stored in the Server database, an Engine can have some settings which are stored somewhere "under the hood" of the Engine, e.g. on a device acting as an Engine's backend. Such settings do not need to be explicitly marked in the Settings Model, but every time the Server offers the user to edit the values, it calls this method and merges the received values with the ones in its database.

Returns
  An error code with a message in case of some general failure, or a combination of optional individual setting errors, optional setting values, and an optional new Settings Model. Can be null if none of the above items are present.

## ◆ setEngineInfo()

virtual void nx::sdk::analytics::IEngine::setEngineInfo | ( | const IEngineInfo * | engineInfo | ) |
| pure virtual

Called right after the Engine creation (before all other methods) or when some Engine-related change occurs on the Server side (e.g. Engine name is changed).

## ◆ setHandler()

virtual void nx::sdk::analytics::IEngine::setHandler | ( | IHandler * | handler | ) |
| pure virtual

Parameters

  handler | Generic Engine-related events (errors, warning, info messages) might be reported via this handler.

## ◆ setSettings()

Result<const ISettingsResponse*> nx::sdk::analytics::IEngine::setSettings | ( | const IStringMap * | settings | ) |
| inline

Receives the values of settings stored in the Server database for this Engine instance. The values must conform to the Settings Model, which is initially defined in the Plugin Manifest, but may be overridden via returning an updated Model from this method.

After creating the new IEngine instance, this method is called after setEngineInfo() but before manifest().

Parameters

  settings | Values of settings conforming to the Settings Model. Never null.

Returns
  An error code with a message in case of some general failure that affected the procedure of applying the settings, or a combination of optional individual setting errors, optional new setting values in case they were changed during the applying, and an optional new Settings Model. Can be null if none of the above items are present.

The documentation for this class was generated from the following file:

- src/nx/sdk/analytics/i_engine.h