nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

Obiekt menedżera katalogu usług Weave.

Podsumowanie

Menedżer usługi Weave to główny interfejs aplikacji do usługi katalogowej. W ten sposób ukrywa komplikacje związane z wyszukiwaniem wpisu w katalogu powiązanym z punktem końcowym usługi, wyszukiwaniem DNS co najmniej jednej znalezionej nazwy hosta, próbami nawiązania połączenia, zabezpieczeniem połączenia itd. Może też zarządzać pamięcią podręczną informacji z katalogu usług.

Konstruktorzy i niszczyciele

WeaveServiceManager(void)
Ta metoda inicjuje instancję WeaveServiceManager.
~WeaveServiceManager(void)
Ta metoda niszczy instancję WeaveServiceManager.

Typy publiczne

@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 w celu oznaczenia godziny zapytania wychodzącego 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 z katalogu usług.
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor
Funkcja akcesora informująca o katalogu głównym.
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
Moduł obsługi warunków błędów i stanu.

Funkcje publiczne

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Ustaw funkcję wywołania zwrotnego, która będzie wywoływana bezpośrednio przed nawiązaniem połączenia.
cancel(uint64_t aServiceEp, void *aAppState)
void
Ta metoda anuluje żądanie połączenia.
clearCache(void)
void
Ta metoda czyści stan i pamięć podręczną menedżera, jeśli stan jest w stanie terminala kServiceMgrState_resolved, co oznacza, że odebrano odpowiedź z punktu końcowego usługi Service Directory.
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.
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 w katalogu dla punktu końcowego usługi.
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Ta metoda wyszukuje informacje w katalogu dla punktu końcowego usługi.
onConnectionClosed(WEAVE_ERROR aError)
void
Ta metoda obsługuje zdarzenie zamknięcia połączenia zgłoszone przez powiązany kontekst giełdy Weave.
onConnectionComplete(WEAVE_ERROR aError)
void
Ta metoda obsługuje zdarzenie zakończenia połączenia na potrzeby transakcji zapytania do punktu końcowego usługi.
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Ta metoda obsługuje każdą wiadomość z odpowiedzią w rozmowie z usługą katalogową.
onResponseTimeout(void)
void
Ta metoda obsługuje zdarzenie przekroczenia limitu czasu, w przypadku którego nie otrzymano odpowiedzi z usługi katalogowej.
relocate(WEAVE_ERROR aError)
void
Ta metoda relokuje pamięć podręczną katalogu usług.
relocate(void)
void
Ta metoda relokuje pamięć podręczną katalogu usług.
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
Dodaj na początku listy katalogów wpis w katalogu zastępującym zawierający nazwę hosta i identyfikator 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ług.
unresolve(void)
void
Ta metoda unieważnia pamięć podręczną katalogu usług.

Zajęcia

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

Ta klasa reprezentuje jedną transakcję zarządzaną przez menedżera usługi.

Typy publiczne

@303

 @303
Właściwości
kWeave_DefaultSendTimeout

Liczba milisekund, na jaką należy odebrać odpowiedź na zapytanie katalogowe, zanim minie limit czasu kontekstu giełdy.

OnConnectBegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Wywołanie zwrotne aplikacji wykonane bezpośrednio przed nawiązaniem połączenia.

Tego wywołania zwrotnego mogą używać aplikacje do obserwowania i opcjonalnie zmieniania argumentów przekazywanych do #WeaveConnection::Connect() podczas nawiązywania połączenia z usługą. To wywołanie zwrotne będzie wywoływane zarówno w przypadku połączenia z docelowym punktem końcowym usługi, jak i połączenia z punktem końcowym usługi Service Directory w przypadku konieczności przeszukiwania katalogu.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

Wywołanie zwrotne aplikacji w celu oznaczenia godziny zapytania wychodzącego katalogu usług.

Jest ono wywoływane, gdy mamy wysłać żądanie zapytania punktu końcowego usługi. Jest używana do dopasowania do OnServiceEndpointQueryEnd w celu skompensowania czasu wyświetlania wiadomości.

OnServiceEndpointQueryEndWithTimeInfo

void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)

Wywołanie zwrotne aplikacji w celu dostarczenia wartości czasu z odpowiedzi z katalogu usług.

Jest ono wywoływane, gdy otrzymamy informacje o czasie z odpowiedzi na zapytanie katalogu usług. Pamiętaj, że wywołanie zwrotne ma miejsce tylko wtedy, gdy odpowiedź zostanie poprawnie przeanalizowana i dołącz informacje o czasie.

