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. W związku z tym ukrywa komplikacje związane z wyszukiwaniem wpisu katalogu powiązanego z punktem końcowym usługi, wyszukiwaniem DNS co najmniej 1 znalezionych w nim nazw hostów, próbami nawiązania połączenia, zabezpieczeniem połączenia itd. Może też zarządzać pamięcią podręczną informacji z katalogu usług.

Konstruktory 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 określające godzinę wychodzącego 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(*
Moduł obsługi warunków błędów i stanu.

Funkcje publiczne

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Ustaw wywołanie zwrotne 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ług.
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
Ta metoda wyszukuje informacje o 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 wiadomości z odpowiedziami w wątku z usługą katalogową.
onResponseTimeout(void)
void
Ta metoda obsługuje zdarzenie przekroczenia limitu czasu, na które nie odebrano żadnej odpowiedzi z usługi katalogowej.
relocate(WEAVE_ERROR aError)
void
Ta metoda przenosi pamięć podręczną katalogu usług.
relocate(void)
void
Ta metoda przenosi pamięć podręczną katalogu usług.
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.
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 pojedynczą transakcję zarządzaną przez menedżera usługi.

Typy publiczne

@303

 @303
Właściwości
kWeave_DefaultSendTimeout

Liczba milisekund, jaką musi zostać odebrana odpowiedź na zapytanie katalogu, zanim nastąpi przekroczenie limitu czasu kontekstu giełdy.

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ą. To wywołanie zwrotne będzie wywoływane zarówno w przypadku połączenia z punktem końcowym usługi docelowej, jak i połączenia z punktem końcowym usługi Service Directory, jeśli wymagane jest wyszukiwanie katalogu.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

Wywołanie zwrotne aplikacji określające godzinę wychodzącego zapytania do katalogu usług.

Jest ona wywoływana, gdy mamy wysłać żądanie zapytania do punktu końcowego usługi. Służy do dopasowywania 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 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, gdy zapytanie zostało odebrane po stronie serwera.
[in] timeProcessMsec
Liczba ms na przetworzenie tego zapytania.

RootDirectoryAccessor

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

Funkcja akcesora dla informacji o katalogu głównym.

Od czegoś trzeba zacząć od katalogu usług, od katalogu usługi, który zawiera adres serwera, który można otworzyć, aby uzyskać dostęp do całej reszty. Ponieważ dyspozycja i pochodzenie tych informacji może się różnić w zależności od urządzenia, w tym miejscu podajemy wywołanie zwrotne dotyczące dostępu.

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 wczytywanie zostałoby przerwane.

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 z wykonaniem żądania połączenia na jeden z dwóch sposobów. Może otrzymać raport o stanie z usługi lub wygenerowany wewnętrznie komunikat o błędzie WEAVE_ERROR. W obu przypadkach informacje są przekazywane przez to wywołanie zwrotne.

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. Jeśli nie wystąpił błąd i dostępny jest raport o stanie, użyj wartości 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 inicjuje instancję WeaveServiceManager.

Pamiętaj, że do dalszego zainicjowania tej instancji należy 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 na podstawie identyfikatora punktu końcowego usługi i obiektu stanu aplikacji przekazanego w momencie żądania jako identyfikatorów. Jeśli jest to ostatnie żądanie połączenia, ta metoda usuwa też oczekujący stan połączenia z katalogiem usług.

Szczegóły
Parametry
[in] aServiceEp
Identyfikator punktu końcowego usługi anulowanego żądania.
[in] anAppState
Wskaźnik do obiektu stanu aplikacji podanego wywołaniu connect().

clearCache

void clearCache(
  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.

połącz

WEAVE_ERROR 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.

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().

Metodę tę można wywołać, zanim lokalna pamięć podręczna zostanie wypełniona danymi z domyślnie udostępnianych danych lub podróży do usługi katalogowej. 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 (określony w ServiceDirectory.h) dla danej 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 wywołań zwrotnych 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, musi być zainicjowany obiekt menedżera usług. Po udanym wywołaniu tej metody klienty mogą zacząć wywoływać metody connect(), lookup() i inne.

Szczegóły
Parametry
[in] aExchangeMgr
Wskaźnik do menedżera giełdy, który ma być używany na potrzeby wszystkich wymian profili w 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 rozmów z usługą katalogową.
[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 być już wypełniona przed wywołaniem zwrotnym.
[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 o katalogu dla punktu końcowego usługi.

Jeśli katalog usługi został rozwiązany, czyli wystąpiła operacja connect(), ta metoda zwróci wpis katalogu z podanym identyfikatorem punktu końcowego usługi.

Ta metoda ujawnia szczegóły wewnętrznej implementacji katalogu usług. W implementacjach zdecydowanie preferujemy użycie wariantu tej metody, który generuje listę HostPortList.

Szczegóły
Parametry
[in] aServiceEp
Identyfikator punktu końcowego usługi do wyszukania.
[out] aControlByte
Wskaźnik miejsca do zapisania bajtu kontrolnego wpisu katalogu.
[out] aDirectoryEntry
Wskaźnik kierujący do wpisu 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łaszane 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, możliwe, że nie udało się nawiązać połączenia. W takim przypadku zostanie ona zakończona. W przeciwnym razie połączenie jest w rzeczywistości kompletne, więc chcemy otworzyć kontekst giełdy i wysłać zapytanie katalogu.

Szczegóły
Parametry
[in] aError
Jeśli podczas konfigurowania połączenia wystąpi błąd, wystąpi błąd Weave.

onResponseReceived

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

Ta metoda obsługuje wszystkie odpowiedzi w wątku z usługą katalogową.

Szczegóły
Parametry
[in] aProfileId
Identyfikator profilu tej wiadomości przychodzącej.
[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, na które nie odebrano żadnej odpowiedzi 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 zwraca raport o stanie z kodem stanu kStatus_Relocated, aplikacja może wywołać metodę unresolve(), by 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.

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.
Zobacz też:
relocate(void)

przenieś

void relocate(
  void
)

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

Gdy punkt końcowy usługi zwraca raport o stanie z kodem stanu kStatus_Relocated, aplikacja może wywołać metodę unresolve(), by 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 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.

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 wywołał 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ązywać

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 tak, aby przy następnym żądaniu menedżer usługi wysłał zapytanie do katalogu usług.

Ta wersja metody, która zapewnia zgodność wsteczną, pobiera i rejestruje błąd, a następnie wywołuje metodę unresolve(void) .

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

nierozwiązywać

void unresolve(
  void
)

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

Ta metoda ustawia stan pamięci podręcznej katalogu usług tak, aby przy następnym żądaniu menedżer usługi wysłał zapytanie do katalogu usług.

Zobacz też:
nierozwiązaj(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Ta metoda niszczy instancję WeaveServiceManager.