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. Es kann auch einen Cache mit Dienstverzeichnisinformationen verwalten.
Konstruktoren und Zerstörer |
|
---|---|
WeaveServiceManager(void)
Mit dieser Methode wird die WeaveServiceManager-Instanz initialisiert.
|
|
~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 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, um Zeitwerte aus einer Service Directory-Antwort zu senden. |
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
Legt eine Callback-Funktion fest, die unmittelbar vor dem Verbindungsaufbau aufgerufen werden soll.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Diese Methode bricht eine Verbindungsanfrage ab.
|
clearCache(void)
|
void
Diese Methode löscht den Status und den Cache des Managers, wenn sich der Status im Terminal-Status kServiceMgrState_Resolved befindet. Dies 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 Dienstmanagerobjekt.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Diese Methode sucht nach Verzeichnisinformationen für einen Dienstendpunkt.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Diese Methode sucht nach Verzeichnisinformationen für einen Dienstendpunkt.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Diese Methode verarbeitet das Ereignis „Verbindung geschlossen“, das vom verknüpften Weave-Austauschkontext gemeldet wird.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Diese Methode verarbeitet das Verbindungsabschlussereignis für die Dienstendpunkt-Abfragetransaktion.
|
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
Bei dieser Methode wird der Service Directory-Cache verschoben.
|
relocate(void)
|
void
Bei dieser Methode wird der Service Directory-Cache verschoben.
|
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
Durch diese Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
|
reset(void)
|
void
Durch diese Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
|
unresolve(WEAVE_ERROR aError)
|
void
Bei dieser Methode wird der Dienstverzeichnis-Cache entwertet.
|
unresolve(void)
|
void
Bei dieser Methode wird der Dienstverzeichnis-Cache entwertet.
|
Klassen |
|
---|---|
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 muss, bevor das Zeitlimit des Exchange-Kontexts ü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 während des Aufbaus 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 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 einen Abgleich mit OnServiceEndpointQueryEnd verwendet, um die Nachrichtenfluktuation zu kompensieren.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Ein Anwendungs-Callback, um Zeitwerte aus einer Service Directory-Antwort zu senden.
Dieses wird aufgerufen, wenn wir Zeitinformationen aus der Service Directory-Anfrageantwort abrufen. Dieser Callback würde nur erfolgen, wenn eine Antwort erfolgreich geparst wurde und Zeitinformationen enthalten sind.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Eine Zugriffsfunktion für die Informationen zum Stammverzeichnis.
Beginnen Sie irgendwo mit dem Dienstverzeichnis und mit einem Stub-Verzeichnis, das die Adresse eines Servers enthält, auf den Sie für alles andere zugreifen können. Da die Disposition und Herkunft dieser Informationen wahrscheinlich von Gerät zu Gerät unterschiedlich sein kann, stellen wir hier einen Callback für die Zugriffsfunktion 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 eine von zwei Arten über Probleme beim Ausführen einer Verbindungsanfrage informiert werden. Sie kann einen Statusbericht vom Dienst oder einen intern generierten WEAVE_ERROR empfangen. In beiden Fällen erhalten die Informationen über diesen Callback.
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 WeaveServiceManager-Instanz initialisiert.
Zur weiteren Initialisierung der Instanz muss init() aufgerufen werden.
Abbrechen
void cancel( uint64_t aServiceEp, void *aAppState )
Diese Methode bricht eine Verbindungsanfrage ab.
Diese Methode bricht eine Verbindungsanfrage anhand der Dienstendpunkt-ID und dem Anwendungsstatusobjekt ab, das zum Zeitpunkt der Anfrage als Kennungen übergeben wurde. Wenn es sich um die letzte Verbindungsanfrage handelt, löscht diese Methode auch alle ausstehenden Dienstverzeichnis-Verbindungsstatus.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
clearCache
void clearCache( void )
Diese Methode löscht den Status und den Cache des Managers, wenn sich der Status im Terminal-Status kServiceMgrState_Resolved befindet. Dies 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 Verbindungsaufruf auf oberster Ebene. Es stellt im Wesentlichen eine sichere Verbindung zum Weave-Dienst her, wenn ein Dienstendpunkt und ein Authentifizierungsmodus vorhanden sind oder der Versuch abgebrochen wird.
Diese Methode kann nur nach einem erfolgreichen Aufruf von init() aufgerufen werden und eine Verbindungsanfrage kann potenziell durch cancel() abgebrochen werden.
Diese Methode kann aufgerufen werden, bevor der lokale Cache entweder mit Daten aus standardmäßig bereitgestellten Daten oder einer Fahrt zum Verzeichnisdienst gefüllt wird. Der Dienstmanager stellt die Anfrage einfach in die Warteschlange, 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 Dienstmanagerobjekt.
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 )
Diese Methode sucht nach Verzeichnisinformationen für einen Dienstendpunkt.
Wenn das Dienstverzeichnis aufgelöst wurde, also wenn ein connect()-Vorgang erfolgreich war, füllt diese Methode das angegebene HostPortList-Objekt aus.
Hinweis: Die HostPortList ist an das Objekt WeaveServiceManager gebunden. Sie bleibt so lange gültig, bis der Service Directory-Cache geleert oder eine weitere Suche im Service Directory erfolgt.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Diese Methode sucht nach Verzeichnisinformationen für einen Dienstendpunkt.
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 verknüpften Weave-Austauschkontext gemeldet wird.
Details | |||
---|---|---|---|
Parameter |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Diese Methode verarbeitet das Verbindungsabschlussereignis für die Dienstendpunkt-Abfragetransaktion.
Es gibt mehrere Möglichkeiten. Erstens könnte die Verbindung fehlgeschlagen sein. In diesem Fall sind wir fertig. Andernfalls ist die Verbindung tatsächlich 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 )
Bei dieser Methode wird der Service Directory-Cache verschoben.
Wenn ein Dienstendpunkt einen Statusbericht mit dem Statuscode „kStatus_Replaces“ zurückgibt, könnte die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, da unresolve() zum ersten Mal und reset() aufgerufen wird, wenn das Problem noch nicht behoben wurde.
Diese Version der Methode – hier aus Gründen der Abwärtskompatibilität – erfasst und protokolliert einen Fehler 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_Relocation“ zurückgibt, könnte die Anwendung unresolve() aufrufen, um den Cache zu leeren und Verbindungsanfragen abzubrechen. Diese Methode vereinfacht die Fehlerbehandlung, da unresolve() zum ersten Mal und reset() aufgerufen wird, 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 )
Durch diese Methode wird der Dienstmanager auf seinen Ausgangszustand 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 )
Durch diese Methode wird der Dienstmanager auf seinen Ausgangszustand zurückgesetzt.
Diese Methode setzt alle Dienstmanager-Status zurück, einschließlich Kommunikationsstatus, Cache-Status und Status aller ausstehenden Verbindungsanfragen.
Weitere Informationen:reset(WEAVE_ERROR)
nicht lösen
void unresolve( WEAVE_ERROR aError )
Bei dieser Methode wird der Dienstverzeichnis-Cache entwertet.
Diese Methode legt den Cache-Status des Dienstverzeichnisses so fest, dass der Dienstmanager bei der nächsten Anfrage eine Dienstverzeichnisabfrage ausgibt.
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 |
|
ungelöst(nicht aufgelöst)
nicht lösen
void unresolve( void )
Bei dieser Methode wird der Dienstverzeichnis-Cache entwertet.
Diese Methode legt den Cache-Status des Dienstverzeichnisses so fest, dass der Dienstmanager bei der nächsten Anfrage eine Dienstverzeichnisabfrage ausgibt.
Weitere Informationen:unresolved(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Diese Methode zerstört die WeaveServiceManager-Instanz.