Szczegóły
Parametry
[in] timeQueryReceiptMsec
Liczba ms od początku epoki POSIX, gdy zapytanie zostało odebrane po stronie serwera.
[in] timeProcessMsec
Liczba ms na przetwarzanie tego zapytania.

RootDirectoryAccessor

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

Funkcja akcesora informująca o katalogu głównym.

Od czegoś trzeba zacząć, a katalog usług musi zaczynać się od katalogu krótkoterminowego zawierającego adres serwera, do którego można uzyskać dostęp w pozostałych przypadkach. Rozmieszczenie i pochodzenie tych informacji może się różnić w zależności od urządzenia, dlatego udostępniamy tutaj wywołanie zwrotne akcesora.

Szczegóły
Parametry
[out] aDirectory
Wskaźnik bufora do zapisywania informacji 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ługi może zostać poinformowany o problemach podczas próby wykonania żądania połączenia na jeden z dwóch sposobów. Może otrzymać raport o stanie z usługi lub może otrzymać wewnętrznie wygenerowany błąd WEAVE_ERROR. W obu przypadkach informacje pochodzą z wywołania 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ępnego raportu o stanie wyświetla się wartość WEAVE_NO_ERROR.
[in] aStatusReport
Wskaźnik do raportu o stanie wygenerowany przez usługę katalogu zdalnego. Ten argument ma wartość NULL w przypadku, gdy nie było raportu o stanie, a w poprzednim argumencie został przekazany błąd wewnętrzny.

Funkcje publiczne

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Ustaw funkcję wywołania zwrotnego, która będzie wywoływana bezpośrednio przed nawiązaniem połączenia.

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

WeaveServiceManager

 WeaveServiceManager(
  void
)

Ta metoda inicjuje instancję WeaveServiceManager.

Pamiętaj, że do dalszej zainicjowania tej instancji należy wywołać metodę init().

anuluj

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

Ta metoda anuluje żądanie połączenia.

Ta metoda anuluje żądanie połączenia z uwzględnieniem identyfikatora punktu końcowego usługi i obiektu stanu aplikacji przekazanego w czasie żądania jako identyfikatorów. Jeśli jest to ostatnie żądanie połączenia, ta metoda usuwa też wszystkie oczekujące połączenia z katalogiem usług.

Szczegóły
Parametry
[in] aServiceEp
Identyfikator punktu końcowego usługi, którego dotyczy anulowane żądanie.
[in] anAppState
Wskaźnik do obiektu stanu aplikacji podany dla wywołania connect().

clearCache

void clearCache(
  void
)

Ta metoda czyści stan i pamięć podręczną menedżera, jeśli stan jest w stanie terminala kServiceMgrState_resolved, co oznacza, że odebrano odpowiedź z punktu końcowego usługi Service Directory.

bądź w kontakcie

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.

To jest połączenie najwyższego poziomu. Zasadniczo tworzy to bezpieczne połączenie z usługą Weave z określonym punktem końcowym usługi i trybem uwierzytelniania.

Tę metodę można wywołać dopiero po pomyślnym wywołaniu funkcji init(), a żądanie połączenia można potencjalnie anulować przez funkcję cancel().

Tę metodę można wywołać, zanim lokalna pamięć podręczna zostanie zapełniona danymi z domyślnie udostępnionych danych lub podróży do usługi katalogowej. Menedżer usług po prostu ustawi żą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 katalogu ServiceDirectory.h) dla interesującej usługi.
[in] aAuthMode
Tryb uwierzytelniania używany podczas nawiązywania połączenia z wybraną usługą.
[in] aAppState
Wskaźnik do obiektu stanu aplikacji przekazywany do wywołań zwrotnych jako argument.
[in] aStatusHandler
Wywołanie zwrotne do wywołania 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 zostało ukończone. Pamiętaj, że połączenie może się nie udać z powodu kodu błędu Weave.
[in] aConnectTimeoutMsecs
Opcjonalny czas oczekiwania na połączenie TCP w milisekundach.
[in] aConnectIntf
Opcjonalny interfejs, za pomocą którego ma zostać nawiązane połączenie.
Zwroty
WEAVE_NO_ERROR w przypadku powodzenia. W przeciwnym razie wyświetla się 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ługi.

