/[Apache-SVN]/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java
ViewVC logotype

Diff of /tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java	2006/02/13 21:36:29	377498
+++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java	2006/02/13 21:39:52	377499
@@ -415,11 +415,9 @@ public class ReplicationTransmitter impl
     
     /**
      * Send data to one member
-     * FIXME set filtering messages
      * @see org.apache.catalina.cluster.ClusterSender#sendMessage(org.apache.catalina.cluster.ClusterMessage, org.apache.catalina.cluster.Member)
      */
-    public void sendMessage(ClusterMessage message, Member member)
-            throws java.io.IOException {       
+    public void sendMessage(ClusterMessage message, Member member) throws IOException {       
         long time = 0 ;
         if(doTransmitterProcessingStats) {
             time = System.currentTimeMillis();
@@ -440,47 +438,21 @@ public class ReplicationTransmitter impl
      * Send to all senders at same cluster domain as message from address
      * @param message Cluster message to send
      * @since 5.5.10
-     * FIXME Refactor with sendMessage get a sender list from
      */
-    public void sendMessageClusterDomain(ClusterMessage message) 
-         throws java.io.IOException {
-        long time = 0;
-        if (doTransmitterProcessingStats) {
-            time = System.currentTimeMillis();
-        }
-        try {
-            String domain = message.getAddress().getDomain();
-            if(domain == null)
-                throw new RuntimeException("Domain at member not set");
-            ClusterData data = serialize(message);
-            IDataSender[] senders = getSenders();
-            for (int i = 0; i < senders.length; i++) {
-
-                IDataSender sender = senders[i];
-                if(domain.equals(sender.getDomain())) {
-                    try {
-                        boolean success = sendMessageData(data, sender);
-                    } catch (Exception x) {
-                        //THIS WILL NEVER HAPPEN, as sendMessageData swallows the error
-                    }
-                }
-            }
-        } finally {
-            // FIXME better exception handling
-            if (doTransmitterProcessingStats) {
-                addProcessingStats(time);
-            }
-        }
+    public void sendMessageClusterDomain(ClusterMessage message) throws IOException {
+        sendMessage(message,true);
     
     }
 
+    public void sendMessage(ClusterMessage message) throws IOException {
+        sendMessage(message,false);
+    }
+
     /**
      * send message to all senders (broadcast)
      * @see org.apache.catalina.cluster.ClusterSender#sendMessage(org.apache.catalina.cluster.ClusterMessage)
-     * FIXME Refactor with sendMessageClusterDomain!
      */
-    public void sendMessage(ClusterMessage message)
-            throws java.io.IOException {
+    public void sendMessage(ClusterMessage message, boolean domainOnly) throws IOException {
         long time = 0;
         if (doTransmitterProcessingStats) {
             time = System.currentTimeMillis();
@@ -491,19 +463,19 @@ public class ReplicationTransmitter impl
             for (int i = 0; i < senders.length; i++) {
 
                 IDataSender sender = senders[i];
-                try {
-                    sendMessageData(data, sender);
-                } catch (Exception x) {
-                    // FIXME remember exception and send it at finally
-                }
+                //domain filter
+                String domain = message.getAddress().getDomain();
+                if ( domainOnly && !(domain.equals(sender.getDomain())) ) continue;
+                sendMessageData(data, sender);
             }
         } finally {
-            // FIXME better exception handling
             if (doTransmitterProcessingStats) {
                 addProcessingStats(time);
             }
         }
     }
+        
+    
 
     /**
      * start the sender and register transmitter mbean
@@ -828,9 +800,9 @@ public class ReplicationTransmitter impl
      * @throws java.io.IOException If an error occurs
      */
     protected boolean sendMessageData(ClusterData data,
-                                   IDataSender sender) throws java.io.IOException {
+                                      IDataSender sender) {
         if (sender == null)
-            throw new java.io.IOException("Sender not available. Make sure sender information is available to the ReplicationTransmitter.");
+            throw new RuntimeException("Sender not available. Make sure sender information is available to the ReplicationTransmitter.");
         try {
             // deprecated not needed DataSender#pushMessage can handle connection
             if (autoConnect) {

 

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26