56 lines
1.6 KiB
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());
|
|
}
|
|
}
|