Aby można było użyć obiektu menedżera usługi, musi on zostać zainicjowany. Po udanym wywołaniu tej metody klienci mogą zacząć wywoływać metody connect(), lookup() i inne.

Szczegóły
Parametry
[in] aExchangeMgr
Wskaźnik do menedżera Exchange używany na wszystkich giełdach profili usług.
[in] aCache
Wskaźnik do bufora, który może służyć do buforowania informacji z katalogu.
[in] aCacheLen
Długość pamięci podręcznej w bajtach.
[in] aAccessor
Wywołanie zwrotne zdefiniowane w katalogu ServiceDirectory.h, które ma zostać wywołane w celu wczytania katalogu głównego jako punktu początkowego wyszukiwania w katalogu.
[in] aDirAuthMode
Tryb uwierzytelniania używany podczas komunikacji z usługą katalogową.
[in] aServiceEndpointQueryBegin
Wskaźnik funkcji typu OnServiceEndpointQueryRozpoczęcie, 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 Service Directory.
[in] aServiceEndpointQueryEndWithTimeInfo
Wskaźnik funkcji typu OnServiceEndpointQueryEndWithTimeInfo, który jest wywoływany po otrzymaniu katalogu usługi umożliwiającego aplikacjom synchronizację z usługą Weave przy użyciu pól czasu podanych w odpowiedzi. To wywołanie zwrotne zostanie wykonane, gdy menedżer usługi otrzyma odpowiedź z informacjami o czasie. Pamięć podręczna powinna już zostać wypełniona przed wykonaniem wywołania zwrotnego.
[in] aConnectBegin
Wskaźnik funkcji typu OnConnectPoczątek, który jest wywoływany bezpośrednio przed nawiązaniem połączenia i umożliwia aplikacjom obserwowanie i opcjonalny zmienianie argumentów przekazywanych do #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 w katalogu dla punktu końcowego usługi.

Jeśli katalog usług został rozpoznany, tj. jeśli operacja connect() zakończyła się powodzeniem, ta metoda uzupełni podany obiekt HostPortList.

Uwaga: kolumna HostPortList jest powiązana z obiektem WeaveServiceManager i pozostanie ważna do momentu wyczyszczenia pamięci podręcznej katalogu usług lub ponownego wyszukiwania katalogu usług.

Szczegóły
Parametry
[in] aServiceEp
Identyfikator punktu końcowego usługi do wyszukania.
[out] outHostPortList
Wskaźnik do HostPortList, który zostanie wypełniony po pomyślnym wyszukaniu wpisu w katalogu. Nie może zawierać wartości NULL.
Zwracane wartości
WEAVE_NO_ERROR
w przypadku powodzenia, w przeciwnym razie – odpowiedni kod błędu.
WEAVE_ERROR_INVALID_SERVICE_EP
jeśli nie można znaleźć danego punktu końcowego usługi.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jeśli katalog zawiera nieznany typ wpisu w katalogu.

wyszukiwanie

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  uint8_t *aControlByte,
  uint8_t **aDirectoryEntry
)

Ta metoda wyszukuje informacje w katalogu dla punktu końcowego usługi.

Jeśli katalog usług został rozpoznany, tj. jeśli operacja connect() się powiodła, metoda ta zwróci wpis katalogu z identyfikatorem punktu końcowego usługi.

Ta metoda ujawnia szczegóły wewnętrznej implementacji katalogu usług. implementacje powinny zdecydowanie preferować korzystanie z jej wariantu, który generuje kolumnę HostPortList.

Szczegóły
Parametry
[in] aServiceEp
Identyfikator punktu końcowego usługi do wyszukania.
[out] aControlByte
Wskaźnik miejsca zapisu bajta kontrolnego wpisu w katalogu.
[out] aDirectoryEntry
Wskaźnik kierujący do wpisu w katalogu.
Zwracane wartości
WEAVE_NO_ERROR
w przypadku powodzenia, w przeciwnym razie – odpowiedni kod błędu.
WEAVE_ERROR_INVALID_SERVICE_EP
jeśli nie można znaleźć danego punktu końcowego usługi.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jeśli katalog zawiera nieznany typ wpisu w katalogu.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Ta metoda obsługuje zdarzenie zamknięcia połączenia zgłoszone przez powiązany kontekst giełdy Weave.

Szczegóły
Parametry
[in] aError
Błąd Weave wskazujący przyczynę zamknięcia tego połączenia.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Ta metoda obsługuje zdarzenie zakończenia połączenia na potrzeby transakcji zapytania do punktu końcowego usługi.

