diff options
Diffstat (limited to 'container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java')
-rw-r--r-- | container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java new file mode 100644 index 00000000000..dcd55f8f1f9 --- /dev/null +++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java @@ -0,0 +1,55 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.jdisc.messagebus; + +import com.yahoo.component.ComponentId; +import com.yahoo.container.di.componentgraph.Provider; +import com.yahoo.jdisc.ReferencedResource; +import com.yahoo.jdisc.service.CurrentContainer; +import com.yahoo.log.LogLevel; +import com.yahoo.messagebus.IntermediateSessionParams; +import com.yahoo.messagebus.jdisc.MbusServer; +import com.yahoo.messagebus.shared.SharedIntermediateSession; + +import java.util.logging.Logger; + +/** + * TODO: Javadoc + * + * @author tonytv + */ +public class MbusServerProvider implements Provider<MbusServer> { + private static final Logger log = Logger.getLogger(MbusServerProvider.class.getName()); + + private final MbusServer server; + private final ReferencedResource<SharedIntermediateSession> sessionRef; + + public MbusServerProvider(ComponentId id, SessionCache sessionCache, CurrentContainer currentContainer) { + ComponentId chainId = id.withoutNamespace(); //TODO: this should be a config value instead. + sessionRef = sessionCache.retainIntermediate(createIntermediateSessionParams(true, chainId.stringValue())); + server = new MbusServer(currentContainer, sessionRef.getResource()); + } + + static IntermediateSessionParams createIntermediateSessionParams(boolean broadcastName, String name) { + IntermediateSessionParams intermediateParams = new IntermediateSessionParams(); + intermediateParams.setBroadcastName(broadcastName); + intermediateParams.setName(name); + return intermediateParams; + } + + public SharedIntermediateSession getSession() { + return sessionRef.getResource(); + } + + @Override + public MbusServer get() { + return server; + } + + @Override + public void deconstruct() { + log.log(LogLevel.INFO, "Deconstructing mbus server: " + server); + server.close(); + server.release(); + sessionRef.getReference().close(); + } +} |