package org.robotninjas.riemann.pubsub;
import com.google.common.base.Supplier;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
import org.jboss.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory;
import java.util.concurrent.ExecutorService;
import static java.util.concurrent.Executors.newCachedThreadPool;
public class RiemannPubSub {
private static ExecutorService getExecutorService() {
return newCachedThreadPool(
new ThreadFactoryBuilder()
.setDaemon(true)
.setNameFormat("Riemann RiemannClient Thread")
.build());
}
public static RiemannPubSubClient makeClient(String host, int port) {
return new RiemannPubSubClient(
host, port,
new WebSocketClientHandshakerFactory(),
new Supplier<ClientBootstrap>() {
@Override
public ClientBootstrap get() {
return new ClientBootstrap(new NioClientSocketChannelFactory(getExecutorService(), getExecutorService()));
}
},
MoreExecutors.sameThreadExecutor());
}
public static void main(String[] args) {
final RiemannPubSubClient client = makeClient("localhost", 5556);
try {
final RiemannPubSubConnection connection = client.makeConnection("state = \"ok\"", true, new QueryResultListener() {
@Override
public void handleResult(String result) {
System.out.println(result);
}
});
} catch (Throwable e) {
e.printStackTrace();
}
}
}