nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Resumen
Nota: Esta clase encapsula los detalles del protocolo del envío de comandos, lo que simplifica la mecánica involucrada para las aplicaciones. La aplicación proporciona un PacketBuffer que contiene la carga útil del comando, así como un conjunto opcional de argumentos que alteran el contenido del encabezado del comando, así como el comportamiento del comando. La utilidad de este wrapper para el control de comandos es limitada, principalmente debido a la complejidad y flexibilidad que implica la validación de seguridad y la serialización o deserialización de datos.
Los detalles de la validación del comando aún no están por definir
Esta clase también ayuda a las aplicaciones a inferir si los datos de un TraitDataSink asociado alcanzaron los efectos secundarios del comando (en función de la versión proporcionada en la respuesta del comando). La aplicación es responsable de administrar el almacenamiento de ese objeto.
Vinculación de tejido
Se puede inicializar un objeto de esta clase con una vinculación de Weave, que funcionará como la vinculación predeterminada que se usará para enviar comandos. El usuario también puede proporcionar una vinculación a cada llamada de SendCommand(), que anulará la vinculación predeterminada. No es necesario proporcionar una Binding predeterminada; sin embargo, cualquier vinculación proporcionada a CommandSender ya debe estar inicializada.
EventCallback
El usuario debe definir una función de este tipo si desea recibir actualizaciones sobre los eventos que ocurren después del envío del comando (consulta "Eventos de la API" a continuación). Puede ser NULL si al usuario no le interesa lo que sucede después de que se envía el comando.
Eventos de la API
Los siguientes eventos son los posibles resultados después de enviar un Command:
CommunicationError
Se produjo un error mientras se formaba o enviaba el Command, o mientras se esperaba una respuesta. Algunos ejemplos de errores que pueden ocurrir mientras se espera una respuesta son los errores clave o el cierre inesperado de una conexión. El motivo del error estará contenido en el argumento InEventParam del controlador EventCallback.
InProgressReceived
El destinatario puede enviar un mensaje "en curso" que indique que se recibió el comando, pero aún no se completó. Una vez que se complete, el destinatario enviará un Response o StatusReport. No es necesario enviar un mensaje de "en curso".
StatusReportReceived
Si recibes un StatusReport, quiere decir que se produjo un error durante el procesamiento del Command. Se puede acceder a StatusReport a través de InEventParam.
ResponseReceived
Recibir una respuesta implica que el destinatario del comando controló correctamente el comando. La respuesta puede contener una carga útil o no. Si la aplicación desea mantener el búfer del paquete, puede llamar a ExchangeContext::AddRef() para aumentar el recuento de referencias.
Tipos públicos |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
Atributos públicos |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Funciones estáticas públicas |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Funciones públicas |
|
---|---|
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:: |
Datos que el destinatario del comando personalizado muestra al remitente. |
nl:: |
Datos que se muestran en un objeto CommandSender desde una función EventCallback. |
nl:: |
Encapsula argumentos que se pasarán a SendCommand(). |
nl:: |
Tipos públicos
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Atributos públicos
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Funciones estáticas públicas
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Funciones públicas
Cerrar
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 )