Author: dblevins
Date: Wed Aug  1 03:01:37 2012
New Revision: 1367847

URL: http://svn.apache.org/viewvc?rev=1367847&view=rev
Log:
OPENEJB-1881 - Multipoint "broadcast" attribute

Modified:
    
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
    
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java
    
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint

Modified: 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java?rev=1367847&r1=1367846&r2=1367847&view=diff
==============================================================================
--- 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
 (original)
+++ 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
 Wed Aug  1 03:01:37 2012
@@ -70,6 +70,7 @@ public class MultipointDiscoveryAgent im
     private String discoveryHost;
     private Set<URI> roots;
     private Duration reconnectDelay;
+    private Options options;
 
     @Managed
     private final Event restarts = new Event();
@@ -84,7 +85,7 @@ public class MultipointDiscoveryAgent im
 
     public void init(Properties props) {
 
-        final Options options = new Options(props);
+        options = new Options(props);
         options.setLogger(new OptionsLog(log));
 
         host = props.getProperty("bind", host);
@@ -171,7 +172,8 @@ public class MultipointDiscoveryAgent im
         try {
             if (running.compareAndSet(false, true)) {
                 log.info("MultipointDiscoveryAgent Starting");
-                multipointServer = new MultipointServer(host, discoveryHost, 
port, tracker, name, debug, roots, reconnectDelay).start();
+                final boolean broadcast = options.get("broadcast", true);
+                multipointServer = new MultipointServer(host, discoveryHost, 
port, tracker, name, debug, roots, reconnectDelay, broadcast).start();
                 log.info("MultipointDiscoveryAgent Started");
 
                 this.port = multipointServer.getPort();
@@ -306,4 +308,13 @@ public class MultipointDiscoveryAgent im
         return multipointServer.getReconnectDelay();
     }
 
+    @Managed
+    public boolean getBroadcast() {
+        return multipointServer.getBroadcast();
+    }
+
+    @Managed
+    public void setBroadcast(boolean broadcast) {
+        multipointServer.setBroadcast(broadcast);
+    }
 }

Modified: 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java?rev=1367847&r1=1367846&r2=1367847&view=diff
==============================================================================
--- 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java
 (original)
+++ 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java
 Wed Aug  1 03:01:37 2012
@@ -100,18 +100,19 @@ public class MultipointServer {
     private final Lock lock = new ReentrantLock();
     private final Condition started = lock.newCondition();
     private final Condition stopped = lock.newCondition();
+    private final AtomicBoolean broadcast = new AtomicBoolean(true);
 
     public MultipointServer(int port, Tracker tracker) throws IOException {
-        this("localhost", "localhost", port, tracker, randomColor(), true, 
Collections.EMPTY_SET, new Duration(30, TimeUnit.SECONDS));
+        this("localhost", "localhost", port, tracker, randomColor(), true, 
Collections.EMPTY_SET, new Duration(30, TimeUnit.SECONDS), true);
     }
 
-    public MultipointServer(String bindHost, String broadcastHost, int port, 
Tracker tracker, String name, boolean debug, Set<URI> roots, Duration 
reconnectDelay) throws IOException {
+    public MultipointServer(String bindHost, String broadcastHost, int port, 
Tracker tracker, String name, boolean debug, Set<URI> roots, Duration 
reconnectDelay, final boolean broadcast) throws IOException {
         if (tracker == null) throw new NullPointerException("tracker cannot be 
null");
         if (bindHost == null) throw new NullPointerException("host cannot be 
null");
 
         if (broadcastHost == null) broadcastHost = bindHost;
         if (reconnectDelay == null) reconnectDelay = new Duration(30, 
TimeUnit.SECONDS);
-
+        this.broadcast.set(broadcast);
         this.tracker = tracker;
         this.name = name;
 
@@ -208,6 +209,15 @@ public class MultipointServer {
         return port;
     }
 
+    public boolean getBroadcast() {
+        return broadcast.get();
+    }
+
+    public void setBroadcast(boolean broadcast) {
+        this.broadcast.set(broadcast);
+    }
+
+
     /**
      * Attempt to connect back to the network if
      *  - We aren't already connected
@@ -458,12 +468,14 @@ public class MultipointServer {
         private void heartbeat() throws IOException {
             heartbeats.record();
 
-            final Set<String> strings = tracker.getRegisteredServices();
+            if (broadcast.get()) {
+                final Set<String> strings = tracker.getRegisteredServices();
 //            for (String string : strings) {
 //                trace(string);
 //            }
-            write(strings);
-            state(SelectionKey.OP_READ | SelectionKey.OP_WRITE, 
State.HEARTBEAT);
+                write(strings);
+                state(SelectionKey.OP_READ | SelectionKey.OP_WRITE, 
State.HEARTBEAT);
+            }
         }
     }
 

Modified: 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint?rev=1367847&r1=1367846&r2=1367847&view=diff
==============================================================================
--- 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
 (original)
+++ 
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
 Wed Aug  1 03:01:37 2012
@@ -8,3 +8,4 @@ group                  = default
 heart_rate             = 500
 loopback_mode          = false
 max_missed_heartbeats  = 10
+broadcast              = true


Reply via email to