nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Obiekt menedżera katalogu usługi Weave.
Podsumowanie
Menedżer usługi Weave jest głównym interfejsem aplikacji do usługi katalogowej. Ukrywa ona komplikacje związane z wyszukiwaniem wpisu w katalogu powiązanego z punktem końcowym usługi, wyszukiwaniem w DNS co najmniej jednej nazwy hosta, próbą połączenia, zabezpieczeniem połączenia itp. Może też zarządzać pamięcią podręczną informacji z katalogu usługi.
Konstruktory i niszczyciele |
|
---|---|
WeaveServiceManager(void)
Ta metoda inicjalizuje wystąpienie WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Ta metoda niszczy instancję WeaveServiceManager.
|
Typy dostępu publicznego |
|
---|---|
@303{
|
enum | typ wyliczeniowy |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Wywołanie zwrotne aplikacji wykonane bezpośrednio przed nawiązaniem połączenia. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
wywołanie zwrotne aplikacji, które oznacza czas wysłania zapytania do katalogu usług; |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Wywołanie zwrotne aplikacji w celu dostarczenia wartości czasu z odpowiedzi katalogu usług. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Funkcja akcesora dla informacji o katalogu głównym. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Obsługa błędów i warunków stanu. |
Funkcje publiczne |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Ustaw funkcję wywołania zwrotnego, która zostanie wywołana bezpośrednio przed nawiązaniem połączenia.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Ta metoda anuluje prośbę o połączenie.
|
clearCache(void)
|
void
Ta metoda czyści stan i pamięć podręczną menedżera, jeśli stan to stan terminala kServiceMgrState_resolved, co oznacza, że otrzymano odpowiedź z punktu końcowego Katalogu usług.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
Żądania tej metody łączą się z usługą Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Ta metoda inicjuje obiekt menedżera usługi.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Ta metoda wyszukuje informacje z katalogu dla punktu końcowego usługi.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Ta metoda wyszukuje informacje o katalogu dla punktu końcowego usługi.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Ta metoda obsługuje zdarzenie zamknięcia połączenia zgłaszane przez powiązany kontekst wymiany Weave.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Ta metoda obsługuje zdarzenie polegające na zakończeniu połączenia dla transakcji zapytania o punkt końcowy usługi.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Ta metoda obsługuje wszystkie odpowiedzi w wątku z usługą katalogową.
|
onResponseTimeout(void)
|
void
Ta metoda obsługuje zdarzenie przekroczenia limitu czasu, w którym nie została odebrana odpowiedź z usługi katalogowej.
|
relocate(WEAVE_ERROR aError)
|
void
Ta metoda przenosi pamięć podręczną katalogu usługi.
|
relocate(void)
|
void
Ta metoda przenosi pamięć podręczną katalogu usługi.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Dodaj na początku listy katalogów wpis w katalogu nadrzędnym z nazwą hosta i identyfikatorem portu.
|
reset(WEAVE_ERROR aError)
|
void
Ta metoda resetuje menedżera usługi do stanu początkowego.
|
reset(void)
|
void
Ta metoda resetuje menedżera usługi do stanu początkowego.
|
unresolve(WEAVE_ERROR aError)
|
void
Ta metoda unieważnia pamięć podręczną katalogu usługi.
|
unresolve(void)
|
void
Ta metoda unieważnia pamięć podręczną katalogu usług.
|
Zajęcia |
|
---|---|
nl:: |
Ta klasa reprezentuje pojedynczą transakcję zarządzaną przez menedżera usługi. |
Typy publiczne
@303
@303
Właściwości | |
---|---|
kWeave_DefaultSendTimeout
|
Liczba milisekund, w których musi zostać otrzymana odpowiedź na zapytanie o katalog, zanim nastąpi przekroczenie limitu czasu kontekstu wymiany. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
wywołanie zwrotne aplikacji wykonane bezpośrednio przed nawiązaniem połączenia.
Aplikacje mogą używać tego wywołania zwrotnego do obserwowania i opcjonalnie zmiany argumentów przekazywanych do funkcji #WeaveConnection::Connect() podczas nawiązywania połączenia z usługą. Ten wywołanie zwrotne będzie wywoływane zarówno w przypadku połączenia z punktem końcowym usługi docelowej, jak i w przypadku połączenia z punktem końcowym katalogu usług, jeśli trzeba przeprowadzić wyszukiwanie w katalogu.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
wywołanie zwrotne aplikacji, które oznacza czas wysłania zapytania do katalogu usług;
Jest on wywoływany, gdy zamierzamy wysłać żądanie zapytania do punktu końcowego usługi. Jest on używany do dopasowania do wartości OnServiceEndpointQueryEnd w celu zrekompensowania czasu przesyłania wiadomości.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Wywołanie zwrotne aplikacji w celu dostarczenia wartości czasu z odpowiedzi katalogu usług.
Ta funkcja jest wywoływana, gdy otrzymujemy informacje o czasie z odpowiedzi na zapytanie katalogu usług. Wywołanie zwrotne występuje tylko wtedy, gdy odpowiedź została pomyślnie przeanalizowana i zawierają informacje o czasie
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Funkcja dostępu do informacji o katalogu głównym.
Trzeba zacząć od czegoś, a w przypadku katalogu usług trzeba zacząć od katalogu zastępczego, który zawiera adres serwera, na który można się udać, aby uzyskać dostęp do wszystkiego innego. Ponieważ sposób i źródło pochodzenia tych informacji mogą się różnić w zależności od urządzenia, udostępniamy tutaj funkcję wywołania obsługi.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
||||
Zwroty |
WEAVE_NO_ERROR w przypadku powodzenia, w przeciwnym razie proces ładowania zostanie przerwany.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Moduł obsługi warunków błędów i stanu.
Użytkownik menedżera usług może zostać poinformowany o problemach z wykonaniem żądania połączenia w jeden z 2 sposobów. Może ono otrzymać raport o stanie usługi lub wygenerowany wewnętrznie błąd WEAVE_ERROR. W obu przypadkach informacje są przekazywane podczas tego połączenia zwrotnego.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
Funkcje publiczne
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Ustaw wywołanie zwrotne bezpośrednio przed nawiązaniem połączenia.
Szczegóły | |||
---|---|---|---|
Parametry |
|
WeaveServiceManager
WeaveServiceManager( void )
Ta metoda inicjalizuje wystąpienie WeaveServiceManager.
Pamiętaj, że aby dalej zainicjować tę instancję, musisz wywołać metodę init().
anuluj
void cancel( uint64_t aServiceEp, void *aAppState )
Ta metoda anuluje prośbę o połączenie.
Ta metoda anuluje żądanie połączenia z użyciem identyfikatora punktu końcowego usługi i obiektu stanu aplikacji przekazanego w momencie wysłania żądania jako identyfikatory. Jeśli jest to ostatnie żądanie połączenia, ta metoda usuwa również stan oczekującego połączenia z katalogiem usług.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
clearCache
void clearCache( void )
Ta metoda czyści stan i pamięć podręczną menedżera, jeśli stan jest w terminalu kServiceMgrState_Resolved, co oznacza, że odpowiedź z punktu końcowego katalogu usług została odebrana.
połącz
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Ta metoda żąda połączenia z usługą Weave.
Jest to połączenie najwyższego poziomu. Zasadniczo tworzy bezpieczne połączenie z usługą Weave z uwzględnieniem punktu końcowego usługi i trybu uwierzytelniania albo urządzenie kończy się niepowodzeniem.
Tę metodę można wywołać tylko po udanym wywołaniu init(), a żądanie połączenia można potencjalnie anulować przez funkcję cancel().
Ta metoda może zostać wywołana, zanim lokalny bufor zostanie wypełniony danymi z domyślnie udostępnionych danych lub z podróży do usługi katalogu. Menedżer usługi po prostu umieści żądanie w kolejce, zanim będzie można określić zawartość pamięci podręcznej.
Szczegóły | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||
Zwroty |
WEAVE_NO_ERROR po powodzeniu. w przeciwnym razie odpowiedni kod błędu.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Ta metoda inicjuje obiekt menedżera usług.
Aby można było używać obiektu menedżera usługi, musi on zostać zainicjowany. Po pomyślnym wywołaniu tej metody klienci mogą zacząć wywoływać metody connect(), lookup() i inne.
Szczegóły | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||
Zwroty |
WEAVE_ERROR_INVALID_ARGUMENT, jeśli argument funkcji jest nieprawidłowy; w przeciwnym razie WEAVE_NO_ERROR.
|
wyszukiwanie
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Ta metoda wyszukuje informacje o katalogu dla punktu końcowego usługi.
Jeśli katalog usług został już rozwiązany, czyli w przypadku udanej operacji connect(), ta metoda uzupełni podany obiekt HostPortList.
Uwaga: lista HostPortList jest powiązana z obiektem WeaveServiceManager. pozostaje ważny do momentu wyczyszczenia pamięci podręcznej katalogu usług lub innego wyszukiwania katalogu usług.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
wyszukiwanie
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Ta metoda wyszukuje informacje z katalogu dla punktu końcowego usługi.
Jeśli katalog usług został rozwiązany, czyli jeśli operacja connect() zakończyła się powodzeniem, ta metoda zwróci wpis katalogu na podstawie identyfikatora punktu końcowego usługi.
Ta metoda ujawnia szczegóły wewnętrznej implementacji katalogu usługi. W przypadku implementacji należy zdecydowanie preferować użycie wariantu tej metody, który generuje HostPortList.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Ta metoda obsługuje zdarzenie zamknięcia połączenia zgłoszone przez powiązany kontekst wymiany Weave.
Szczegóły | |||
---|---|---|---|
Parametry |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Ta metoda obsługuje zdarzenie polegające na zakończeniu połączenia dla transakcji zapytania o punkt końcowy usługi.
Jest kilka możliwości. Po pierwsze, połączenie mogło nie zostać nawiązane, w którym przypadku skończyliśmy. W przeciwnym razie połączenie jest już ustanowione i chcemy otworzyć kontekst wymiany i przesłać zapytanie do książki adresowej.
Szczegóły | |||
---|---|---|---|
Parametry |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Ta metoda obsługuje wszystkie odpowiedzi w rozmowie z usługą katalogową.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
onResponseTimeout
void onResponseTimeout( void )
Ta metoda obsługuje zdarzenie przekroczenia limitu czasu, w którym nie została otrzymana odpowiedź z usługi katalogowej.
przenieś
void relocate( WEAVE_ERROR aError )
Ta metoda przenosi pamięć podręczną katalogu usług.
Gdy punkt końcowy usługi zwróci raport stanu z kodem stanu kStatus_Relocated, aplikacja może wywołać funkcję unresolve(), aby wyczyścić pamięć podręczną i anulować żądania połączenia. Ta metoda upraszcza obsługę błędów, ponieważ po raz pierwszy wywołuje funkcję unresolve(), a potem, jeśli problem nie został jeszcze rozwiązany, funkcję reset().
Ta wersja metody, która zapewnia zgodność wsteczną, pobiera i rejestruje błąd, a następnie wywołuje metodę relocate(void) .
Szczegóły | |||
---|---|---|---|
Parametry |
|
relocate(void)
przenieś
void relocate( void )
Ta metoda przenosi pamięć podręczną katalogu usługi.
Gdy punkt końcowy usługi zwróci raport stanu z kodem stanu kStatus_Relocated, aplikacja może wywołać funkcję unresolve(), aby wyczyścić pamięć podręczną i anulować żądania połączenia. Ta metoda upraszcza obsługę błędów przez wywołanie metody unresolve() za pierwszym razem i reset(), jeśli problem nie został jeszcze rozwiązany.
Zobacz też:przenieś(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Dodaj nadrzędny wpis katalogu zawierający nazwę hosta i identyfikator portu na początku listy katalogów.
zresetuj
void reset( WEAVE_ERROR aError )
Ta metoda powoduje przywrócenie menedżera usług do stanu początkowego.
Ta metoda resetuje wszystkie stany menedżera usługi, w tym stan komunikacji, stan pamięci podręcznej i stan wszystkich oczekujących połączeń.
Ta wersja metody, która zapewnia zgodność wsteczną, pobiera i rejestruje błąd, a następnie wywołuje metodę reset(void) .
Szczegóły | |||
---|---|---|---|
Parametry |
|
reset(void)
zresetuj
void reset( void )
Ta metoda powoduje przywrócenie menedżera usług do stanu początkowego.
Ta metoda resetuje wszystkie stany menedżera usługi, w tym stan komunikacji, stan pamięci podręcznej i stan wszystkich oczekujących żądań połączenia.
Zobacz też:reset(WEAVE_ERROR)
unresolve
void unresolve( WEAVE_ERROR aError )
Ta metoda unieważnia pamięć podręczną katalogu usługi.
Ta metoda ustawia stan pamięci podręcznej katalogu usługi, aby przy następnym żądaniu menedżer usługi wysłał zapytanie do katalogu usługi.
Ta wersja metody – tutaj ze względu na zgodność wsteczną – przyjmuje i rejestruje błąd, a potem wywołuje unresolve(void).
Szczegóły | |||
---|---|---|---|
Parametry |
|
unresolve(void)
unresolve
void unresolve( void )
Ta metoda unieważnia pamięć podręczną katalogu usługi.
Ta metoda ustawia stan pamięci podręcznej katalogu usługi, aby przy następnym żądaniu menedżer usługi wysłał zapytanie do katalogu usługi.
Zobacz też:unresolve(WEAVE_ERROR)