view src/main/java/alice/daemon/MulticastConnection.java @ 361:60eee1fb0fd3 multicast

create sender with udp
author sugi
date Thu, 15 May 2014 18:29:30 +0900
parents 6cf08aebfc31
children aefbe41fcf12
line wrap: on
line source

package alice.daemon;

import java.io.IOException;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;

import alice.codesegment.SingletonMessage;
import alice.datasegment.Command;

public class MulticastConnection extends Connection {
	private DatagramChannel dc;
	private SocketAddress sAddr;

	public MulticastConnection(DatagramChannel d, SocketAddress s) {
		dc = d;
		sAddr = s;
	}

	// may need to add infomation who send on ds.
	@Override
	public synchronized void write(Command cmd){
		CommandMessage cmdMsg = cmd.convert();
		ByteBuffer buffer;
		try {
			buffer = ByteBuffer.wrap(SingletonMessage.getInstance().write(cmdMsg));
			while (buffer.hasRemaining()){
				dc.send(buffer, sAddr);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	@Override
	public void close(){
		try {
			dc.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void receive(ByteBuffer receiveData){
		try {
			dc.receive(receiveData);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}