Mercurial > hg > Database > Alice
view src/main/java/alice/datasegment/MulticastDataSegmentManager.java @ 360:6cf08aebfc31 multicast
add MulticastConnection and DataSegmentManager
author | sugi |
---|---|
date | Thu, 15 May 2014 15:44:22 +0900 |
parents | |
children | 60eee1fb0fd3 |
line wrap: on
line source
package alice.datasegment; import java.io.IOException; import java.net.InetAddress; import java.net.NetworkInterface; 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; public class MulticastDataSegmentManager extends DataSegmentManager { Connection connection; 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); } private DatagramChannel createDatagramChannel(String MCASTADDR, int port, String nis) { DatagramChannel dc = null; NetworkInterface ni; try { ni = NetworkInterface.getByName(nis); if (ni==null) { System.err.println("Can't open network interface "+nis); throw new IOException(); } if (!ni.supportsMulticast()) { System.err.println("Network interface does not support multicast"+nis); throw new IOException(); } 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(); } return dc; } @Override public void put(String key, Object val) { } @Override public void update(String key, Object val) { } @Override public void take(Receiver receiver, CodeSegment cs) {} @Override public void peek(Receiver receiver, CodeSegment cs) {} @Override public void quickPut(String key, Object val) { } @Override public void quickUpdate(String key, Object val) { } @Override public void quickPeek(Receiver receiver, CodeSegment cs) {} @Override public void quickTake(Receiver receiver, CodeSegment cs) {} @Override public void remove(String key) { } @Override public void shutdown() { } @Override public void close() { } @Override public void finish() { } @Override public void ping(String returnKey) {} @Override public void response(String returnKey) {} }