Add publish code
This commit is contained in:
parent
8648e99370
commit
ca5e20c7a0
@ -379,4 +379,45 @@ L'applicazione, all'interno dell'architettura, svolge il ruolo di *publisher* e
|
|||||||
utilizzati esclusivamente nella modalità *C*.
|
utilizzati esclusivamente nella modalità *C*.
|
||||||
Questi messaggi trasportano come *payload* il report TCN discusso nella @sec:report e vengono inviati solo quando l'*upload* è richiesto dall'utente.
|
Questi messaggi trasportano come *payload* il report TCN discusso nella @sec:report e vengono inviati solo quando l'*upload* è richiesto dall'utente.
|
||||||
|
|
||||||
|
Anche in questo caso si è scelto di *wrappare* la libreria utilizzata all'interno di una classe sviluppata in proprio.
|
||||||
|
Poiché l'unica funzionalità di nostro interesse è la *publish* è stato necessario scrivere un'unica funzione statica che si occupa di eseguire quest'operazione.
|
||||||
|
Questa funzione, riportata nel @lst:mqtt-publish, permette di specificare il topic e il contenuto del messaggio da pubblicare.
|
||||||
|
Inoltre attraverso una *lambda expression* è possibile specificare come comportarsi in caso di errori.
|
||||||
|
|
||||||
|
``` {.kotlin #lst:mqtt-publish caption="Funzione wrap che consente la publicazione di un messaggio MQTT."}
|
||||||
|
fun publish(
|
||||||
|
context: Context,
|
||||||
|
topic: String,
|
||||||
|
payload: ByteArray,
|
||||||
|
onFailure: () -> Unit = LOG_ERROR
|
||||||
|
) {
|
||||||
|
val clientId = MqttClient.generateClientId()
|
||||||
|
val client = MqttAndroidClient(
|
||||||
|
context.applicationContext,
|
||||||
|
BROKER_URL,
|
||||||
|
clientId
|
||||||
|
)
|
||||||
|
|
||||||
|
client.connect().actionCallback = object: IMqttActionListener {
|
||||||
|
override fun onSuccess(asyncActionToken: IMqttToken?) {
|
||||||
|
val msg = MqttMessage(payload).apply {
|
||||||
|
qos = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
client.publish(topic, msg).apply {
|
||||||
|
actionCallback = Disconnect(client)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFailure(
|
||||||
|
asyncActionToken: IMqttToken?,
|
||||||
|
exception: Throwable?
|
||||||
|
) {
|
||||||
|
onFailure()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# Riferimenti
|
# Riferimenti
|
||||||
|
Loading…
Reference in New Issue
Block a user