/* * 作成日: 2008/12/30 */ package jp.ac.fit.asura.nao.webots; import java.nio.ByteBuffer; import jp.ac.fit.asura.nao.DatagramService; import com.cyberbotics.webots.controller.Emitter; import com.cyberbotics.webots.controller.Receiver; import com.cyberbotics.webots.controller.Robot; /** * @author sey * * @version $Id: $ * */ class Webots6DatagramService implements DatagramService { private Receiver receiver; private Emitter emitter; /** * */ public Webots6DatagramService(Robot robot) { emitter = robot.getEmitter("emitter"); receiver = robot.getReceiver("receiver"); receiver.enable(Webots6Player.SIMULATION_STEP); } public void receive(ByteBuffer buf) { if (receiver.getQueueLength() > 0) { byte[] data = receiver.getData(); buf.put(data, 0, Math.min(data.length, buf.remaining())); receiver.nextPacket(); } } public byte[] receive() { if (receiver.getQueueLength() > 0) { byte[] data = receiver.getData(); receiver.nextPacket(); return data; } return null; } public int send(ByteBuffer buf) { byte[] tmp = new byte[buf.remaining()]; buf.get(tmp, 0, buf.remaining()); return emitter.send(tmp); } }