import { EditorService } from './editorService';
import { AbstractEditorDelegate } from './editorDelegate';
import { RaasClient } from 'raas-client';
import { RhamtModelService, RhamtModel } from 'raas-core';
import { Server } from 'raas-server';

class Delegate extends AbstractEditorDelegate {

    constructor() {
        super();
    }

    raasClientStarting(raasClient: RaasClient): void {
        console.log('raasClientStarting...');
    }
    raasClientConnected(raasClient: RaasClient): void {
        console.log('raasClientConnected...');
    }
    raasClientDisconnected(raasClient: RaasClient): void {
        console.log('raasClientDisconnected...');
    }
    unableToConnectRaasClient(raasClient: RaasClient): void {
        console.log('unableToConnectRaasClient...');
    }

    listen(): void {
    }
}

const server = new Server();
server.start(61437);

const model = new RhamtModel();
const modelService = new RhamtModelService(model);
const editorService = new EditorService();

const config = modelService.createConfiguration();
const delegate = new Delegate();
editorService.connect(config, delegate, new RaasClient());

config.server.host = 'localhost';
config.server.port = 61437;

// delegate.onConnectRaasClient.emit(undefined);

// const delay = 2000;

// setTimeout(() => {
//     delegate.onDisconnectRaasClient.emit(undefined);
//     setTimeout(() => {
//         delegate.onConnectRaasClient.emit(undefined);
//         setTimeout(() => {
//             runtimeService.shutdownServers();
//         }, delay);
//     }, delay);
// }, delay);
