On 09/04/2009, jfcl...@apache.org <jfcl...@apache.org> wrote:
> Author: jfclere
>  Date: Thu Apr  9 13:00:21 2009
>  New Revision: 763635
>
>  URL: http://svn.apache.org/viewvc?rev=763635&view=rev
>  Log:
>  Move the multi logic to MultiCastSender with
>  the idea to TCP sockets and a list of proxy too.
>
>  Added:
>     tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java
>     tomcat/trunk/java/org/apache/catalina/ha/backend/Sender.java

Should have svn:eol-style=native property ...

>  Modified:
>     tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java
>
>  Modified: 
> tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java
>  URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java?rev=763635&r1=763634&r2=763635&view=diff
>  
> ==============================================================================
>  --- tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java 
> (original)
>  +++ tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java 
> Thu Apr  9 13:00:21 2009
>  @@ -55,8 +55,6 @@
>      public void setPort(int port) { this.port = port; }
>
>      /* for multicasting stuff */
>  -    MulticastSocket s = null;
>  -    InetAddress group = null;
>      String ip = "224.0.1.105"; /* Multicast IP */
>      int multiport = 23364;     /* Multicast Port */
>      int ttl = 16;
>  @@ -70,23 +68,17 @@
>
>      private CollectedInfo coll = null;
>
>  +    private Sender sender = null;
>  +
>      public void containerEvent(ContainerEvent event) {
>      }
>
>      public void lifecycleEvent(LifecycleEvent event) {
>          Object source = event.getLifecycle();
>          if (Lifecycle.PERIODIC_EVENT.equals(event.getType())) {
>  -            if (s == null) {
>  -                try {
>  -                    group = InetAddress.getByName(ip);
>  -                    s = new MulticastSocket(port);
>  -                    s.setTimeToLive(16);
>  -                    s.joinGroup(group);
>  -                } catch (Exception ex) {
>  -                    log.error("Unable to use multicast: " + ex);
>  -                    s = null;
>  -                    return;
>  -                }
>  +            if (sender == null) {
>  +                sender = new MultiCastSender();
>  +                sender.init(this);
>              }
>
>              /* Read busy and ready */
>  @@ -108,19 +100,10 @@
>              }
>              String output = new String();
>              output = "v=1&ready=" + coll.ready + "&busy=" + coll.busy;
>  -            byte[] buf;
>  -            try {
>  -                buf = output.getBytes("US-ASCII");
>  -            } catch (UnsupportedEncodingException ex) {
>  -                buf = output.getBytes();
>  -            }
>  -            DatagramPacket data = new DatagramPacket(buf, buf.length, 
> group, multiport);
>              try {
>  -                s.send(data);
>  +                sender.send(output);
>              } catch (Exception ex) {
>                  log.error("Unable to send colllected load information: " + 
> ex);
>  -                s.close();
>  -                s = null;
>              }
>          }
>      }
>
>  Added: tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java
>  URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java?rev=763635&view=auto
>  
> ==============================================================================
>  --- tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java 
> (added)
>  +++ tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java 
> Thu Apr  9 13:00:21 2009
>  @@ -0,0 +1,79 @@
>  +/*
>  + * Licensed to the Apache Software Foundation (ASF) under one or more
>  + * contributor license agreements.  See the NOTICE file distributed with
>  + * this work for additional information regarding copyright ownership.
>  + * The ASF licenses this file to You under the Apache License, Version 2.0
>  + * (the "License"); you may not use this file except in compliance with
>  + * the License.  You may obtain a copy of the License at
>  + *
>  + *      http://www.apache.org/licenses/LICENSE-2.0
>  + *
>  + * Unless required by applicable law or agreed to in writing, software
>  + * distributed under the License is distributed on an "AS IS" BASIS,
>  + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  + * See the License for the specific language governing permissions and
>  + * limitations under the License.
>  + */
>  +
>  +
>  +package org.apache.catalina.ha.backend;
>  +
>  +import org.apache.juli.logging.Log;
>  +import org.apache.juli.logging.LogFactory;
>  +
>  +import java.net.MulticastSocket;
>  +import java.net.InetAddress;
>  +import java.net.DatagramPacket;
>  +import java.io.UnsupportedEncodingException;
>  +
>  +/*
>  + * Sender to proxies using multicast socket.
>  + */
>  +public class MultiCastSender
>  +    implements Sender {
>  +
>  +    private static Log log = LogFactory.getLog(HeartbeatListener.class);
>  +
>  +    HeartbeatListener config = null;
>  +
>  +    /* for multicasting stuff */
>  +    MulticastSocket s = null;
>  +    InetAddress group = null;
>  +
>  +    public void init(HeartbeatListener config) {
>  +        this.config = config;
>  +    }
>  +
>  +    public int send(String mess) throws Exception {
>  +        if (s == null) {
>  +            try {
>  +                group = InetAddress.getByName(config.getGroup());
>  +                s = new MulticastSocket(config.getMultiport());
>  +                s.setTimeToLive(config.getTtl());
>  +                s.joinGroup(group);
>  +            } catch (Exception ex) {
>  +                log.error("Unable to use multicast: " + ex);
>  +                s = null;
>  +                return -1;
>  +            }
>  +        }
>  +
>  +        byte[] buf;
>  +        try {
>  +            buf = mess.getBytes("US-ASCII");
>  +        } catch (UnsupportedEncodingException ex) {
>  +            buf = mess.getBytes();
>  +        }
>  +        DatagramPacket data = new DatagramPacket(buf, buf.length, group, 
> config.getMultiport());
>  +        try {
>  +            s.send(data);
>  +        } catch (Exception ex) {
>  +            log.error("Unable to send colllected load information: " + ex);
>  +            s.close();
>  +            s = null;
>  +            return -1;
>  +        }
>  +        return 0;
>  +    }
>  +
>  +}
>
>  Added: tomcat/trunk/java/org/apache/catalina/ha/backend/Sender.java
>  URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/Sender.java?rev=763635&view=auto
>  
> ==============================================================================
>  --- tomcat/trunk/java/org/apache/catalina/ha/backend/Sender.java (added)
>  +++ tomcat/trunk/java/org/apache/catalina/ha/backend/Sender.java Thu Apr  9 
> 13:00:21 2009
>  @@ -0,0 +1,36 @@
>  +/*
>  + * Licensed to the Apache Software Foundation (ASF) under one or more
>  + * contributor license agreements.  See the NOTICE file distributed with
>  + * this work for additional information regarding copyright ownership.
>  + * The ASF licenses this file to You under the Apache License, Version 2.0
>  + * (the "License"); you may not use this file except in compliance with
>  + * the License.  You may obtain a copy of the License at
>  + *
>  + *      http://www.apache.org/licenses/LICENSE-2.0
>  + *
>  + * Unless required by applicable law or agreed to in writing, software
>  + * distributed under the License is distributed on an "AS IS" BASIS,
>  + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  + * See the License for the specific language governing permissions and
>  + * limitations under the License.
>  + */
>  +
>  +
>  +package org.apache.catalina.ha.backend;
>  +
>  +/*
>  + * Interface to send data to proxies
>  + *
>  + */
>  +public interface Sender {
>  +
>  +  /**
>  +   * Set the configuration parameters
>  +   */
>  +  public void init(HeartbeatListener config);
>  +
>  +  /**
>  +   * Send the message to the proxies
>  +   */
>  +  public int send(String mess) throws Exception;
>  +}
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>  For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to