import { injectable } from 'inversify';
import { Emitter } from '@theia/core/lib/common/event';
import { MonitorServiceClient, MonitorReadEvent, MonitorError } from '../../common/protocol/monitor-service';

@injectable()
export class MonitorServiceClientImpl implements MonitorServiceClient {

    protected readonly onReadEmitter = new Emitter<MonitorReadEvent>();
    protected readonly onErrorEmitter = new Emitter<MonitorError>();
    readonly onRead = this.onReadEmitter.event;
    readonly onError = this.onErrorEmitter.event;

    notifyRead(event: MonitorReadEvent): void {
        this.onReadEmitter.fire(event);
        const { data } = event;
        console.debug(`Received data: ${data}`);
    }

    notifyError(error: MonitorError): void {
        this.onErrorEmitter.fire(error);
    }

}