View Javadoc

1   
2   package org.neo.swarm.util.network.jrms;
3   
4   import java.io.IOException;
5   import java.net.DatagramPacket;
6   import java.net.InetAddress;
7   
8   import org.neo.swarm.util.network.multicast.Receiver;
9   
10  import com.sun.multicast.reliable.RMException;
11  import com.sun.multicast.reliable.transport.InvalidMulticastAddressException;
12  import com.sun.multicast.reliable.transport.InvalidTransportProfileException;
13  import com.sun.multicast.reliable.transport.IrrecoverableDataException;
14  import com.sun.multicast.reliable.transport.RMPacketSocket;
15  import com.sun.multicast.reliable.transport.SessionDoneException;
16  import com.sun.multicast.reliable.transport.TransportProfile;
17  import com.sun.multicast.reliable.transport.lrmp.LRMPTransportProfile;
18  import com.sun.multicast.util.UnsupportedException;
19  
20  /***
21   * @author navery
22   */
23  public class JRMSReceiver implements Receiver {
24  
25  	protected RMPacketSocket socket;
26  
27  	public JRMSReceiver(InetAddress inetAddress, int port) {
28  		this(inetAddress, port, TransportProfile.RECEIVER);
29  	}
30  	public JRMSReceiver(InetAddress inetAddress, int port, int transportProfile) {
31  		try {
32  			LRMPTransportProfile profile = new LRMPTransportProfile(inetAddress, port);
33  			profile.setTTL((byte) 1);
34  			profile.setOrdered(true);
35  			this.socket = profile.createRMPacketSocket(transportProfile);
36  		} catch (InvalidMulticastAddressException ex) {
37  			ex.printStackTrace();
38  		} catch (InvalidTransportProfileException ex){
39  			ex.printStackTrace();
40  		} catch (IOException ex){
41  			ex.printStackTrace();
42  		} catch (UnsupportedException ex){
43  			ex.printStackTrace();
44  		}
45  	}
46  
47  	public byte[] read() {
48  		try {
49  			DatagramPacket packet = socket.receive();
50  			return packet.getData();
51  		} catch (IrrecoverableDataException ex) {
52  			ex.printStackTrace();
53  		} catch (SessionDoneException ex) {
54  			ex.printStackTrace();
55  		} catch (IOException ex) {
56  			ex.printStackTrace();
57  		} catch (RMException ex) {
58  			ex.printStackTrace();
59  		}
60  		return null;
61  	}
62  
63  	public void close() {
64  		socket.close();
65  	}
66  }