Module addon
Le module addon permet à l'agent Alemca d'appeler un service distant exposé via gRPC. Le module effectue des appels dynamiques.
Import
Pour importer le module dans Lua :
Configuration YAML
Exemple à placer dans la section iot.modules du fichier de configuration :
Détails de la configuration
name(string, requis) : Identifiant de l'instance de module (doit être unique).addonType(string, requis) : Type d'addon — utilisé pour déterminer le nom du service. Exemples :can,canbus, etc.address(string, requis) : Adresse du service gRPC sous la formehost:port.timeout(integer) : Timeout en secondes (défaut :5).useTLS(boolean) : Sitrue, la connexion gRPC utilise TLS (défaut :false).
Si addonType vaut can ou canbus, le loader mappe le nom de service vers canbus.CANService.
API Lua
Liste des fonctions
| Fonction | Signature Lua | Rôle | Retour (succès) | Retour (échec) |
|---|---|---|---|---|
connect |
bool, err = addon.connect() |
Ouvre la connexion gRPC. | true, nil |
nil, "msg" |
disconnect |
bool, err = addon.disconnect() |
Ferme la connexion gRPC. | true, nil |
nil, "msg" |
call |
resp, err = addon.call(method[, req]) |
Appel unary gRPC. | table, nil |
nil, "msg" |
stream |
iter, err = addon.stream(method[, req]) |
Ouvre un stream serveur. | iterator, nil |
nil, "msg" |
| Champs | addon.name, addon.type |
Métadonnées du module. | – | – |
addon.connect()
Tente d'ouvrir la connexion gRPC vers le service distant.
- Paramètres : Aucun
- Retour :
true, nilen cas de succès.nil, "<message d'erreur>"en cas d'échec.
addon.disconnect()
Ferme la connexion gRPC.
- Paramètres : Aucun
- Retour :
true, nilen cas de succès.nil, "<message d'erreur>"en cas d'échec.
addon.call(methodName[, reqTable])
Effectue un appel unary vers la méthode gRPC spécifiée.
- Paramètres :
methodName(string) : Nom de la méthode à appeler.reqTable(table, optionnel) : Table Lua représentant le message d'entrée.- Retour :
- La table Lua contenant la réponse du service.
nil, "<message d'erreur>"en cas d'échec.
Note : Le module doit être connecté avant d'appeler cette fonction.
addon.stream(methodName[, reqTable])
Ouvre un stream serveur (server-side streaming) vers la méthode gRPC spécifiée.
- Paramètres :
methodName(string) : Nom de la méthode à appeler.reqTable(table, optionnel) : Table Lua représentant le message d'entrée.- Retour :
- Un itérateur Lua utilisable avec
for msg, err in iterator do ... end. nil, "<message d'erreur>"en cas d'échec.
Note : Le module doit être connecté avant d'appeler cette fonction.
- Retour :
- En cas de succès :
true,nil. - En cas d'erreur :
nil, message d'erreur.
addon.disconnect()
Ferme la connexion gRPC.
-
Paramètres : Aucun.
-
Retour :
- En cas de succès :
true,nil. - En cas d'erreur :
nil, message d'erreur.
addon.call(methodName[, reqTable])
Effectue un appel unary vers la méthode spécifiée.
- Paramètres :
methodName(string) : Nom de la méthode à appeler.-
reqTable(table, optionnel) : Table Lua représentant le message d'entrée. -
Retour :
- En cas de succès :
responseTable,nil. - En cas d'erreur :
nil, message d'erreur.
addon.stream(methodName[, reqTable])
Ouvre un stream serveur (server-side streaming).
- Paramètres :
methodName(string) : Nom de la méthode de streaming.-
reqTable(table, optionnel) : Table Lua représentant le message d'entrée. -
Retour :
- En cas de succès : un itérateur Lua utilisable avec
for msg, err in iterator do ... end. - En cas d'erreur :
nil, message d'erreur.
Note : Si le module n'est pas connecté, call et stream renvoient une erreur indiquant qu'il faut appeler connect() d'abord.
Exemple complet
Connexion, appel unary et déconnexion :
local addon = require("addon") -- le nom dépend de l'enregistrement fait par le module
local ok, err = addon.connect()
if not ok then
print("connect error:", err)
return
end
local resp, err = addon.call("GetDBCVersion", {})
if not resp then
print("call error:", err)
else
-- traiter resp (table Lua)
print("response:", resp)
end
addon.disconnect()
Itération sur un stream serveur :
local it, err = addon.stream("SubscribeFrames", {})
if not it then
print("stream error:", err)
return
end
for msg, err in it do
if err then
print("stream recv error:", err)
break
end
-- msg est une table Lua contenant le message protobuf converti
print(msg)
end
Champs Lua associés
addon.name: Retourne le nom de l'instance du module.addon.type: Retourne le type du module ("addon").