#if Java
import io.moquette.interception.InterceptHandler;
import io.moquette.interception.messages.*;
import io.netty.buffer.ByteBuf;
import anywheresoftware.b4a.BA;
public static class MyHandler implements InterceptHandler {
BA ba;
public MyHandler(B4AClass parent) {
this.ba = parent.getBA();
}
@Override
public String getID() {
return "handler";
}
@Override
public Class<?>[] getInterceptedMessageTypes() {
return ALL_MESSAGE_TYPES;
}
@Override
public void onConnect(InterceptConnectMessage msg) {
this.ba.raiseEventFromUI(this, "broker_connect", msg);
}
@Override
public void onDisconnect(InterceptDisconnectMessage msg) {
this.ba.raiseEventFromUI(this, "broker_disconnect", msg);
}
@Override
public void onConnectionLost(InterceptConnectionLostMessage msg) {
this.ba.raiseEventFromUI(this, "broker_connectionlost", msg);
}
@Override
public void onPublish(InterceptPublishMessage msg) {
String topic = msg.getTopicName();
String clientId = msg.getClientID();
ByteBuf buf = msg.getPayload();
byte[] payload = new byte[buf.readableBytes()];
int readerIndex = buf.readerIndex();
buf.getBytes(readerIndex, payload);
PublishEvent event = new PublishEvent(topic, payload, clientId);
this.ba.raiseEventFromUI(this, "broker_publish", event);
}
@Override
public void onSubscribe(InterceptSubscribeMessage msg) {
this.ba.raiseEventFromUI(this, "broker_subscribe", msg);
}
@Override
public void onUnsubscribe(InterceptUnsubscribeMessage msg) {
this.ba.raiseEventFromUI(this, "broker_unsubscribe", msg);
}
@Override
public void onMessageAcknowledged(InterceptAcknowledgedMessage msg) {
this.ba.raiseEventFromUI(this, "broker_messageacknowledged", msg);
}
public static class PublishEvent {
public String topic;
public byte[] payload;
public String clientId;
public PublishEvent(String topic, byte[] payload, String clientId) {
this.topic = topic;
this.payload = payload;
this.clientId = clientId;
}
}
}
#End If