@openhps/core
Version:
Open Hybrid Positioning System - Core component
25 lines (21 loc) • 810 B
text/typescript
import { DataFrame } from '../../data/DataFrame';
import { PushOptions } from '../../graph/options';
import { SinkNode, SinkNodeOptions } from '../SinkNode';
/**
* @category Sink node
*/
export class CallbackSinkNode<In extends DataFrame> extends SinkNode<In> {
public callback: (frame: In | In[], options?: PushOptions) => Promise<void> | void;
constructor(
callback: (frame: In | In[], options?: PushOptions) => Promise<void> | void = () => null,
options?: SinkNodeOptions,
) {
super(options);
this.callback = callback;
}
public onPush(frame: In, options?: PushOptions): Promise<void> {
return new Promise<void>((resolve, reject) => {
Promise.resolve(this.callback(frame, options)).then(resolve).catch(reject);
});
}
}