nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Résumé
Remarque:Cette classe encapsule les détails du protocole d'envoi de commandes afin de simplifier les mécanismes liés aux applications. L'application fournit un PacketBuffer contenant la charge utile de la commande, ainsi qu'un ensemble facultatif d'arguments qui modifient le contenu de l'en-tête de la commande ainsi que le comportement de la commande. L'utilité de ce wrapper pour la gestion des commandes est en effet limitée, principalement en raison de la complexité/la flexibilité de la validation de la sécurité et de la sérialisation/désérialisation des données.
Les détails de la validation des commandes restent à déterminer
Cette classe permet également aux applications de déterminer si les données d'un récepteur TraitDataSink associé ont rattrapé les effets secondaires de la commande (en fonction de la version fournie dans la réponse de la commande). L'application se charge de gérer le stockage de cet objet.
Liaison Weave
Un objet de cette classe peut être initialisé avec une liaison Weave, qui servira de liaison par défaut à utiliser pour envoyer des commandes. L'utilisateur peut également fournir une Binding à chaque appel de SendCommand(), qui remplacera la Binding par défaut. Il n'est pas nécessaire de fournir une Binding par défaut, mais toute liaison fournie à CommandSender doit déjà être initialisée.
EventCallback
L'utilisateur doit définir une fonction de ce type s'il souhaite être informé des événements qui se produisent après l'envoi de la commande (voir la section "Événements de l'API" ci-dessous). Elle peut être NULL si l'utilisateur ne se soucie pas de ce qui se passe après l'envoi de la commande.
Événements de l'API
Les événements suivants sont les résultats possibles après l'envoi d'une commande Command:
CommunicationError
Une erreur s'est produite lors de la création ou de l'envoi de la commande Command, ou lors de l'attente d'une réponse. Des exemples d'erreurs qui peuvent se produire en attendant une réponse sont les erreurs clés ou la fermeture inattendue d'une connexion. Le motif de l'erreur sera contenu dans l'argument InEventParam du gestionnaire EventCallback.
InProgressReceived
Le destinataire peut envoyer un message "En cours" qui signifie que la commande Command (Commande) a bien été reçue, mais n'est pas encore terminée. Une fois l'opération terminée, le destinataire enverra une réponse ou un rapport d'état. Envoi d'un message "en cours" message n'est pas obligatoire.
StatusReportReceived
La réception d'un rapport d'état implique une erreur lors du traitement de la commande. Le StatusReport est accessible via l'élément InEventParam.
ResponseReceived
La réception d'une réponse implique que le destinataire Command a bien géré la commande Command. La réponse peut contenir une charge utile ou non. Si l'application souhaite conserver le tampon de paquets, elle peut appeler ExchangeContext::AddRef() pour augmenter le nombre de références.
Types publics |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
énum |
Attributs publics |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Fonctions statiques publiques |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Fonctions publiques |
|
---|---|
Close(bool aAbortNow)
|
void
|
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
|
|
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
|
void
|
Structs |
|
---|---|
nl:: |
Données renvoyées à l'expéditeur par le destinataire de la commande personnalisée. |
nl:: |
Données renvoyées à un objet CommandSender à partir d'une fonction EventCallback. |
nl:: |
Encapsule les arguments à transmettre à SendCommand(). |
nl:: |
Types publics
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Attributs publics
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Fonctions statiques publiques
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Fonctions publiques
Fermer
void Close( bool aAbortNow )
Init
WEAVE_ERROR Init( nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams )