/*
* Copyright 2015 Red Hat, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*
*
* Copyright (c) 2015 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*
*/
package io.vertx.ext.shell.support;
import io.termd.core.readline.Keymap;
import io.termd.core.tty.TtyConnection;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.ext.auth.AuthProvider;
import io.vertx.ext.shell.term.Term;
import io.vertx.ext.shell.term.TermServer;
import io.vertx.ext.shell.term.impl.TermImpl;
/**
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
*/
public class TestTermServer implements TermServer {
private final Vertx vertx;
private Handler<TtyConnection> connectionHandler;
public TestTermServer(Vertx vertx) {
this.vertx = vertx;
}
public TestTtyConnection openConnection() {
TestTtyConnection conn = new TestTtyConnection(vertx);
connectionHandler.handle(conn);
return conn;
}
@Override
public TermServer termHandler(Handler<Term> handler) {
connectionHandler = conn -> {
handler.handle(new TermImpl(vertx, conn));
};
return this;
}
@Override
public TermServer authProvider(AuthProvider provider) {
throw new UnsupportedOperationException();
}
@Override
public TermServer listen(Handler<AsyncResult<TermServer>> listenHandler) {
listenHandler.handle(Future.succeededFuture(this));
return this;
}
@Override
public int actualPort() {
throw new UnsupportedOperationException();
}
@Override
public void close() {
}
@Override
public void close(Handler<AsyncResult<Void>> completionHandler) {
completionHandler.handle(Future.succeededFuture());
}
}