nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Das Manager-Objekt für das Weave-Dienstverzeichnis.
Zusammenfassung
Der Weave-Dienstmanager ist die Hauptschnittstelle für Anwendungen für den Verzeichnisdienst. Dadurch werden die Komplikationen verborgen, die bei der Suche des mit einem Dienstendpunkt verknüpften Verzeichniseintrags, der DNS-Suche für einen oder mehreren der dort gefundenen Hostnamen, dem Versuch, eine Verbindung herzustellen, die Verbindung zu sichern und so weiter, zu verbergen. Außerdem kann er einen Cache mit Informationen aus dem Dienstverzeichnis verwalten.
Konstruktoren und Destruktoren |
|
---|---|
WeaveServiceManager(void)
Mit dieser Methode wird die WeaveServiceManager-Instanz initialisiert.
|
|
~WeaveServiceManager(void)
Mit dieser Methode wird die Instanz WeaveServiceManager zerstört.
|
Öffentliche Typen |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Ein Anwendungs-Callback, der unmittelbar vor dem Verbindungsaufbau erfolgt. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Ein Anwendungsrückruf, um den Zeitpunkt einer ausgehenden Dienstverzeichnisabfrage zu markieren. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Ein Anwendungs-Callback zum Senden von Zeitwerten aus einer Antwort des Dienstverzeichnisses. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Eine Zugriffsfunktion für die Informationen zum Stammverzeichnis. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Ein Handler für Fehler- und Statusbedingungen. |
Öffentliche Funktionen |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Legen Sie eine Rückruffunktion fest, die unmittelbar vor der Verbindungsherstellung aufgerufen werden soll.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Mit dieser Methode wird eine Verbindungsanfrage abgebrochen.
|
clearCache(void)
|
void
Mit dieser Methode werden der Status und der Cache des Managers gelöscht, wenn der Status den Endstatus „kServiceMgrState_Resolved“ hat. Das bedeutet, dass eine Antwort vom Service Directory-Endpunkt empfangen wurde.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
Mit dieser Methode wird eine Verbindung zu einem Weave-Dienst angefordert.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Mit dieser Methode wird das Dienstmanagerobjekt initialisiert.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Mit dieser Methode werden Verzeichnisinformationen für einen Dienstendpunkt abgerufen.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Mit dieser Methode werden Verzeichnisinformationen für einen Dienstendpunkt abgerufen.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Diese Methode verarbeitet das Ereignis „Verbindung geschlossen“, das vom zugehörigen Weave-Austauschkontext gemeldet wird.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Diese Methode verarbeitet das Ereignis „connect completed“ (Verbindung abgeschlossen) für die Abfragetransaktion des Dienstendpunkts.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Mit dieser Methode werden alle Antwortnachrichten in der Unterhaltung mit dem Verzeichnisdienst verarbeitet.
|
onResponseTimeout(void)
|
void
Diese Methode verarbeitet das Zeitüberschreitungsereignis, bei dem keine Antwort vom Verzeichnisdienst empfangen wurde.
|
relocate(WEAVE_ERROR aError)
|
void
Mit dieser Methode wird der Service Directory-Cache neu angeordnet.
|
relocate(void)
|
void
Mit dieser Methode wird der Service Directory-Cache neu angeordnet.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Fügen Sie den überschreibenden Verzeichniseintrag mit einem Hostnamen und einer Port-ID am Anfang der Verzeichnisliste hinzu.
|
reset(WEAVE_ERROR aError)
|
void
Durch diese Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
|
reset(void)
|
void
Mit dieser Methode wird der Dienstmanager auf den ursprünglichen Zustand zurückgesetzt.
|
unresolve(WEAVE_ERROR aError)
|
void
Mit dieser Methode wird der Cache des Dienstverzeichnisses ungültig.
|
unresolve(void)
|
void
Mit dieser Methode wird der Cache des Dienstverzeichnisses ungültig.
|
Klassen |
|
---|---|
nl:: |
Diese Klasse stellt eine einzelne Transaktion dar, die vom Dienstmanager verwaltet wird. |
Öffentliche Typen
@303
@303
Attribute | |
---|---|
kWeave_DefaultSendTimeout
|
Anzahl der Millisekunden, innerhalb derer eine Antwort auf die Verzeichnisabfrage eingehen muss, bevor der Exchange-Kontext abläuft. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Ein Anwendungs-Callback, der unmittelbar vor dem Verbindungsaufbau erfolgt.
Mit diesem Rückruf können Anwendungen die Argumente beobachten und optional ändern, die beim Herstellen einer Dienstverbindung an #WeaveConnection::Connect() übergeben werden. Dieser Rückruf wird sowohl für die Verbindung zum Endpunkt des Zieldienstes als auch für die Verbindung zum Endpunkt von Service Directory aufgerufen, falls eine Verzeichnissuche durchgeführt werden muss.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Ein Anwendungsrückruf, um den Zeitpunkt einer ausgehenden Dienstverzeichnisabfrage zu markieren.
Diese wird aufgerufen, wenn wir dabei sind, eine Dienstendpunkt-Abfrageanfrage zu senden. Wird für den Abgleich mit OnServiceEndpointQueryEnd verwendet, um die Nachrichtenfluktuation zu kompensieren.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Ein Anwendungs-Callback zum Senden von Zeitwerten aus einer Antwort des Dienstverzeichnisses.
Diese Funktion wird aufgerufen, wenn wir Zeitinformationen aus der Antwort der Serviceverzeichnisabfrage erhalten. Hinweis: Dieser Rückruf erfolgt nur, wenn eine Antwort erfolgreich geparst wurde und Zeitinformationen enthält.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Eine Zugriffsfunktion für die Informationen zum Stammverzeichnis.
Irgendwo muss man anfangen und beim Serviceverzeichnis muss man mit einem Stub-Verzeichnis beginnen, das die Adresse eines Servers enthält, über den man auf alles andere zugreifen kann. Da die Verfügbarkeit und Herkunft dieser Informationen wahrscheinlich von Gerät zu Gerät variiert, stellen wir hier einen Accessor-Callback bereit.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabe |
WEAVE_NO_ERROR bei Erfolg, andernfalls wird der Ladevorgang abgebrochen.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Ein Handler für Fehler- und Statusbedingungen.
Ein Nutzer des Dienstmanagers kann auf zwei Arten über Probleme bei der Ausführung einer Verbindungsanfrage informiert werden. Sie kann einen Statusbericht vom Dienst oder einen intern generierten WEAVE_ERROR empfangen. In beiden Fällen werden die Informationen über diesen Callback gesendet.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Öffentliche Funktionen
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Legt eine Callback-Funktion fest, die unmittelbar vor dem Verbindungsaufbau aufgerufen werden soll.
Details | |||
---|---|---|---|
Parameter |
|
WeaveServiceManager
WeaveServiceManager( void )
Mit dieser Methode wird die Instanz WeaveServiceManager initialisiert.
Hinweis: init() muss aufgerufen werden, um diese Instanz weiter zu initialisieren.
Abbrechen
void cancel( uint64_t aServiceEp, void *aAppState )
Mit dieser Methode wird eine Verbindungsanfrage abgebrochen.
Mit dieser Methode wird eine Verbindungsanfrage anhand der Dienstendpunkt-ID und des Anwendungsstatusobjekts abgebrochen, die bei der Anfrage als Kennungen übergeben wurden. Wenn es sich um die letzte Verbindungsanfrage handelt, wird mit dieser Methode auch der ausstehende Verbindungsstatus des Dienstverzeichnisses gelöscht.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
clearCache
void clearCache( void )
Mit dieser Methode werden der Status und der Cache des Managers gelöscht, wenn der Status den Endstatus „kServiceMgrState_Resolved“ hat. Das bedeutet, dass eine Antwort vom Service Directory-Endpunkt empfangen wurde.
verbinden
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Mit dieser Methode wird eine Verbindung zu einem Weave-Dienst angefordert.
Dies ist der Connect-Aufruf der obersten Ebene. Es stellt im Wesentlichen eine sichere Verbindung zum Weave-Dienst her, sofern ein Dienstendpunkt und ein Authentifizierungsmodus angegeben sind, oder schlägt fehl.
Diese Methode kann nur nach einem erfolgreichen Aufruf von init() aufgerufen werden. Eine Verbindungsanfrage kann mit cancel() möglicherweise abgebrochen werden.
Diese Methode kann aufgerufen werden, bevor der lokale Cache mit Daten aus standardmäßig bereitgestellten Daten oder aus einem Aufruf des Verzeichnisdiensts gefüllt wird. Der Dienstmanager würde die Anfrage einfach in die Warteschlange stellen, bevor der Cacheinhalt ermittelt werden kann.
Details | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Rückgabe |
WEAVE_NO_ERROR bei Erfolg, andernfalls ein entsprechender Fehlercode.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Mit dieser Methode wird das Dienstmanagerobjekt initialisiert.
Damit ein Dienstmanagerobjekt verwendet werden kann, muss es initialisiert werden. Nach einem erfolgreichen Aufruf dieser Methode können Clients connect(), lookup() und andere Methoden aufrufen.
Details | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||
Rückgabe |
WEAVE_ERROR_INVALID_ARGUMENT, wenn ein Funktionsargument ungültig ist, andernfalls WEAVE_NO_ERROR.
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Mit dieser Methode werden Verzeichnisinformationen für einen Dienstendpunkt abgerufen.
Wenn das Dienstverzeichnis aufgelöst wurde, d.h. wenn der Vorgang connect() erfolgreich war, wird mit dieser Methode das angegebene HostPortList-Objekt gefüllt.
Hinweis: Die HostPortList ist an das Objekt WeaveServiceManager gebunden. Sie bleibt gültig, bis der Cache des Dienstverzeichnisses geleert wird oder eine weitere Suche im Dienstverzeichnis erfolgt.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Mit dieser Methode werden Verzeichnisinformationen für einen Dienstendpunkt abgerufen.
Wenn das Dienstverzeichnis aufgelöst wurde, also wenn ein connect()-Vorgang erfolgreich war, gibt diese Methode einen Verzeichniseintrag mit einer Dienstendpunkt-ID zurück.
Diese Methode zeigt die Details der internen Implementierung des Dienstverzeichnisses an. Bei Implementierungen sollte dringend die Verwendung der Variante dieser Methode bevorzugt werden, die die HostPortList generiert.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Diese Methode verarbeitet das Ereignis „Verbindung geschlossen“, das vom zugehörigen Weave-Austauschkontext gemeldet wird.
Details | |||
---|---|---|---|
Parameter |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Mit dieser Methode wird das Ereignis „connect completed“ für die Abfragetransaktion des Dienstendpunkts verarbeitet.
Es gibt mehrere Möglichkeiten. Erstens: Die Verbindung könnte fehlgeschlagen sein. In diesem Fall sind wir fertig. Andernfalls ist die Verbindung bereits hergestellt und wir möchten einen Exchange-Kontext öffnen und eine Verzeichnisabfrage senden.
Details | |||
---|---|---|---|
Parameter |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Mit dieser Methode werden alle Antwortnachrichten in der Unterhaltung mit dem Verzeichnisdienst verarbeitet.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
onResponseTimeout
void onResponseTimeout( void )
Diese Methode verarbeitet das Zeitüberschreitungsereignis, bei dem keine Antwort vom Verzeichnisdienst empfangen wurde.
umziehen
void relocate( WEAVE_ERROR aError )
Mit dieser Methode wird der Service Directory-Cache neu angeordnet.
Wenn ein Dienstendpunkt einen Statusbericht mit dem Statuscode „kStatus_Relocated“ zurückgibt, kann die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, indem unresolve() zum ersten Mal und reset() aufgerufen wird, wenn das Problem noch nicht behoben wurde.
Diese Version der Methode – hier zur Abwärtskompatibilität – nimmt einen Fehler auf, protokolliert ihn und ruft dann relocate(void) auf .
Details | |||
---|---|---|---|
Parameter |
|
relocate(void)
umziehen
void relocate( void )
Bei dieser Methode wird der Service Directory-Cache verschoben.
Wenn ein Dienstendpunkt einen Statusbericht mit dem Statuscode „kStatus_Relocated“ zurückgibt, kann die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, indem unresolve() zum ersten Mal und reset() aufgerufen wird, wenn das Problem noch nicht behoben wurde.
Siehe auch:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Fügen Sie den überschreibenden Verzeichniseintrag mit einem Hostnamen und einer Port-ID am Anfang der Verzeichnisliste hinzu.
Zurücksetzen
void reset( WEAVE_ERROR aError )
Mit dieser Methode wird der Dienstmanager auf den ursprünglichen Zustand zurückgesetzt.
Diese Methode setzt alle Dienstmanager-Status zurück, einschließlich Kommunikationsstatus, Cache-Status und Status aller ausstehenden Verbindungsanfragen.
Diese Version der Methode – hier aus Gründen der Abwärtskompatibilität – erstellt und protokolliert einen Fehler und ruft dann reset(void) auf .
Details | |||
---|---|---|---|
Parameter |
|
reset(void)
Zurücksetzen
void reset( void )
Mit dieser Methode wird der Dienstmanager auf den ursprünglichen Zustand zurückgesetzt.
Mit dieser Methode werden alle Status des Dienstmanagers zurückgesetzt, einschließlich des Kommunikationsstatus, des Cache-Status und des Status aller ausstehenden Verbindungsanfragen.
Weitere Informationen:reset(WEAVE_ERROR)
unresolve
void unresolve( WEAVE_ERROR aError )
Mit dieser Methode wird der Cache des Dienstverzeichnisses ungültig.
Mit dieser Methode wird der Cachestatus der Service Directory so festgelegt, dass der Dienstmanager bei der nächsten Anfrage eine Abfrage an die Service Directory sendet.
Diese Version der Methode – hier aus Gründen der Abwärtskompatibilität – erstellt und protokolliert einen Fehler und ruft dann unresolve(void) auf .
Details | |||
---|---|---|---|
Parameter |
|
unresolve(void)
unresolve
void unresolve( void )
Mit dieser Methode wird der Cache des Dienstverzeichnisses ungültig.
Mit dieser Methode wird der Cachestatus der Service Directory so festgelegt, dass der Dienstmanager bei der nächsten Anfrage eine Abfrage an die Service Directory sendet.
Weitere Informationen:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Mit dieser Methode wird die Instanz WeaveServiceManager zerstört.