blob: aace55267af2c1c2e3d594195d770de8097d1b6f [file] [log] [blame]
package org.eclipse.osee.ote.endpoint;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import org.eclipse.osee.ote.OTEException;
import org.eclipse.osee.ote.message.event.OteEventMessage;
/**
* Launches a Thread that monitors a queue for data to send to specified UDP endpoints.
*
* @author b1528444
*/
public class OteUdpEndpointInlineSender implements OteEndpointSender {
private static final int SEND_BUFFER_SIZE = 1024 * 512;
private final InetSocketAddress address;
public OteUdpEndpointInlineSender(InetSocketAddress address) {
this.address = address;
}
@Override
public InetSocketAddress getAddress() {
return address;
}
@Override
public void send(OteEventMessage message) {
try {
DatagramChannel channel = DatagramChannel.open();
if (channel.socket().getSendBufferSize() < SEND_BUFFER_SIZE) {
channel.socket().setSendBufferSize(SEND_BUFFER_SIZE);
}
channel.socket().setReuseAddress(true);
channel.configureBlocking(true);
ByteBuffer buffer = ByteBuffer.allocate(SEND_BUFFER_SIZE);
buffer.put(message.getData());
buffer.flip();
channel.send(buffer, address);
} catch (IOException e) {
throw new OTEException(e);
}
}
@Override
public void stop() {
//not needed
}
@Override
public boolean isClosed() {
return false;
}
@Override
public void setDebug(boolean debug) {
//not needed
}
@Override
public void start() {
//not needed
}
}