X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-netty-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fnettyutil%2Fhandler%2Fssh%2Fclient%2FInvoker.java;h=eab2546d6e430d64a185a9ae2e44afd83375259b;hp=d542e1952a5e847e09ad771828b1ab57df7b1989;hb=83f7f24d355f87d8c1a850098d5b7c82e5d746dd;hpb=478ce1fa1dc30974b7cf23fd5258f1af5366d547 diff --git a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/Invoker.java b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/Invoker.java index d542e1952a..eab2546d6e 100644 --- a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/Invoker.java +++ b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/Invoker.java @@ -13,33 +13,38 @@ import java.io.IOException; * Abstract class providing mechanism of invoking various SSH level services. * Class is not allowed to be extended, as it provides its own implementations via instance initiators. */ -public abstract class Invoker { +abstract class Invoker { private boolean invoked = false; - private Invoker(){} + private Invoker() { + } protected boolean isInvoked() { - // TODO invoked is always false return invoked; } + public void setInvoked() { + this.invoked = true; + } + abstract void invoke(SshSession session) throws IOException; - /** - * Invoker implementation to invokes subsystem SSH service. - * - * @param subsystem - * @return - */ + public static Invoker netconfSubsystem(){ + return subsystem("netconf"); + } + public static Invoker subsystem(final String subsystem) { return new Invoker() { @Override - void invoke(SshSession session) throws IOException { + synchronized void invoke(SshSession session) throws IOException { if (isInvoked()) { throw new IllegalStateException("Already invoked."); } - - session.startSubSystem(subsystem); + try { + session.startSubSystem(subsystem); + } finally { + setInvoked(); + } } }; }