diff src/main/java/alice/datasegment/MulticastDataSegmentManager.java @ 361:60eee1fb0fd3 multicast

create sender with udp
author sugi
date Thu, 15 May 2014 18:29:30 +0900
parents 6cf08aebfc31
children 1494d44392a2
line wrap: on
line diff
--- a/src/main/java/alice/datasegment/MulticastDataSegmentManager.java	Thu May 15 15:44:22 2014 +0900
+++ b/src/main/java/alice/datasegment/MulticastDataSegmentManager.java	Thu May 15 18:29:30 2014 +0900
@@ -2,27 +2,48 @@
 
 import java.io.IOException;
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.NetworkInterface;
+import java.net.SocketAddress;
 import java.net.StandardProtocolFamily;
 import java.net.StandardSocketOptions;
 import java.nio.channels.DatagramChannel;
+
 import org.apache.log4j.Logger;
 
 import alice.codesegment.CodeSegment;
-import alice.daemon.Connection;
+import alice.daemon.IncomingUdpConnection;
+import alice.daemon.MulticastConnection;
+import alice.daemon.OutboundTcpConnection;
 
 public class MulticastDataSegmentManager extends DataSegmentManager {
-	Connection connection;
+	MulticastConnection sender;
 	Logger logger;
 	
 	public MulticastDataSegmentManager(final String MCASTADDR, final int port, final String nis) {
 		logger = Logger.getLogger("multicast");
-		connection = new Connection();
-		DatagramChannel dc =  createDatagramChannel(MCASTADDR, port, nis);
+		InetAddress mAddr;
+		try {
+			mAddr = InetAddress.getByName(MCASTADDR);
+
+			DatagramChannel dcr =  createDatagramChannel(mAddr, port, nis);
+			dcr.bind(new InetSocketAddress(port));
+			SocketAddress sAddrr = new InetSocketAddress(mAddr,port);
+			MulticastConnection receiver = new MulticastConnection(dcr, sAddrr);
+			new IncomingUdpConnection(receiver).start();
+			
+			DatagramChannel dcs =  createDatagramChannel(mAddr, port, nis);
+			SocketAddress sAddrs = new InetSocketAddress(mAddr,port);
+			sender = new MulticastConnection(dcs, sAddrs);
+			new OutboundTcpConnection(sender).start(); // OutboundUdpConnection sender
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 		
 	}
 	
-	private DatagramChannel createDatagramChannel(String MCASTADDR, int port, String nis) {
+	private DatagramChannel createDatagramChannel(InetAddress group, int port, String nis) {
 		DatagramChannel dc = null;
 		NetworkInterface ni;
 		try {
@@ -39,7 +60,6 @@
 			dc = DatagramChannel.open(StandardProtocolFamily.INET);
 			dc.setOption(StandardSocketOptions.SO_REUSEADDR, true);
 			dc.setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);
-			InetAddress group = InetAddress.getByName(MCASTADDR);
 			dc.join(group, ni);
 		} catch (Exception e) {
 			e.printStackTrace();