nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
Przechwytuje zamierzony cel komunikacji Weave i powiązane informacje o konfiguracji.
Podsumowanie
Obiekt Binding określa zamierzone miejsce docelowe komunikacji Weave (zwanej też „peerem”), wraz z zbiorem parametrów konfiguracji opisujących, jak powinna następować komunikacja z elementem równorzędnym. Powiązania są niezależne od protokołu aplikacji wymienianego między stronami. Dzięki temu zbierają dane na temat tego, oraz instrukcji komunikacji, ale nie „co”.
Aplikacje muszą skonfigurować Wiązanie z parametrami specyficznymi dla wybranego typu kanału komunikacji. Powiązania zapewniają obsługę różnych rodzajów transportu sieciowego, w tym TCP, UDP, UDP z weave Reliable Messaging i Weave over BLE (WoBLE). Aplikacje mogą również prosić o zastosowanie określonych mechanizmów zabezpieczeń do ochrony wiadomości przesyłanych między stronami. Obejmują one sesje CASE i PASE oraz klucze grup aplikacji. Interfejs do konfigurowania Wiązania używa deklaratywnego stylu interfejsu API, który umożliwia aplikacjom określanie wymagań dotyczących komunikacji w prosty sposób.
Więcej informacji znajdziesz w dokumentacji raportu Binding::Configuration (Wiązanie::Konfiguracja).
Przygotowanie
Przed rozpoczęciem komunikacji Wiązanie należy przygotować. Czynności związane z przygotowaniem Wiązania obejmują ustalenie stanu niezbędnego do przeprowadzenia komunikacji. Może to obejmować na przykład rozpoznawanie adresu sieciowego peera, nawiązanie połączenia sieciowego i negocjowanie kluczy bezpieczeństwa. Po skonfigurowaniu go przez aplikację funkcja Wiązanie wykonuje wszystkie czynności niezbędne do przygotowania komunikacji, a po jej zakończeniu wywołuje aplikację. W ten sposób powiązania ukrywają mechanikę komunikacji, dzięki czemu aplikacje mogą skoncentrować się na interakcjach wysokiego poziomu.
Komunikacja
Po przygotowaniu wiązania jest ono gotowe do użycia. W takim stanie aplikacje (lub częściej kod warstwy protokołu działający w imieniu aplikacji) żądają ustawienia Wiązanie, aby przydzielić kontekst giełdy Weave. Wynikowy kontekst wymiany jest wstępnie skonfigurowany pod kątem komunikacji, dzięki czemu aplikacja może natychmiast zainicjować wymianę Weave z peerem. Aplikacja może nadal żądać kontekstów wymiany z poziomu Wiązania do momentu zamknięcia Wiązania lub do chwili zamknięcia podstawowego kanału komunikacyjnego, np. awarii sieci.
Zmiany stanu wiązania
W trakcie użytkowania Wiązanie będzie dostarczać do aplikacji zdarzenia interfejsu API informujące ją o zmianach stanu Wiązania. Jeśli na przykład przygotowanie się powiedzie, aplikacja otrzyma zdarzenie informujące, że Wiązanie jest gotowe do użycia. I podobnie, jeśli podstawowy kanał komunikacji ulegnie awarii, do aplikacji zostanie przesłane zdarzenie z informacją, że Wiązanie nie jest już w stanie gotowości.
Zdarzenia interfejsu API są dostarczane do aplikacji za pomocą funkcji wywołania zwrotnego zdarzenia, która jest dostarczana po przydzieleniu wartości Wiązanie.
Czas trwania wiązania
Wiązania są liczone jako pliki referencyjne, co umożliwia wspólne korzystanie z wielu komponentów oprogramowania. Po przydzieleniu powiązania Wiązanie jest tworzone pojedyncze odwołanie do powiązania. Aplikacja będzie zobowiązana do opublikowania tego pliku referencyjnego w przyszłości, tak aby Wiązanie było bezpłatne do późniejszego wykorzystania.
Gdy aplikacja obsługuje Wiązanie, może wywołać metodę Close() w przypadku powiązania. Spowoduje to zwolnienie odniesienia aplikacji do wartości Wiązanie i zablokowanie dalszego przesyłania zdarzeń interfejsu API. Zamknięcie ostatniego odwołania do Wiązania powoduje jego automatyczne zamknięcie.
Typy publiczne |
|
---|---|
@23{
|
enum | typ wyliczeniowy |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
enum | typ wyliczeniowy |
State
|
enum | typ wyliczeniowy |
Atrybuty publiczne |
|
---|---|
AppState
|
void *
|
Funkcje publiczne |
|
---|---|
AddRef(void)
|
void
Zarezerwuj odwołanie do obiektu powiązania.
|
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
|
Skonfiguruj ponownie istniejący kontekst Exchange, aby dostosować czas oczekiwania odpowiedzi.
|
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
|
|
BeginConfiguration()
|
Proces konfigurowania powiązania.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Zamknij obiekt powiązania i zwolnij odwołanie.
|
GetConnection() const
|
Pobierz obiekt połączenia Weave powiązany z powiązaniem.
|
GetDefaultResponseTimeout() const
|
uint32_t
Pobierz domyślny czas oczekiwania na odpowiedź giełdy, który będzie używany podczas komunikacji z peerem.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
Pobierz domyślną konfigurację WRMP, która będzie używana do komunikacji z peerem.
|
GetEncryptionType(void) const
|
uint8_t
Pobierz typ szyfrowania wiadomości, który ma być używany podczas szyfrowania wiadomości do/z peera.
|
GetEventCallback() const
|
EventCallback
Pobierz funkcję, która będzie wywoływana, gdy wystąpi zdarzenie interfejsu API dotyczące wiązania.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
Pobierz identyfikator klucza szyfrowania wiadomości, który ma być używany podczas szyfrowania wiadomości do/z peera.
|
GetLogId(void) const
|
uint16_t
Uzyskaj unikalny identyfikator powiązania.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
Uzyskaj maksymalny rozmiar ładunku Weave, który mieści się w dostarczonym buforze PacketBuffer.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Konstruuje ciąg znaków opisujący węzeł równorzędny i powiązany z nim adres / informacje o połączeniu.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
Pobieranie informacji o adresie IP peera, jeśli są dostępne.
|
GetPeerNodeId(void) const
|
uint64_t
Pobieranie identyfikatora węzła peera powiązania.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
Pobierz bieżący stan powiązania.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
Określ, czy dana wiadomość przychodząca pochodzi od skonfigurowanego połączenia równorzędnego i jest odpowiednio uwierzytelniona.
|
IsConnectionTransport() const
|
bool
|
IsPreparing(void) const
|
bool
|
IsReady(void) const
|
bool
|
IsUDPTransport() const
|
bool
|
IsUnreliableUDPTransport() const
|
bool
|
IsWRMTransport() const
|
bool
|
NewExchangeContext(ExchangeContext *& appExchangeContext)
|
Przydziel nowy kontekst Exchange do komunikacji z peerem, który jest celem powiązania.
|
Release(void)
|
void
Zwolnij odwołanie do obiektu powiązania.
|
RequestPrepare()
|
Poproś aplikację o skonfigurowanie i przygotowanie Wiązania.
|
Reset(void)
|
void
Zresetuj powiązanie z powrotem do stanu nieskonfigurowanego.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
Ustaw domyślny czas oczekiwania na odpowiedź giełdy, który ma być używany podczas komunikacji z peerem.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Ustaw domyślną konfigurację WRMP, która będzie używana do komunikacji z peerem.
|
SetEventCallback(EventCallback aEventCallback)
|
void
Ustaw funkcję zdefiniowaną przez aplikację tak, aby była wywoływana, gdy wystąpi zdarzenie interfejsu API dotyczące wiązania.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
Ustaw funkcję wywołania zwrotnego zdarzenia dla kodu warstwy protokołu, używając opcji Wiązanie w imieniu aplikacji.
|
Publiczne funkcje statyczne |
|
---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
Domyślny moduł obsługi wiązań zdarzeń interfejsu API.
|
Zajęcia |
|
---|---|
nl:: |
Udostępnia interfejs w stylu deklaratywnym do konfigurowania i przygotowywania obiektu Binding (Wiązanie). |
Struktura |
|
---|---|
nl:: |
Dane wejściowe zdarzenia interfejsu API Binding. |
nl:: |
Parametry wyjściowe dla zdarzenia interfejsu API Binding. |
Typy publiczne
@23
@23
Właściwości | |
---|---|
kGetPeerDescription_MaxLength
|
Maksymalna długość ciągu znaków (łącznie ze znakiem NUL) zwracanym przez funkcję GetPeerDescription(). |
EventCallback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
EventType
EventType
Właściwości | |
---|---|
kEvent_BindingFailed
|
Powiązanie nie powiodło się i nie można go już używać do komunikowania się z peerem. |
kEvent_BindingReady
|
Działanie przygotowujące do powiązania zostało zakończone i można go teraz używać do komunikacji z peerem. |
kEvent_ConnectionEstablished
|
Żądane połączenie Weave zostało nawiązane. |
kEvent_DefaultCheck
|
Służy do weryfikacji prawidłowej domyślnej obsługi zdarzeń w aplikacji. |
kEvent_PASEParametersRequested
|
Aplikacja ma podać parametry do wykorzystania podczas inicjowania sesji PASE. |
kEvent_PrepareFailed
|
Nie udało się wykonać działania związanego z przygotowaniem powiązania. |
kEvent_PrepareRequested
|
Żądana jest aplikacja, aby skonfigurować i przygotować powiązanie do użycia przez stos sieciowy. |
kEvent_TAKEParametersRequested
|
Aplikacja została zażądana, by podać parametry do wykorzystania podczas tworzenia sesji take. |
Stan
State
Atrybuty publiczne
AppState
void * AppState
Funkcje publiczne
AddRef
void AddRef( void )
Zarezerwuj odwołanie do obiektu powiązania.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
Skonfiguruj ponownie istniejący kontekst Exchange, aby dostosować czas oczekiwania odpowiedzi.
Szczegóły | |||
---|---|---|---|
Parametry |
|
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
Proces konfigurowania powiązania.
Aplikacje muszą wywołać metodę BeginConfiguration(), aby skonfigurować Wiązanie przed przygotowaniem jej do komunikacji z peerem.
Szczegóły | |
---|---|
Zwroty |
Obiekt Binding::Configuration, którego można używać do konfigurowania powiązania.
|
CanBePrepared
bool CanBePrepared( void ) const
Zamknij
void Close( void )
Zamknij obiekt powiązania i zwolnij odwołanie.
Po wywołaniu ta metoda powoduje, że powiązanie przechodzi w stan Zamknięty. Wszystkie trwające działania przygotowujące do powiązania zostaną anulowane, a wszystkie zewnętrzne zasoby komunikacyjne przechowywane przez to powiązanie zostaną zwolnione.
Wywołanie Close() zmniejsza liczbę odwołań powiązanych z powiązaniem, co powoduje zwolnienie obiektu, gdy liczba odwołań spadnie do 0.
GetConnection
WeaveConnection * GetConnection() const
Pobierz obiekt połączenia Weave powiązany z powiązaniem.
Szczegóły | |
---|---|
Zwroty |
wskaźnik do obiektu WeaveConnection lub wartość NULL, jeśli nie ma żadnego połączenia z powiązaniem.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Pobierz domyślny czas oczekiwania na odpowiedź giełdy, który będzie używany podczas komunikacji z peerem.
Szczegóły | |
---|---|
Zwroty |
Czas oczekiwania na odpowiedź w ms.
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Pobierz domyślną konfigurację WRMP, która będzie używana do komunikacji z peerem.
Szczegóły | |
---|---|
Zwroty |
Odwołanie do struktury WRMPConfig zawierającej domyślne wartości konfiguracji.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
Pobierz typ szyfrowania wiadomości, który ma być używany podczas szyfrowania wiadomości do/z peera.
GetEventCallback
EventCallback GetEventCallback() const
Pobierz funkcję, która będzie wywoływana, gdy wystąpi zdarzenie interfejsu API dotyczące wiązania.
Szczegóły | |
---|---|
Zwroty |
Wskaźnik do funkcji wywołania zwrotnego.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Pobierz identyfikator klucza szyfrowania wiadomości, który ma być używany podczas szyfrowania wiadomości do/z peera.
GetLogId
uint16_t GetLogId( void ) const
Uzyskaj unikalny identyfikator powiązania.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
Uzyskaj maksymalny rozmiar ładunku Weave, który mieści się w dostarczonym buforze PacketBuffer.
W przypadku UDP, w tym UDP z WRM, maksymalny rozmiar zwróconych ładunków zagwarantuje, że wynikowa wiadomość Weave nie przekroczy skonfigurowanego limitu MTU.
Dodatkowo dzięki tej metodzie ładunek Weave nie przekroczy podanego obiektu PacketBuffer.
Szczegóły | |||
---|---|---|---|
Parametry |
|
||
Zwroty |
Maksymalny rozmiar ładunku Weave.
|
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
Konstruuje ciąg znaków opisujący węzeł równorzędny i powiązany z nim adres / informacje o połączeniu.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Pobieranie informacji o adresie IP peera, jeśli są dostępne.
Dostępność informacji o adresie IP peera zależy od stanu i konfiguracji powiązania. Informacje o adresach IP są dostępne tylko wtedy, gdy korzystasz z transportu opartego na IP (TCP, UDP lub UDP z WRMP). Przed rozpoczęciem przygotowań informacje adresowe są dostępne tylko wtedy, gdy zostały wyraźnie określone przez aplikację podczas konfiguracji. W fazie przygotowań informacje adresowe są dostępne po zakończeniu przygotowania adresu (np. po zakończeniu rozpoznawania nazw DNS). Gdy Wiązanie będzie gotowe, informacje adresowe pozostaną dostępne do czasu zresetowania opcji Wiązanie.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Pobieranie identyfikatora węzła peera powiązania.
Obowiązuje tylko po przygotowaniu obiektu powiązania.
Szczegóły | |
---|---|
Zwroty |
Identyfikator węzła Weave węzła równorzędnego
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Pobierz bieżący stan powiązania.
Szczegóły | |
---|---|
Zwroty |
Stan powiązania.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Określ, czy dana wiadomość przychodząca pochodzi od skonfigurowanego połączenia równorzędnego i jest odpowiednio uwierzytelniona.
Ta metoda potwierdza następujące informacje na temat danej wiadomości:
- Wiadomość pochodzi z węzła równorzędnego powiązania
- Wiadomość została odebrana za pomocą tego samego typu transportu co powiązanie. Jeśli wiadomość została odebrana przez połączenie, metoda sprawdza też, czy wiadomość została odebrana przez dokładne połączenie powiązane z powiązaniem.
- Klucz szyfrowania i typ użyte do zaszyfrowania wiadomości są zgodne z kluczami skonfigurowanymi w powiązaniu. W przypadku powiązań skonfigurowanych bez użycia zabezpieczeń metoda potwierdza, że wiadomość przychodząca NIE jest zaszyfrowana.
Ta metoda jest przeznaczona do stosowania w protokołach takich jak WDM, w których połączenia równorzędne mogą spontanicznie inicjować wymiany z powrotem do węzła lokalnego po początkowej wymianie węzła z peerem. W takich przypadkach metoda pozwala węzłowi lokalnym potwierdzić, że przychodząca niezamawiana wiadomość została wysłana przez powiązanego peera. Oczywiście w przypadku powiązań skonfigurowanych bez użycia szyfrowania wiadomości to potwierdzenie nie zapewnia żadnej wartości z perspektywy bezpieczeństwa. Jest to jedynie potwierdzenie, że identyfikator węzła nadawcy i typy transportu są zgodne.
Pamiętaj, że jeśli powiązanie nie jest w stanie gotowości, ta metoda zawsze zwraca wartość fałsz.
Szczegóły | |||
---|---|---|---|
Parametry |
|
||
Zwroty |
Prawda, jeśli wiadomość jest autentyczna z grupy porównawczej.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
Szczegóły | |
---|---|
Zwroty |
Prawda, jeśli trwa przygotowywanie Wiązania.
|
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Przydziel nowy kontekst Exchange do komunikacji z peerem, który jest celem powiązania.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
Wersja
void Release( void )
Zwolnij odwołanie do obiektu powiązania.
Jeśli nie ma więcej odwołań do obiektu powiązania, powiązanie zostanie zamknięte i zwolnione.
RequestPrepare
WEAVE_ERROR RequestPrepare()
Poproś aplikację o skonfigurowanie i przygotowanie Wiązania.
Kod warstwy protokołu może używać tej metody w połączeniu z Wiązaniem, który nie został skonfigurowany lub w przypadku którego nie udało się aktywować zdarzenia, aby wyzwolić zdarzenie w aplikacji (kEvent_Prepare requested) w celu skonfigurowania powiązania i przygotowania go do użycia.
Tę metodę można wywoływać tylko w przypadku powiązań w stanie Nieskonfigurowana lub Niepowodzenie.
Jeśli aplikacja nie obsługuje konfiguracji/przygotowania powiązań na żądanie, metoda zakończy się niepowodzeniem i wystąpi błąd WEAVE_ERROR_NOT_IMPLEMENTED.
Resetuj
void Reset( void )
Zresetuj powiązanie z powrotem do stanu nieskonfigurowanego.
Po wywołaniu funkcji Reset() wszystkie trwające działania przygotowujące do powiązania zostają anulowane, a wszystkie zewnętrzne zasoby komunikacyjne przechowywane przez to powiązanie zostają zwolnione. Funkcja Reset() umieszcza powiązanie w stanie Nieskonfigurowane. Po tym czasie można je ponownie skonfigurować i przygotować.
Funkcja Reset() nie zmienia liczby odwołań w powiązaniu.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
Ustaw domyślny czas oczekiwania na odpowiedź giełdy, który ma być używany podczas komunikacji z peerem.
Szczegóły | |||
---|---|---|---|
Parametry |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Ustaw domyślną konfigurację WRMP, która będzie używana do komunikacji z peerem.
Szczegóły | |||
---|---|---|---|
Parametry |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
Ustaw funkcję zdefiniowaną przez aplikację tak, aby była wywoływana, gdy wystąpi zdarzenie interfejsu API dotyczące wiązania.
Szczegóły | |||
---|---|---|---|
Parametry |
|
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
Ustaw funkcję wywołania zwrotnego zdarzenia dla kodu warstwy protokołu, używając opcji Wiązanie w imieniu aplikacji.
Ta funkcja jest wywoływana razem ze zdefiniowaną przez aplikację funkcją wywołania zwrotnego, gdy wystąpi zdarzenie interfejsu API dotyczące wiązania.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
Publiczne funkcje statyczne
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Domyślny moduł obsługi wiązań zdarzeń interfejsu API.
Aplikacje muszą wywoływać tę metodę w przypadku wszystkich zdarzeń interfejsu API, których nie rozpoznają ani nie obsługują. Podane parametry muszą być takie same jak te przekazywane przez powiązanie z funkcją obsługi zdarzeń w aplikacji.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|