@mdf.js/openc2-core
Version:
MMS - API Core - OpenC2
205 lines • 7.82 kB
TypeScript
/**
* Copyright 2024 Mytra Control S.L. All rights reserved.
*
* Use of this source code is governed by an MIT-style license that can be found in the LICENSE file
* or at https://opensource.org/licenses/MIT.
*/
import { Health } from '@mdf.js/core';
import { Crash } from '@mdf.js/crash';
import { CommandJobHandler, ConsumerAdapter, ConsumerOptions, Control } from '../../types';
import { Component } from '../Component';
import { AdapterWrapper } from './core';
export declare interface Consumer {
/**
* Add a listener for the `error` event, emitted when the component detects an error.
* @param event - `error` event
* @param listener - Error event listener
* @event
*/
on(event: 'error', listener: (error: Crash | Error) => void): this;
/**
* Add a listener for the `error` event, emitted when the component detects an error.
* @param event - `error` event
* @param listener - Error event listener
* @event
*/
addListener(event: 'error', listener: (error: Crash | Error) => void): this;
/**
* Add a listener for the `error` event, emitted when the component detects an error. This is a
* one-time event, the listener will be removed after the first emission.
* @param event - `error` event
* @param listener - Error event listener
* @event
*/
once(event: 'error', listener: (error: Crash | Error) => void): this;
/**
* Removes the specified listener from the listener array for the `error` event.
* @param event - `error` event
* @param listener - Error event listener
* @event
*/
off(event: 'error', listener: (error: Crash | Error) => void): this;
/**
* Removes the specified listener from the listener array for the `error` event.
* @param event - `error` event
* @param listener - Error event listener
* @event
*/
removeListener(event: 'error', listener: (error: Crash | Error) => void): this;
/**
* Removes all listeners, or those of the specified event.
* @param event - `error` event
*/
removeAllListeners(event?: 'error'): this;
/**
* Add a listener for the `status` event, emitted when the component changes its status.
* @param event - `status` event
* @param listener - Status event listener
* @event
*/
on(event: 'status', listener: (status: Health.Status) => void): this;
/**
* Add a listener for the `status` event, emitted when the component changes its status.
* @param event - `status` event
* @param listener - Status event listener
* @event
*/
addListener(event: 'status', listener: (status: Health.Status) => void): this;
/**
* Add a listener for the `status` event, emitted when the component changes its status. This is a
* one-time event, the listener will be removed after the first emission.
* @param event - `status` event
* @param listener - Status event listener
* @event
*/
once(event: 'status', listener: (status: Health.Status) => void): this;
/**
* Removes the specified listener from the listener array for the `status` event.
* @param event - `status` event
* @param listener - Status event listener
* @event
*/
off(event: 'status', listener: (status: Health.Status) => void): this;
/**
* Removes the specified listener from the listener array for the `status` event.
* @param event - `status` event
* @param listener - Status event listener
* @event
*/
removeListener(event: 'status', listener: (status: Health.Status) => void): this;
/**
* Add a listener for the `command` event, emitted when a new command is received
* @param event - `command` event
* @param listener - Command event listener
* @event
*/
on(event: 'command', listener: (job: CommandJobHandler) => void): this;
/**
* Add a listener for the `command` event, emitted when a new command is received
* @param event - `command` event
* @param listener - Command event listener
* @event
*/
addListener(event: 'command', listener: (job: CommandJobHandler) => void): this;
/**
* Add a listener for the `command` event, emitted when a new command is received. This is a
* one-time event, the listener will be removed after the first emission.
* @param event - `command` event
* @param listener - Command event listener
* @event
*/
once(event: 'command', listener: (job: CommandJobHandler) => void): this;
/**
* Removes the specified listener from the listener array for the `command` event.
* @param event - `command` event
* @param listener - Command event listener
* @event
*/
off(event: 'command', listener: (job: CommandJobHandler) => void): this;
/**
* Removes the specified listener from the listener array for the `command` event.
* @param event - `command` event
* @param listener - Command event listener
* @event
*/
removeListener(event: 'command', listener: (job: CommandJobHandler) => void): this;
/**
* Removes all listeners, or those of the specified event.
* @param event - `command` event
*/
removeAllListeners(event?: 'command'): this;
}
export declare class Consumer extends Component<AdapterWrapper, ConsumerOptions> {
/**
* Regular OpenC2 consumer implementation.
* @param adapter - transport adapter
* @param options - configuration options
*/
constructor(adapter: ConsumerAdapter, options: ConsumerOptions);
/**
* Validate the resolver map if exists
* @param options - configuration options
* @returns
*/
private validateResolver;
/**
* Validate a resolver entry format
* @param entry - resolver entry to validate
*/
private validateResolverEntry;
/** Consumer actuators */
get actuator(): string[] | undefined;
set actuator(value: string[] | undefined);
/** Consumer profiles */
get profiles(): string[] | undefined;
set profiles(value: string[] | undefined);
/** Consumer pairs */
get pairs(): Control.ActionTargetPairs;
set pairs(value: Control.ActionTargetPairs);
/** Initialize the OpenC2 component */
protected startup(): Promise<void>;
/** Shutdown the OpenC2 component */
protected shutdown(): Promise<void>;
/**
* Process incoming command message from the adapter
* @param incomingMessage - incoming message
* @param done - callback to return the response
*/
private readonly onCommandHandler;
/**
* Process incoming message and return a response if the message is a command that should be
* responded
* @param incomingMessage - incoming message
*/
private readonly processCommand;
/**
* Process incoming command message and select a default response or emit a new job to execute
* the command
* @param command - command message to be processed
*/
private classifyCommand;
/**
* Resolve a command message using a resolver
* @param resolver - resolver function to be executed
* @param message - message to be processed
* @returns
*/
private resolveCommand;
/**
* Execute a job and wait for the resolution
* @param message - message to be processed as a job for upper layers
*/
private emitCommandJob;
/**
* Create a job from a command message
* @param message - command message
* @returns
*/
private createJobFromCommand;
/**
* Check if there is a resolver function for the command in the resolver map
* @param message - message to be processed
*/
private getResolver;
}
//# sourceMappingURL=Consumer.d.ts.map