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{
  kWeave_DefaultSendTimeout = 15000
}
enum | typ wyliczeniowy
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Wywołanie zwrotne aplikacji wykonane bezpośrednio przed nawiązaniem połączenia.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
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::OnServiceEndpointQueryEndWithTimeInfo
void(*
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::StatusHandler
void(*
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::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

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
[in] timeQueryReceiptMsec
Liczba milisekund od początku epoki POSIX, kiedy zapytanie zostało odebrane po stronie serwera.
[in] timeProcessMsec
Liczba milisekund poświęconych na przetworzenie tego zapytania.

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
[out] aDirectory
Wskaźnik do bufora, w którym można zapisać informacje o katalogu.
[in] aLength
Długość danego bufora w bajtach.
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
[in] anAppState
Wskaźnik do obiektu aplikacji, który został przekazany do odpowiedniego wywołania conect().
[in] anError
Kod błędu Weave wskazujący, że podczas próby wykonania żądania połączenia wystąpił błąd. W przypadku braku błędu i dostępności raportu stanu będzie to WEAVE_NO_ERROR.
[in] aStatusReport
Wskaźnik do raportu o stanie wygenerowanego przez usługę katalogu zdalnego. W przypadku braku raportu o stanie oraz błędu wewnętrznego w poprzednim argumencie, ten argument powinien zawierać wartość NULL.

Funkcje publiczne

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Ustaw wywołanie zwrotne bezpośrednio przed nawiązaniem połączenia.

Szczegóły
Parametry
[in] aConnectBegin
Wskaźnik do funkcji wywołania zwrotnego. Wartość NULL wyłącza wywołanie zwrotne.

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
[in] aServiceEp
Identyfikator punktu końcowego usługi żądania, które zostało anulowane.
[in] anAppState
Wskaźnik do obiektu stanu aplikacji przekazanego wywołaniu connect().

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
[in] aServiceEp
Identyfikator punktu końcowego usługi zdefiniowany w pliku ServiceDirectory.h dla interesującej nas usługi.
[in] aAuthMode
Tryb uwierzytelniania używany przy nawiązywaniu połączenia z wybraną usługą.
[in] aAppState
Wskaźnik do obiektu stanu aplikacji przekazywany do funkcji wywołujących jako argument.
[in] aStatusHandler
Wywołanie zwrotne w przypadku błędu, który wystąpił przed zakończeniem połączenia.
[in] aConnectionCompleteHandler
Wywołanie zwrotne do wywołania w przypadku, gdy żądane połączenie zostanie ukończone. Pamiętaj, że może wystąpić błąd połączenia z kodem błędu Weave.
[in] aConnectTimeoutMsecs
Opcjonalny limit czasu połączenia TCP w milisekundach.
[in] aConnectIntf
Opcjonalny interfejs, za pomocą którego zostanie nawiązane połączenie.
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
[in] aExchangeMgr
Wskaźnik do menedżera wymiany, który ma być używany do wszystkich wymian profili katalogu usług.
[in] aCache
Wskaźnik do bufora, który może być używany do zapisywania informacji o katalogu w pamięci podręcznej.
[in] aCacheLen
Długość pamięci podręcznej (w bajtach).
[in] aAccessor
Wywołanie zwrotne zdefiniowane w pliku ServiceDirectory.h w celu wczytania katalogu głównego jako punktu początkowego do wyszukiwania katalogu.
[in] aDirAuthMode
Tryb uwierzytelniania używany podczas komunikacji z usługą katalogu.
[in] aServiceEndpointQueryBegin
Wskaźnik funkcji typu OnServiceEndpointQueryPoczątek, który jest wywoływany na początku żądania katalogu usług i umożliwia kodowi aplikacji oznaczenie godziny, jeśli chce użyć synchronizacji czasu oferowanej przez protokół usługi katalogu usług.
[in] aServiceEndpointQueryEndWithTimeInfo
Wskaźnik funkcji typu OnServiceEndpointQueryEndWithTimeInfo, który jest wywoływany po otrzymaniu katalogu usługi, który umożliwia aplikacjom synchronizację z usługą Weave przy użyciu pól czasu podanych w odpowiedzi. To wywołanie zwrotne zostanie wykonane po otrzymaniu odpowiedzi z informacją o czasie przez menedżera usługi. Pamięć podręczna powinna zostać wypełniona przed wykonaniem połączenia zwrotnego.
[in] aConnectBegin
Wskaźnik funkcji typu OnConnectRozpoczęcie, który jest wywoływany bezpośrednio przed nawiązaniem połączenia, dzięki czemu aplikacje mogą obserwować i opcjonalnie modyfikować argumenty przekazywane do funkcji #WeaveConnection::Connect(). Wartość NULL (domyślna) wyłącza wywołanie zwrotne.
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
[in] aServiceEp
Identyfikator punktu końcowego usługi do wyszukania.
[out] outHostPortList
Wskaźnik do listy HostPortList, która zostanie uzupełniona po pomyślnym wyszukaniu wpisu w katalogu. Nie może zawierać wartości NULL.
Zwracane wartości
WEAVE_NO_ERROR
po sukces; w przeciwnym razie odpowiedni kod błędu.
WEAVE_ERROR_INVALID_SERVICE_EP
jeśli nie znaleziono danego punktu końcowego usługi.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jeśli katalog zawiera nieznany typ wpisu katalogu.

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
[in] aServiceEp
Identyfikator punktu końcowego usługi do wyszukania.
[out] aControlByte
Wskaźnik miejsca, w którym należy zapisać bajt kontrolny wpisu katalogu.
[out] aDirectoryEntry
Wskaźnik wskazujący na wpis w katalogu.
Zwracane wartości
WEAVE_NO_ERROR
po sukces; w przeciwnym razie odpowiedni kod błędu.
WEAVE_ERROR_INVALID_SERVICE_EP
jeśli nie znaleziono danego punktu końcowego usługi.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jeśli katalog zawiera nieznany typ wpisu katalogu.

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
[in] aError
Błąd Weave wskazujący przyczynę zamknięcia połączenia.

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
[in] aError
błąd Weave, jeśli wystąpił jakikolwiek błąd podczas konfigurowania połączenia;

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
[in] aProfileId
Identyfikator profilu dla tej przychodzącej wiadomości.
[in] aMsgType
Typ właściwy dla profilu dla tej wiadomości.
[in] aMsg
Treść wiadomości.

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
[in] aError
pojawi się błąd do zapisania.
Patrz też:
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
[in] aError
Błąd, który spowodował wykonanie tej operacji.
Zobacz też:
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
[in] aError
Błąd, który wywołał tę operację.
Patrz też:
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)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Ta metoda niszczy instancję WeaveServiceManager.