nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

Klasa Binding zarządza stanem komunikacji w imieniu jednostki aplikacji za pomocą Weave.

Podsumowanie

Jeśli aplikacja chce używać Weave do komunikowania się z jednostką zdalną, masz do dyspozycji wiele różnych opcji. W klasie Wiązanie wszystkie te opcje są uporządkowane w taki sposób, że najprostsze rzeczy są łatwe do znalezienia, a trudniejsze – łatwe do znalezienia. Dostępne opcje:

  • pojedyncza komunikacja UDP ze znanym węzłem równorzędnym.
  • Transmisja UDP z „dowolnym” węzłem.
  • pojedyncza komunikacja WRMP ze znanym węzłem równorzędnym.
  • Komunikacja TCP ze znanym węzłem równorzędnym.
  • Komunikacja TCP ze znanym punktem końcowym usługi przy użyciu instancji menedżera usługi.
  • Komunikacja TCP oparta na wcześniej nawiązanym połączeniu.

Konstruktorzy i niszczyciele

Binding(void)
Domyślny konstruktor obiektów Wiązanie.
~Binding(void)
Destruktor obiektów Wiązanie.

Typy publiczne

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum | typ wyliczeniowy
Zbiór stanów obiektu Binding.

Atrybuty publiczne

mAuthMode
WeaveAuthMode
Tryb uwierzytelniania Weave, który ma być używany.
mConnection
Wskaźnik do połączenia Weave aktualnie używanego w tym powiązaniu.
mEngine
Wskaźnik do obiektu ProtocolEngine związany z tym Binding.
mPeerNodeId
uint64_t
64-bitowy identyfikator węzła docelowego wiązania.
mServiceMgr
Wskaźnik do (opcjonalnie) obiektu ServiceManager, który ma być używany do zakończenia tego powiązania.
mState
uint8_t
Bieżący stan obiektu Wiązanie.
mTransport
uint8_t
Transport do wykorzystania do wykonania tego wiązania.

Funkcje publiczne

CompleteConfirm(WeaveConnection *aConnection)
void
Obsługa potwierdzenia prośby o powiązanie.
CompleteConfirm(StatusReport & aReport)
void
Obsługa błędów żądania powiązania.
CompleteConfirm(void)
void
Obsługa potwierdzenia prośby o powiązanie.
CompleteRequest(ProtocolEngine *aEngine)
Poproś o zakończenie powiązania.
Connect(WeaveConnection *aConnection)
Utwórz powiązanie TCP, dostarczając ukończone połączenie.
Finalize(void)
void
„Cofnij uzupełnienie” powiązania i uwolnij je.
Finalize(WEAVE_ERROR aErr)
void
„Cofnij uzupełnienie” powiązania i uwolnij je.
Free(void)
void
Wyczyść stan powiązania.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Wygeneruj obiekt ExchangeContext z właściwości Binding.
IncompleteIndication(StatusReport & aReport)
void
Obsługa błędów wiązania.
Init(const uint64_t & aPeerNodeId)
Zainicjuj Wiązanie tylko przy użyciu identyfikatora węzła.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Zainicjuj obiekt Binding na podstawie identyfikatora peera i transportu.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Zainicjuj obiekt Binding z punktem końcowym usługi.
Init(WeaveConnection *aConnection)
Zainicjuj obiekt Binding za pomocą obiektu WeaveConnection.
IsComplete(void)
bool
Sprawdź, czy powiązanie zostało zakończone.
IsFree(void)
bool
Czek jest wiązaniem bez opłat.
UncompleteRequest(void)
void
Sprawia, że powiązanie jest niekompletne.
UncompleteRequest(WEAVE_ERROR aErr)
void
Sprawia, że powiązanie jest niekompletne.

Typy publiczne

@165

 @165

Zbiór stanów obiektu Binding.

Właściwości
kState_Complete

Stan wiązania, które jest gotowe i gotowe do użycia.

kState_Completing

Stan wiązania, który jest w trakcie kończenia.

kState_Incomplete

Początkowy (i ostateczny) stan Wiązania.

Atrybuty publiczne

mAuthMode

WeaveAuthMode mAuthMode

Tryb uwierzytelniania Weave, który ma być używany.

(TYLKO DO ODCZYTU)

Jest to tryb uwierzytelniania używany we wszystkich komunikacji zarządzanych przez to powiązanie.

mConnection

WeaveConnection * mConnection

Wskaźnik do połączenia Weave aktualnie używanego w tym powiązaniu.

(TYLKO ODCZYT)

Powiązania TCP można inicjować od razu przy użyciu połączenia lub przydzielić je w momencie zakończenia.

mEngine

ProtocolEngine * mEngine

Wskaźnik do obiektu ProtocolEngine związany z tym Binding.

Powiązanie jest zazwyczaj wykonywane w związku z mechanizmem konkretnego protokołu, który jest używany najczęściej do uzyskiwania dostępu do warstwy wiadomości. Właśnie tam ją śledzimy.

