package mq;
/**
* Created by mpunie on 12/05/2015.
*/
import android.os.AsyncTask;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import misc.tracerengine;
import org.zeromq.ZMQ;
class ZMQTask extends AsyncTask<ZMQService, Void, Void> {
private tracerengine Tracer = null;
private final String mytag = this.getClass().getName();
private ZMQService theContext = null;
public ZMQTask(ZMQService context) {
theContext = context;
SharedPreferences SP_params = PreferenceManager.getDefaultSharedPreferences(context);
Tracer = tracerengine.getInstance(SP_params,context);
Tracer.d(mytag, "contextutons!!!");
}
protected Void doInBackground(ZMQService... params) {
Tracer.d(this.getClass().getSimpleName(), "Task started");
ZMQService service = params[0];
// Prepare our context and subscriber
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket sub = context.socket(ZMQ.SUB);
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(theContext);
String ip = SP.getString("MQaddress", ""); // TODO : use a R. for the default value
String port = SP.getString("MQsubport", "40412"); // TODO : use a R. for the default value
String sub_url = "tcp://" + ip + ":" + port;
sub.connect(sub_url);
sub.subscribe("interface.output".getBytes());
// TODO : recharger la conf quand elle a changé
while (!isCancelled()) {
// Read message contents
try {
String msgId = new String(sub.recv(0));
String msgContent = "";
if (sub.hasReceiveMore()) {
msgContent = new String(sub.recv());
}
Tracer.d(mytag,msgId);
// Do something with the message
service.handleMessage(msgId, msgContent);
} catch (Exception e) {
Tracer.e(mytag, e.getMessage());
}
Tracer.d(mytag, "run");
}
Tracer.d(mytag, "Task ended");
return null;
}
}