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 zum Verzeichnisdienst. Daher werden die Komplikationen verborgen, die bei der Suche nach dem mit einem Dienstendpunkt verknüpften Verzeichniseintrag, der DNS-Suche nach einem oder mehreren der dort gefundenen Hostnamen, dem Versuch, eine Verbindung herzustellen, die Verbindung zu sichern, usw. entstehen. Er kann auch einen Cache mit Informationen aus dem Dienstverzeichnis verwalten.
Konstruktoren und Zerstörer |
|
---|---|
WeaveServiceManager(void)
Diese Methode initialisiert die WeaveServiceManager-Instanz.
|
|
~WeaveServiceManager(void)
Diese Methode zerstört die WeaveServiceManager-Instanz.
|
Ö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 Anwendungs-Callback, um den Zeitpunkt einer ausgehenden Service Directory-Abfrage zu markieren. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Ein Anwendungs-Callback zur Übermittlung von Zeitwerten aus einer Dienstverzeichnisantwort. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Eine Zugriffsfunktion für die Informationen des Stammverzeichnisses. |
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 Callback-Funktion fest, die unmittelbar vor dem Verbindungsaufbau aufgerufen werden soll.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Mit dieser Methode wird eine Verbindungsanfrage abgebrochen.
|
clearCache(void)
|
void
Diese Methode löscht den Status und den Cache des Managers, wenn sich der Status im Terminal kServiceMgrState_Resolved befindet, was bedeutet, dass die 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)
|
Diese Methode initialisiert das Dienstmanager-Objekt.
|
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 beendet“, das vom verknüpften Weave-Austauschkontext gemeldet wird.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Diese Methode verarbeitet das Ereignis „Verbindung abgeschlossen“ für die Abfragetransaktion des Dienstendpunkts.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Diese Methode verarbeitet alle Antwortnachrichten in der Unterhaltung mit dem Verzeichnisdienst.
|
onResponseTimeout(void)
|
void
Diese Methode verarbeitet das Zeitlimitereignis, bei dem keine Antwort vom Verzeichnisdienst empfangen wurde.
|
relocate(WEAVE_ERROR aError)
|
void
Diese Methode verschiebt den Dienstverzeichnis-Cache.
|
relocate(void)
|
void
Diese Methode verschiebt den Dienstverzeichnis-Cache.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Fügen Sie den überschreibenden Verzeichniseintrag eines Hostnamens und einer Port-ID am Anfang der Verzeichnisliste ein.
|
reset(WEAVE_ERROR aError)
|
void
Mit dieser Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
|
reset(void)
|
void
Mit dieser Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
|
unresolve(WEAVE_ERROR aError)
|
void
Diese Methode entwertet den Service Directory-Cache.
|
unresolve(void)
|
void
Diese Methode entwertet den Service Directory-Cache.
|
Kurse |
|
---|---|
nl:: |
Diese Klasse stellt eine einzelne Transaktion dar, die vom Dienstmanager verwaltet wird. |
Öffentliche Typen
@303
@303
Attribute | |
---|---|
kWeave_DefaultSendTimeout
|
Anzahl der Millisekunden, die eine Antwort für die Verzeichnisabfrage empfangen werden muss, bevor das Zeitlimit für den Austauschkontext überschritten wird. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Ein Anwendungs-Callback, der unmittelbar vor dem Verbindungsaufbau erfolgt.
Dieser Callback kann von Anwendungen verwendet werden, um die Argumente zu beobachten und optional zu ändern, die beim Herstellen einer Dienstverbindung an #WeaveConnection::Connect() übergeben werden. Dieser Callback wird sowohl für die Verbindung zum Zieldienstendpunkt als auch für die Verbindung zum Service Directory-Endpunkt aufgerufen, falls eine Verzeichnissuche ausgeführt werden muss.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Ein Anwendungs-Callback, um den Zeitpunkt einer ausgehenden Service Directory-Abfrage zu markieren.
Sie wird aufgerufen, wenn die Anfrageanfrage für einen Dienstendpunkt gesendet wird. Wird für den Abgleich mit OnServiceEndpointQueryEnd verwendet, um die Laufzeit der Nachricht auszugleichen.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Ein Anwendungs-Callback zur Übermittlung von Zeitwerten aus einer Dienstverzeichnisantwort.
Sie wird aufgerufen, wenn wir Zeitinformationen aus der Antwort des Dienstverzeichnisses abrufen. Dieser Callback erfolgt nur, wenn eine Antwort erfolgreich geparst wird und die Zeitinformationen enthalten sind.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Eine Zugriffsfunktion für die Informationen des Stammverzeichnisses.
Sie müssen irgendwo anfangen und mit dem Service-Verzeichnis müssen Sie mit einem Stub-Verzeichnis beginnen, das die Adresse eines Servers enthält, auf den Sie klicken können, um zu allem anderen zu gelangen. Da die Disposition und Herkunft dieser Informationen wahrscheinlich von Gerät zu Gerät variieren kann, 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 beim Ausführen einer Verbindungsanfrage informiert werden. Möglicherweise erhält er einen Statusbericht vom Dienst oder einen intern generierten WEAVE_ERROR. In beiden Fällen kommen die Informationen über diesen Callback.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Öffentliche Funktionen
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Legen Sie eine Callback-Funktion fest, die unmittelbar vor dem Verbindungsaufbau aufgerufen werden soll.
Details | |||
---|---|---|---|
Parameter |
|
WeaveServiceManager
WeaveServiceManager( void )
Diese Methode initialisiert die WeaveServiceManager-Instanz.
Zur weiteren Initialisierung dieser Instanz muss init() aufgerufen werden.
Abbrechen
void cancel( uint64_t aServiceEp, void *aAppState )
Mit dieser Methode wird eine Verbindungsanfrage abgebrochen.
Diese Methode bricht eine Verbindungsanfrage mit der Dienstendpunkt-ID und dem Anwendungsstatusobjekt ab, die zum Zeitpunkt der Anfrage als Kennungen übergeben wurden. Wenn es die letzte Verbindungsanfrage ist, löscht diese Methode auch den Status der ausstehenden Verbindung zum Dienstverzeichnis.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
clearCache
void clearCache( void )
Diese Methode löscht den Status und den Cache des Managers, wenn sich der Status im Terminal kServiceMgrState_Resolved befindet, was bedeutet, dass die 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 übergeordnete Anruf. Es stellt im Wesentlichen eine sichere Verbindung zum Weave-Dienst her, wenn ein Dienstendpunkt und ein Authentifizierungsmodus festgelegt sind, oder stirbt beim Versuch.
Diese Methode kann nur nach dem erfolgreichen Aufruf von init() aufgerufen werden. Eine Verbindungsanfrage kann möglicherweise mit cancel() abgebrochen werden.
Diese Methode kann aufgerufen werden, bevor der lokale Cache mit Daten aus den standardmäßig bereitgestellten Daten oder einer Fahrt zum Verzeichnisdienst gefüllt wird. Der Dienstmanager würde die Anfrage einfach in die Warteschlange stellen, bevor der Cache-Inhalt 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 )
Diese Methode initialisiert das Dienstmanager-Objekt.
Zur Verwendung muss ein Dienstmanagerobjekt 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. nach einem erfolgreichen connect()-Vorgang, füllt diese Methode das bereitgestellte HostPortList-Objekt aus.
Hinweis: Die HostPortList ist an das Objekt WeaveServiceManager gebunden und bleibt gültig, bis der Cache des Dienstverzeichnisses geleert oder eine andere Dienstverzeichnissuche durchgeführt wird.
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, d.h. nach einem erfolgreichen connect()-Vorgang, gibt diese Methode einen Verzeichniseintrag mit einer Dienstendpunkt-ID zurück.
Mit dieser Methode werden die Details der internen Implementierung des Dienstverzeichnisses verfügbar gemacht. Bei Implementierungen sollte die Variante dieser Methode, mit der die HostPortList generiert wird, dringend bevorzugt verwendet werden.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Diese Methode verarbeitet das Ereignis „Verbindung beendet“, das vom verknüpften Weave-Austauschkontext gemeldet wird.
Details | |||
---|---|---|---|
Parameter |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Diese Methode verarbeitet das Ereignis „Verbindung abgeschlossen“ für die Abfragetransaktion des Dienstendpunkts.
Dafür gibt es mehrere Möglichkeiten. Erstens: Die Verbindung könnte fehlgeschlagen sein. In diesem Fall sind wir fertig. Andernfalls ist die Verbindung tatsächlich vollständig 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 )
Diese Methode verarbeitet alle Antwortnachrichten in der Unterhaltung mit dem Verzeichnisdienst.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
onResponseTimeout
void onResponseTimeout( void )
Diese Methode verarbeitet das Zeitlimitereignis, bei dem keine Antwort vom Verzeichnisdienst empfangen wurde.
umziehen
void relocate( WEAVE_ERROR aError )
Diese Methode verschiebt den Dienstverzeichnis-Cache.
Wenn ein Dienstendpunkt einen Statusbericht mit dem Statuscode kStatus_Relocation zurückgibt, könnte die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, indem unresolve() beim ersten Mal aufgerufen wird und reset(), wenn das Problem noch nicht behoben wurde.
Bei dieser Version der Methode – aus Gründen der Abwärtskompatibilität – wird ein Fehler erfasst und protokolliert und dann relocate(void) aufgerufen .
Details | |||
---|---|---|---|
Parameter |
|
relocate(void)
umziehen
void relocate( void )
Diese Methode verschiebt den Dienstverzeichnis-Cache.
Wenn ein Dienstendpunkt einen Statusbericht mit dem Statuscode kStatus_Relocation zurückgibt, könnte die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, indem unresolve() beim ersten Mal aufgerufen wird und reset(), wenn das Problem noch nicht behoben wurde.
Weitere Informationen: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 eines Hostnamens und einer Port-ID am Anfang der Verzeichnisliste ein.
Zurücksetzen
void reset( WEAVE_ERROR aError )
Mit dieser Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
Mit dieser Methode werden alle Status des Dienstmanagers zurückgesetzt, einschließlich des Kommunikationsstatus, des Cache-Status und der Status aller ausstehenden Verbindungsanfragen.
Bei dieser Version der Methode, die wir hier aus Gründen der Abwärtskompatibilität verwenden, wird ein Fehler erfasst und protokolliert und dann reset(void) aufgerufen .
Details | |||
---|---|---|---|
Parameter |
|
reset(void)
Zurücksetzen
void reset( void )
Mit dieser Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
Mit dieser Methode werden alle Dienstmanager-Status zurückgesetzt, einschließlich des Kommunikationsstatus, des Cache-Status und des Status aller ausstehenden Verbindungsanfragen.
Siehe auch:reset(WEAVE_ERROR)
nicht auflösen
void unresolve( WEAVE_ERROR aError )
Diese Methode entwertet den Service Directory-Cache.
Diese Methode legt den Cache-Status des Dienstverzeichnisses fest, sodass der Dienstmanager bei der nächsten Anfrage eine Dienstverzeichnisabfrage abfragt.
Bei dieser Version der Methode – aus Gründen der Abwärtskompatibilität – wird ein Fehler erfasst und protokolliert und dann unresolve(void) aufgerufen .
Details | |||
---|---|---|---|
Parameter |
|
unresolve(void)
nicht auflösen
void unresolve( void )
Diese Methode entwertet den Service Directory-Cache.
Diese Methode legt den Cache-Status des Dienstverzeichnisses fest, sodass der Dienstmanager bei der nächsten Anfrage eine Dienstverzeichnisabfrage abfragt.
Weitere Informationen:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Diese Methode zerstört die WeaveServiceManager-Instanz.