mPeerNodeId

uint64_t mPeerNodeId

64-bitowy identyfikator węzła docelowego wiązania.

(TYLKO ODCZYT)

Każde Wiązanie ma wskazaną tutaj encję docelową. Oprócz identyfikatora węzła Weave może on wskazywać punkt końcowy usługi.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Wskaźnik do (opcjonalnie) obiektu ServiceManager, który ma być używany do zakończenia tego powiązania.

(TYLKO ODCZYT)

W przypadku powiązania z usługą Weave w momencie inicjowania zamiast identyfikatora węzła Weave może być podany 64-bitowy identyfikator punktu końcowego usługi. W tym przypadku do ukończenia powiązania wymagany jest także obiekt ServiceManager. Normalne powiązania TCP lub WRMP nie wymagają obiektu ServiceManager.

mState

uint8_t mState

Bieżący stan obiektu Wiązanie.

W danym momencie może być uruchomiona tylko jedna operacja „complete”, a w każdym przypadku, gdy poprosisz o ukończenie wiązania, natychmiast wywołuje funkcję potwierdzania. Poniższa zmienna stanu śledzi bieżący stan i działa jak blokada.

mTransport

uint8_t mTransport

Transport do wykorzystania do wykonania tego wiązania.

(TYLKO ODCZYT)

Możliwe wartości parametru mTransport są zdefiniowane w pliku DMConstants.h.

Funkcje publiczne

Powiązanie

 Binding(
  void
)

Domyślny konstruktor obiektów Wiązanie.

Usuwa cały stan wewnętrzny.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Obsługa potwierdzenia prośby o powiązanie.

Szczegóły
Parametry
[in] aConnection
Wskaźnik do aktywnego miejsca docelowego powiązania (WeaveConnection).

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Obsługa błędów żądania powiązania.

Szczegóły
Parametry
[in] aReport
Odwołanie do obiektu StatusReport opisującego błąd.

CompleteConfirm

void CompleteConfirm(
  void
)

Obsługa potwierdzenia prośby o powiązanie.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Poproś o zakończenie powiązania.

Zakończenie wiązania polega przynajmniej w przypadku wiązań wymagających TCP – w odniesieniu do konkretnego obiektu ProtocolEngine, który zapewnia dostęp do instancji ExchangeManager.

Szczegóły
Parametry
[in] aEngine
Wskaźnik do obiektu ProtocolEngine, w imieniu którego wykonywana jest realizacja.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INCORRECT_STATE
jeśli wiązanie zostało już zakończone.
WEAVE_ERROR_NO_MEMORY
Jeśli wymagane jest połączenie, a nie jest dostępne żadne połączenie
Zwroty
W przeciwnym razie podczas próby nawiązania połączenia wystąpił błąd WEAVE_ERROR.

Połącz

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Utwórz powiązanie TCP, dostarczając ukończone połączenie.

Nowo zainicjowane powiązanie TCP nie może być używane, dopóki nie zostanie ukończone. Zwykle odbywa się to na żądanie, gdy aplikacja próbuje użyć powiązania do wysyłania wiadomości, ale można to też zrobić bezpośrednio przez połączenie Weave.

Szczegóły
Parametry
[in] aConnection
Wskaźnik WeaveConnection używany do ukończenia powiązania.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INCORRECT_STATE
Jeśli powiązanie jest już połączone.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli połączenie ma wartość NULL.

Zakończ

void Finalize(
  void
)

„Cofnij uzupełnienie” powiązania i uwolnij je.

Stan powiązań może wymagać czyszczenia, np. zamknięcie połączenia, które jest obsługiwane przez metodę Uncomplete() oprócz stanu, który jest po prostu usuwany do początkowego stanu za pomocą metody Free(). Ta metoda, głównie ze względu na wygodę, wywołuje oba.

Zobacz też:
Finalize(WEAVE_ERROR)

Zakończ

void Finalize(
  WEAVE_ERROR aErr
)

„Cofnij uzupełnienie” powiązania i uwolnij je.

Stan powiązań może wymagać czyszczenia, np. zamknięcie połączenia, które jest obsługiwane przez metodę Uncomplete() oprócz stanu, który jest po prostu usuwany do początkowego stanu za pomocą metody Free(). Ta metoda, głównie ze względu na wygodę, wywołuje oba.

Szczegóły
Parametry
[in] aErr
Ten kod błędu wskazuje przyczynę żądania. Jeśli wartość nie jest ustawiona na WEAVE_NO_ERROR, połączenie TCP może zostać przerwane.
Zobacz też:
Finalize(void)

bezpłatnie

void Free(
  void
)

Wyczyść stan powiązania.

Bezwarunkowo zwróć cały stan powiązania do pierwotnego stanu.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Wygeneruj obiekt ExchangeContext z właściwości Binding.

