Interaqqt/src/main/java/ee/lunasqu/interaqqt/MQTTConnection.java

56 lines
1.6 KiB
Java

package ee.lunasqu.interaqqt;
import ee.lunasqu.interaqqt.events.ConnectionEstablishedEvent;
import ee.lunasqu.interaqqt.events.DisconnectedEvent;
import org.bukkit.Bukkit;
import org.eclipse.paho.client.mqttv3.*;
public class MQTTConnection {
IMqttClient publisher;
public MQTTConnection (String host, String id) {
MqttConnectOptions opts = new MqttConnectOptions();
opts.setAutomaticReconnect(true);
opts.setCleanSession(true);
opts.setConnectionTimeout(10);
try {
this.publisher = new MqttClient(host, id);
this.publisher.connect();
} catch (MqttException e) {
Bukkit.getPluginManager().callEvent(new DisconnectedEvent());
e.printStackTrace();
}
Bukkit.getPluginManager().callEvent(new ConnectionEstablishedEvent());
}
public boolean sendStateChange(String key, String value) {
if (!this.isAlive()) return false;
MqttMessage msg = new MqttMessage(value.getBytes());
msg.setQos(1);
msg.setRetained(true);
try {
this.publisher.publish(key, msg);
} catch (MqttException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean isAlive() {
return this.publisher.isConnected();
}
public void die() {
if (this.publisher != null && this.publisher.isConnected()) {
try {
this.publisher.disconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
Bukkit.getPluginManager().callEvent(new DisconnectedEvent());
}
}