package com.rummble.fireeagle;
import java.util.Set;
import org.apache.log4j.BasicConfigurator;
import com.rummble.fireeagle.location.LocationEvent;
public class TestConsumer implements FireeagleConsumerListener {
private static final String CMD_SUBSCRIBE = "subscribe";
private static final String CMD_UNSUBSCRIBE = "unsubscribe";
private static final String CMD_SUBSCRIPTIONS = "subscriptions";
private static final String CMD_WAIT = "wait";
private boolean finished = false;
public void waitForEvents() throws InterruptedException
{
while(!finished)
{
Thread.sleep(500);
}
}
public void locationEvent(LocationEvent loc)
{
if (loc != null)
{
System.out.println(loc.toString());
}
}
public void subscribeSuccess(String token)
{
System.out.println("Subscribe success for " + token);
finished = true;
}
public void subscribeFailure(String token,int errorCode,String message)
{
System.out.println("Subcribe failure for token " + token + " error code:" + errorCode + " message:" + message);
finished = true;
}
public void subscriptionsSuccess(Set<String> tokens)
{
for(String token: tokens)
{
System.out.println("Subscription to " + token);
}
finished = true;
}
public void subscriptionsFailure(String token,int errorCode,String message)
{
System.out.println("Subcriptions failure for token " + token + " error code:" + errorCode + " message:" + message);
finished = true;
}
public void unsubscribeSuccess(String token)
{
System.out.println("Unsubscribe success for " + token);
finished = true;
}
public void unsubscribeFailure(String token,int errorCode,String message)
{
System.out.println("Unsubcriptions failure for token " + token + " error code:" + errorCode + " message:" + message);
finished = true;
}
/**
* @param args
*/
public static void main(String[] args) {
String token = null;
String tokenSecret = null;
String consumerKey = null;
String consumerSecret = null;
String cmd = null;
String username = null;
String password = null;
String server = null;
String feServer = "fireeagle.com";
String resource = "fePubSub";
String node = null;
boolean smackDebug = false; // requires smackx-debug.jar in classpath
// Set up a simple configuration that logs on the console.
BasicConfigurator.configure();
for(int i=0;i<args.length;i++)
{
if ("-cmd".equals(args[i]))
cmd = args[++i];
else if ("-t".equals(args[i]))
token = args[++i];
else if ("-ts".equals(args[i]))
tokenSecret = args[++i];
else if ("-ck".equals(args[i]))
consumerKey = args[++i];
else if ("-cs".equals(args[i]))
consumerSecret = args[++i];
else if ("-u".equals(args[i]))
username = args[++i];
else if ("-p".equals(args[i]))
password = args[++i];
else if ("-s".equals(args[i]))
server = args[++i];
else if ("-fs".equals(args[i]))
feServer = args[++i];
else if ("-r".equals(args[i]))
resource = args[++i];
else if ("-n".equals(args[i]))
node = args[++i];
else if ("-debug".equals(args[i]))
smackDebug = true;
}
if (cmd == null)
{
System.out.println("Must have cmd: -cmd subscribe|unsubscribe|subscriptions|wait");
return;
}
if (username == null)
{
System.out.println("Must supply XMPP username: -u");
return;
}
if (password == null)
{
System.out.println("Must supply password for XMPP username: -p");
return;
}
if (server == null)
{
System.out.println("Must supply an XMPP server to log into: -s");
return;
}
if (CMD_SUBSCRIBE.equals(cmd) || CMD_UNSUBSCRIBE.equals(cmd) || CMD_SUBSCRIPTIONS.equals(cmd))
{
if (token == null)
{
System.out.println("Must supply token: -t");
return;
}
if (tokenSecret == null)
{
System.out.println("Must supply token secret: -ts");
return;
}
if (consumerKey == null)
{
System.out.println("Must supply consumer key: -ck");
return;
}
if (tokenSecret == null)
{
System.out.println("Must supply token secret: -ts");
return;
}
}
else if (!CMD_WAIT.equals(cmd))
{
System.out.println("Unknown cmd: -cmd subscribe|unsubscribe|subscriptions|wait");
return;
}
if (node != null)
FireeagleConsumer.setPubsubUserNode(node);
FireeagleConsumer consumer = new FireeagleConsumer(username,password,resource,server,feServer);
if (smackDebug)
consumer.setDebug(true);
System.out.print("Connecting to server " + server + "...");
if (!consumer.connect())
{
System.out.println("Failed to connect to server");
return;
}
System.out.println("success");
TestConsumer tc = new TestConsumer();
consumer.setListener(tc);
if (CMD_SUBSCRIBE.equals(cmd))
{
consumer.subscribe(consumerKey,consumerSecret, token, tokenSecret);
}
else if (CMD_UNSUBSCRIBE.equals(cmd))
{
consumer.unsubscribe(consumerKey,consumerSecret, token, tokenSecret);
}
else if (CMD_SUBSCRIPTIONS.equals(cmd))
{
consumer.subscriptions(consumerKey,consumerSecret, token, tokenSecret);
}
try {
tc.waitForEvents();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}