Jest kilka możliwości. Po pierwsze, mogło się nie udać nawiązać połączenia. W takim przypadku zamknęliśmy go. W przeciwnym razie połączenie jest już gotowe, a my chcemy otworzyć kontekst wymiany i wysłać zapytanie do katalogu.

Szczegóły
Parametry
[in] aError
Błąd Weave w przypadku błędu podczas konfiguracji połączenia.

onResponseReceived

void onResponseReceived(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

Ta metoda obsługuje każdą wiadomość z odpowiedzią w rozmowie z usługą katalogową.

Szczegóły
Parametry
[in] aProfileId
Identyfikator profilu tej wiadomości przychodzącej.
[in] aMsgType
Konkretny profil tej wiadomości.
[in] aMsg
Treść tej wiadomości.

onResponseTimeout

void onResponseTimeout(
  void
)

Ta metoda obsługuje zdarzenie przekroczenia limitu czasu, w przypadku którego nie otrzymano odpowiedzi z usługi katalogowej.

przenieś

void relocate(
  WEAVE_ERROR aError
)

Ta metoda relokuje pamięć podręczną katalogu usług.

Gdy punkt końcowy usługi zwraca raport o stanie z kodem stanu kStatus_Reloc, aplikacja może wywołać metodę unresolve(), aby wyczyścić pamięć podręczną i anulować żądania połączenia. Upraszcza ona obsługę błędów przez wywołanie funkcji unresolve() za pierwszym razem oraz reset(), jeśli problem nie został jeszcze rozwiązany.

Ta wersja metody, dostępna na potrzeby zgodności wstecznej, rejestruje i rejestruje błąd, a potem wywołuje metodę relocate(void) .

Szczegóły
Parametry
[in] aError
błąd do zapisania.
Zobacz też:
relocate(void)

przenieś

void relocate(
  void
)

Ta metoda relokuje pamięć podręczną katalogu usług.

Gdy punkt końcowy usługi zwraca raport o stanie z kodem stanu kStatus_Reloc, aplikacja może wywołać metodę unresolve(), aby wyczyścić pamięć podręczną i anulować żądania połączenia. Upraszcza ona obsługę błędów przez wywołanie funkcji unresolve() za pierwszym razem oraz reset(), jeśli problem nie został jeszcze rozwiązany.

Zobacz też:
relokate(WEAVE_ERROR)

replaceOrAddCacheEntry

WEAVE_ERROR replaceOrAddCacheEntry(
  uint16_t port,
  const char *hostName,
  uint8_t hostLen,
  uint64_t serviceEndpointId
)

Dodaj na początku listy katalogów wpis w katalogu zastępującym zawierający nazwę hosta i identyfikator portu.

zresetuj

void reset(
  WEAVE_ERROR aError
)

Ta metoda resetuje menedżera usługi do stanu początkowego.

Ta metoda resetuje wszystkie stany menedżera usług, w tym stan komunikacji, stan pamięci podręcznej i stan wszystkich oczekujących żądań połączenia.

Ta wersja metody, dostępna na potrzeby zgodności wstecznej, rejestruje błąd i wywołuje metodę reset(void) .

Szczegóły
Parametry
[in] aError
Błąd, który aktywował tę operację.
Zobacz też:
reset(void)

zresetuj

void reset(
  void
)

Ta metoda resetuje menedżera usługi 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)

nierozwiązany

void unresolve(
  WEAVE_ERROR aError
)

Ta metoda unieważnia pamięć podręczną katalogu usług.

Ta metoda ustawia stan pamięci podręcznej katalogu usług, aby następnym razem menedżer usługi wysyłał zapytanie do katalogu usług.

Ta wersja metody, dostępna na potrzeby zgodności wstecznej, rejestruje i rejestruje błąd, a potem wywołuje metodę unresolve(void) .

Szczegóły
Parametry
[in] aError
Błąd, który aktywował tę operację.
Zobacz też:
unresolve(void)

nierozwiązany

void unresolve(
  void
)

Ta metoda unieważnia pamięć podręczną katalogu usług.

Ta metoda ustawia stan pamięci podręcznej katalogu usług, aby następnym razem menedżer usługi wysyłał zapytanie do katalogu usług.

Zobacz też:
unresolve(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Ta metoda niszczy instancję WeaveServiceManager.