Szczegóły
Parametry
[in] aExchangeMgr
Wskaźnik do menedżera giełdy, do którego należy wysłać prośbę o kontekst.
[in] aAppState
Pusty wskaźnik do obiektu stanu aplikacji, który ma być przechowywany w kontekście wymiany do późniejszego użycia.
Zwroty
wskaźnik do obiektu ExchangeContext lub wartość NULL w przypadku błędu.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Obsługa błędów wiązania.

Ta metoda jest wywoływana i z kolei, gdy powiązanie nie powiedzie się PO zakończeniu, tj. po wywołaniu funkcji CompleteConfirm() ze stanem oznaczającym sukces.

Szczegóły
Parametry
[in] aReport
Odniesienie do raportu StatusReport opisującego, co poszło nie tak.
Zobacz też:
CompleteConfirm(StatusReport &aReport).

Zainicjuj

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Zainicjuj Wiązanie tylko przy użyciu identyfikatora węzła.

Powoduje to powiązanie ze skonfigurowanym domyślnym transportem.

Szczegóły
Parametry
[in] aPeerNodeId
Odwołanie do 64-bitowego identyfikatora celu wiązania.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli powiązanie jest niedostatecznie określone.

Zainicjuj

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Zainicjuj obiekt Binding na podstawie identyfikatora peera i transportu.

Szczegóły
Parametry
[in] aPeerNodeId
Odwołanie do 64-bitowego identyfikatora węzła docelowego powiązania.
[in] aTransport
Specyfikacja transportu z WeaveTransportOption.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli powiązanie jest niedostatecznie określone.

Zainicjuj

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Zainicjuj obiekt Binding z punktem końcowym usługi.

W ten sposób utworzysz powiązanie z konkretnym punktem końcowym w usłudze Nest. Powiązanie tego rodzaju wymaga wieloetapowego procesu ukończenia, który może obejmować wypełnienie lub zaktualizowanie pamięci podręcznej lokalnego katalogu usług. Ten proces jest w większości niewidoczny dla aplikacji, ale oznacza to, że błędy pojawiające się na późniejszym etapie procesu mogą zostać dostarczone, zwykle poprzez odpowiednie wywołanie zwrotne „potwierdzenia”, po pierwotnej prośbie o użycie (i dokończenie) powiązania.

Szczegóły
Parametry
[in] aServiceEpt
Odwołanie do 64-bitowego identyfikatora interesującego Cię punktu końcowego usługi Weave.
[in] aServiceMgr
Wskaźnik do instancji menedżera usługi, która ma być używana do wyszukiwania poziomu usług i nawiązywania z nim połączenia.
[in] aAuthMode
Tryb uwierzytelniania używany przy nawiązywaniu połączenia.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli powiązanie jest niedostatecznie określone.

Zainicjuj

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Zainicjuj obiekt Binding za pomocą obiektu WeaveConnection.

Szczegóły
Parametry
[in] aConnection
Wskaźnik do WeaveConnection, który ma służyć jako podstawa wiązania.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli powiązanie jest niedostatecznie określone.

IsComplete

bool IsComplete(
  void
)

Sprawdź, czy powiązanie zostało zakończone.

Szczegóły
Zwroty
Jeśli pole jest kompletne, ma wartość prawda.
Zobacz też:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Czek jest wiązaniem bez opłat.

„Bezpłatnie” w tym kontekście oznacza po prostu „ma zdefiniowany identyfikator węzła równorzędnego”. Funkcję IsFree() należy traktować jako znaczenie „wywołano funkcję Free() i od tego czasu nie była ona używana”.

Szczegóły
Zwroty
Wartość true, jeśli wiązanie jest bezpłatne. W przeciwnym razie ma wartość false (fałsz).

UncompleteRequest

void UncompleteRequest(
  void
)

Sprawia, że powiązanie jest niekompletne.

Zasadniczo powiązanie będzie mieć stan „niepełne” po wywołaniu tej metody, ale mniej więcej każdy stan, którego nie ma w samym powiązaniu, na przykład połączenie TCP, również powinien zostać wyczyszczony. Aplikacje mogą rozważyć wywoływanie funkcji UncompleteRequest() w ramach procesu czyszczenia po błędzie.

Zobacz też:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Sprawia, że powiązanie jest niekompletne.

Zasadniczo powiązanie będzie mieć stan „niepełne” po wywołaniu tej metody, ale mniej więcej każdy stan, którego nie ma w samym powiązaniu, na przykład połączenie TCP, również powinien zostać wyczyszczony. Aplikacje mogą rozważyć wywoływanie funkcji UncompleteRequest() w ramach procesu czyszczenia po błędzie.

Szczegóły
Parametry
[in] aErr
W przeciwnym razie obecne połączenie (jeśli występuje) zostało przerwane zamiast płynnie zamknięte.
Zobacz też:
UncompleteRequest(void)

~Wiązanie

virtual  ~Binding(
  void
)

Destruktor obiektów Wiązanie.

Czyści cały stan wewnętrzny ORAZ, w razie potrzeby, zamyka otwarte połączenia.