summaryrefslogtreecommitdiffstats
path: root/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java
diff options
context:
space:
mode:
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.java55
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();
+ }
+}