Coverage Report - org.mule.transport.multicast.MulticastMessageReceiver
 
Classes in this File Line Coverage Branch Coverage Complexity
MulticastMessageReceiver
0%
0/14
0%
0/4
1.333
MulticastMessageReceiver$MulticastWorker
0%
0/5
N/A
1.333
 
 1  
 /*
 2  
  * $Id: MulticastMessageReceiver.java 19191 2010-08-25 21:05:23Z tcarlson $
 3  
  * --------------------------------------------------------------------------------------
 4  
  * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 5  
  *
 6  
  * The software in this package is published under the terms of the CPAL v1.0
 7  
  * license, a copy of which has been included with this distribution in the
 8  
  * LICENSE.txt file.
 9  
  */
 10  
 
 11  
 package org.mule.transport.multicast;
 12  
 
 13  
 import org.mule.api.construct.FlowConstruct;
 14  
 import org.mule.api.endpoint.InboundEndpoint;
 15  
 import org.mule.api.lifecycle.CreateException;
 16  
 import org.mule.transport.AbstractConnector;
 17  
 import org.mule.transport.udp.UdpMessageReceiver;
 18  
 
 19  
 import java.io.IOException;
 20  
 import java.net.DatagramPacket;
 21  
 import java.net.DatagramSocket;
 22  
 import java.net.InetAddress;
 23  
 import java.net.MulticastSocket;
 24  
 import java.net.URI;
 25  
 
 26  
 import javax.resource.spi.work.Work;
 27  
 
 28  0
 public class MulticastMessageReceiver extends UdpMessageReceiver
 29  
 {
 30  
 
 31  
     public MulticastMessageReceiver(AbstractConnector connector, FlowConstruct flowConstruct, InboundEndpoint endpoint)
 32  
             throws CreateException
 33  
     {
 34  0
         super(connector, flowConstruct, endpoint);
 35  0
     }
 36  
 
 37  
     protected DatagramSocket createSocket(URI uri, InetAddress inetAddress) throws IOException
 38  
     {
 39  0
         MulticastSocket socket = new MulticastSocket(uri.getPort());
 40  0
         socket.joinGroup(inetAddress);
 41  0
         return socket;
 42  
     }
 43  
 
 44  
     protected Work createWork(DatagramPacket packet) throws IOException
 45  
     {
 46  0
         return new MulticastWorker(packet);
 47  
     }
 48  
 
 49  0
     public class MulticastWorker extends UdpWorker
 50  
     {
 51  
         public MulticastWorker(DatagramPacket packet)
 52  0
         {
 53  0
             super(socket, packet);
 54  0
         }
 55  
 
 56  
         public void dispose()
 57  
         {
 58  
             // Do not close socket as we reuse it
 59  
             // So do not call super.doDispose();
 60  0
         }
 61  
     }
 62  
 
 63  
     protected void doDispose()
 64  
     {
 65  0
         if (socket != null && !socket.isClosed())
 66  
         {
 67  
             try
 68  
             {
 69  0
                 ((MulticastSocket) socket).leaveGroup(inetAddress);
 70  
             }
 71  0
             catch (IOException e)
 72  
             {
 73  0
                 logger.error("failed to leave group: " + e.getMessage(), e);
 74  0
             }
 75  
         }
 76  0
         super.doDispose();
 77  0
     }
 78  
 
 79  
 }