package org.robotninjas.riemann.client; import com.aphyr.riemann.Proto; import com.google.common.util.concurrent.ListenableFuture; import org.jboss.netty.bootstrap.ConnectionlessBootstrap; import org.jboss.netty.channel.Channel; import java.io.IOException; import java.util.List; import java.util.concurrent.ExecutionException; public class RiemannUdpConnection implements RiemannConnection { private final Channel channel; private final ConnectionlessBootstrap bootstrap; public RiemannUdpConnection(Channel channel, ConnectionlessBootstrap bootstrap) { this.channel = channel; this.bootstrap = bootstrap; } public void send(Proto.Event e) { final Proto.Msg.Builder msg = Proto.Msg.newBuilder() .addEvents(e); channel.write(msg); } public void send(Iterable<Proto.Event> events) { final Proto.Msg.Builder msg = Proto.Msg.newBuilder() .addAllEvents(events); channel.write(msg); } @Override public boolean isOpen() { return channel.isOpen(); } public ListenableFuture<List<Proto.Event>> query(String query) throws ExecutionException, InterruptedException { final Proto.Msg.Builder msg = Proto.Msg.newBuilder() .setQuery(Proto.Query.newBuilder() .setString(query)); final ReturnableQuery queryMessage = new ReturnableQuery(msg); channel.write(queryMessage); return queryMessage; } @Override public void close() throws IOException { channel.close(); } protected Channel getChannel() { return channel; } }