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