Package com.davfx.ninio.script.util

Source Code of com.davfx.ninio.script.util.AllAvailableScriptRunner

package com.davfx.ninio.script.util;

import java.io.IOException;

import com.davfx.ninio.common.Queue;
import com.davfx.ninio.http.HttpClient;
import com.davfx.ninio.ping.util.PingClientCache;
import com.davfx.ninio.script.JsonScriptRunner;
import com.davfx.ninio.script.QueueScriptRunner;
import com.davfx.ninio.script.RegisteredFunctionsScriptRunner;
import com.davfx.ninio.script.ScriptFunction;
import com.davfx.ninio.script.ScriptRegister;
import com.davfx.ninio.script.SimpleScriptRunner;
import com.davfx.ninio.script.SingleExecutorScriptRunner;
import com.davfx.ninio.snmp.util.SnmpClientCache;
import com.davfx.ninio.telnet.util.WaitingTelnetClientCache;
import com.google.gson.JsonElement;

public class AllAvailableScriptRunner implements AutoCloseable, SimpleScriptRunner, ScriptRegister {
  private final SingleExecutorScriptRunner singleExecutorScriptRunner;
  private final Queue queue;
  private final HttpClient http;
  private final WaitingTelnetClientCache telnet;
  private final SnmpClientCache snmp;
  private final PingClientCache ping;
  private final RegisteredFunctionsScriptRunner runner;

  public AllAvailableScriptRunner() throws IOException {
    queue = new Queue();
    singleExecutorScriptRunner = new SingleExecutorScriptRunner();
    http = new HttpClient(queue, null);
    telnet = new WaitingTelnetClientCache(queue);
    snmp = new SnmpClientCache(queue);
    ping = new PingClientCache(queue);

    runner = new PingAvailable(ping).register(
          new SnmpAvailable(snmp).register(
            new WaitingTelnetAvailable(telnet).register(
              new HttpAvailable(http).register(
                new RegisteredFunctionsScriptRunner(new QueueScriptRunner<JsonElement>(queue, new JsonScriptRunner(singleExecutorScriptRunner)))))));
  }

  @Override
  public ScriptRegister register(String functionId, ScriptFunction<JsonElement> function) {
    runner.register(functionId, function);
    return this;
  }
 
  @Override
  public void eval(String script) {
    runner.eval(script);
  }
 
  @Override
  public void close() {
    queue.close();
    singleExecutorScriptRunner.close();
    http.close();
    telnet.close();
  }
}
TOP

Related Classes of com.davfx.ninio.script.util.AllAvailableScriptRunner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.