nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
Weave 통신의 의도된 대상과 관련 구성 정보를 캡처합니다.
요약
Binding 객체는 피어와의 통신이 이루어지는 방식을 설명하는 구성 매개변수 집합과 함께 Weave 통신의 의도한 대상('피어'라고도 함)을 식별합니다. 바인딩은 양 당사자가 말하는 애플리케이션 프로토콜과는 별개입니다. 따라서 '누가' '방법' '무엇을'가 아니라 커뮤니케이션의 핵심입니다.
애플리케이션은 원하는 통신 채널 유형과 관련된 매개변수로 바인딩을 구성해야 합니다. 바인딩은 TCP, UDP, Weave Reliable Messaging을 사용한 UDP 및 WoBLE (Weave over BLE)를 비롯한 다양한 네트워크 전송을 지원합니다. 또한 애플리케이션은 당사자 간에 전송된 메시지를 보호하기 위해 특정 보안 메커니즘의 사용을 요청할 수 있습니다. 여기에는 CASE 및 PASE 세션, 애플리케이션 그룹 키가 포함됩니다. Binding을 구성하는 인터페이스는 선언적 API 스타일을 사용하여 애플리케이션이 통신 요구사항을 간단하게 명시할 수 있도록 합니다.
자세한 내용은 Binding::Configuration 문서를 참고하세요.
준비
통신이 발생하기 전에 Binding이 '준비'되어야 합니다. 바인딩 준비 작업에는 통신이 발생하는 데 필요한 상태를 설정하는 작업이 포함됩니다. 여기에는 피어의 네트워크 주소 확인, 네트워크 연결 설정, 보안 키 협상과 같은 작업이 포함될 수 있습니다. 애플리케이션에서 구성되면 Binding이 통신을 준비하는 데 필요한 모든 단계를 처리하며 프로세스가 완료되면 다시 애플리케이션을 호출합니다. 이러한 방식으로 바인딩은 통신 메커니즘을 숨기므로 애플리케이션이 상위 수준의 상호작용에 집중할 수 있습니다.
커뮤니케이션
바인딩이 준비되면 사용할 준비가 됩니다. 이 상태에서 애플리케이션 (또는 애플리케이션을 대신하여 작동하는 프로토콜 레이어 코드)은 Binding을 요청하여 Weave 교환 컨텍스트를 할당합니다. 결과로 반환되는 교환 컨텍스트는 통신에 맞게 사전 구성되어 애플리케이션이 피어와 Weave 교환을 즉시 시작할 수 있습니다. 애플리케이션은 바인딩이 종료되거나 일부 이벤트(예: 네트워크 장애)로 인해 기본 통신 채널이 종료될 때까지 바인딩에서 교환 컨텍스트를 계속 요청할 수 있습니다.
바인딩 상태 변경
Binding은 사용 과정에서 API 이벤트를 애플리케이션에 전달하여 Binding의 상태 변경을 알립니다. 예를 들어 준비가 완료되면 애플리케이션에서 Binding을 사용할 준비가 되었음을 알리는 이벤트를 수신합니다. 마찬가지로 기본 통신 채널이 실패하면 이벤트가 애플리케이션에 전달되어 Binding이 더 이상 준비 상태가 아님을 알립니다.
API 이벤트는 Binding이 할당될 때 제공되는 이벤트 콜백 함수를 통해 애플리케이션에 전달됩니다.
바인딩 수명
바인딩은 여러 소프트웨어 구성요소에서 공유 사용을 허용하기 위해 참조로 계산됩니다. Binding이 할당되면 바인딩의 단일 참조가 생성됩니다. 애플리케이션은 향후 특정 시점에 이 참조를 해제하여 Binding을 이후에 무료로 재사용할 수 있도록 해야 합니다.
애플리케이션에서 Binding을 완료하면 결합에서 Close()를 호출할 수 있습니다. 이렇게 하면 애플리케이션의 Binding 참조가 해제되고 API 이벤트의 추가 전송이 모두 차단됩니다. Binding에 대한 마지막 참조가 해제되면 자동으로 닫힙니다.
공개 유형 |
|
---|---|
@23{
|
enum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
enum |
State
|
enum |
공개 속성 |
|
---|---|
AppState
|
void *
|
공개 함수 |
|
---|---|
AddRef(void)
|
void
결합 객체에 대한 참조를 예약합니다.
|
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
|
기존 Exchange 컨텍스트를 재구성하여 응답 제한 시간을 조정합니다.
|
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
|
|
BeginConfiguration()
|
바인딩을 구성하는 프로세스입니다.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
결합 객체를 닫고 참조를 해제합니다.
|
GetConnection() const
|
결합과 연결된 Weave 연결 객체를 가져옵니다.
|
GetDefaultResponseTimeout() const
|
uint32_t
피어와 통신할 때 사용할 기본 교환 응답 제한 시간을 가져옵니다.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
피어와 통신할 때 사용할 기본 WRMP 구성을 가져옵니다.
|
GetEncryptionType(void) const
|
uint8_t
피어와 주고받는 메시지를 암호화할 때 사용할 메시지 암호화 유형을 검색합니다.
|
GetEventCallback() const
|
EventCallback
Binding에 대해 API 이벤트가 발생할 때 호출할 함수를 가져옵니다.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
피어와 주고받는 메시지를 암호화할 때 사용할 메시지 암호화 키의 ID를 검색합니다.
|
GetLogId(void) const
|
uint16_t
바인딩의 고유 ID를 가져옵니다.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
제공된 PacketBuffer에 들어갈 수 있는 최대 Weave 페이로드 크기를 가져옵니다.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
피어 노드 및 연결된 주소 / 연결 정보를 설명하는 문자열을 생성합니다.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
피어의 IP 주소 정보를 가져옵니다(있는 경우).
|
GetPeerNodeId(void) const
|
uint64_t
결합 피어의 노드 ID를 검색합니다.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
바인딩의 현재 상태를 가져옵니다.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
특정 수신 메시지가 구성된 피어에서 온 것이고 적절하게 인증되었는지 확인합니다.
|
IsConnectionTransport() const
|
bool
|
IsPreparing(void) const
|
bool
|
IsReady(void) const
|
bool
|
IsUDPTransport() const
|
bool
|
IsUnreliableUDPTransport() const
|
bool
|
IsWRMTransport() const
|
bool
|
NewExchangeContext(ExchangeContext *& appExchangeContext)
|
바인딩의 대상인 피어와 통신하기 위한 새 Exchange Context를 할당합니다.
|
Release(void)
|
void
결합 객체에 대한 참조를 해제합니다.
|
RequestPrepare()
|
애플리케이션에 바인딩을 구성하고 준비하도록 요청합니다.
|
Reset(void)
|
void
결합을 구성되지 않은 상태로 다시 재설정합니다.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
피어와 통신할 때 사용할 기본 Exchange 응답 제한 시간을 설정합니다.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
피어와 통신할 때 사용할 기본 WRMP 구성을 설정합니다.
|
SetEventCallback(EventCallback aEventCallback)
|
void
Binding에 API 이벤트가 발생할 때 호출되도록 애플리케이션 정의 함수를 설정합니다.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
애플리케이션을 대신하여 Binding을 사용하여 프로토콜 레이어 코드의 이벤트 콜백 함수를 설정합니다.
|
공개 정적 함수 |
|
---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
바인딩 API 이벤트의 기본 핸들러입니다.
|
클래스 |
|
---|---|
nl:: |
Binding 객체를 구성하고 준비하기 위한 선언적 스타일 인터페이스를 제공합니다. |
구조체 |
|
---|---|
nl:: |
Binding API 이벤트에 매개변수를 입력합니다. |
nl:: |
Binding API 이벤트에 매개변수를 출력합니다. |
공개 유형
EventCallback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
EventType
EventType
속성 | |
---|---|
kEvent_BindingFailed
|
바인딩이 실패했으며 더 이상 피어와 통신하는 데 사용할 수 없습니다. |
kEvent_BindingReady
|
바인딩의 준비 작업이 성공했으며 이제 바인딩을 사용하여 피어와 통신할 수 있습니다. |
kEvent_ConnectionEstablished
|
요청된 Weave 연결이 설정되었습니다. |
kEvent_DefaultCheck
|
애플리케이션에서 올바른 기본 이벤트 처리를 확인하는 데 사용됩니다. |
kEvent_PASEParametersRequested
|
애플리케이션은 PASE 세션 설정 중에 사용할 매개변수를 제공해야 합니다. |
kEvent_PrepareFailed
|
바인딩의 준비 작업이 실패했습니다. |
kEvent_PrepareRequested
|
네트워크 스택에서 사용할 바인딩을 구성하고 준비하도록 애플리케이션에 요청합니다. |
kEvent_TAKEParametersRequested
|
애플리케이션은 TAKE 세션 설정 중에 사용할 매개변수를 제공해야 합니다. |
주
State
공개 속성
AppState
void * AppState
공개 함수
AddRef
void AddRef( void )
결합 객체에 대한 참조를 예약합니다.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
기존 Exchange 컨텍스트를 재구성하여 응답 제한 시간을 조정합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
바인딩을 구성하는 프로세스입니다.
애플리케이션에서는 피어와의 통신을 준비하기 전에 BeginConfiguration()을 호출하여 Binding을 구성해야 합니다.
세부정보 | |
---|---|
반환 |
결합을 구성하는 데 사용할 수 있는 Binding::Configuration 객체
|
CanBePrepared
bool CanBePrepared( void ) const
닫기
void Close( void )
결합 객체를 닫고 참조를 해제합니다.
이 메서드를 호출하면 바인딩이 Closed 상태로 전환됩니다. 바인딩에 대해 진행 중인 모든 준비 작업이 취소되고 바인딩에서 보유한 모든 외부 통신 리소스가 해제됩니다.
Close()를 호출하면 결합과 연결된 참조 수가 감소하고 참조 수가 0이 되면 객체가 해제됩니다.
GetConnection
WeaveConnection * GetConnection() const
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
피어와 통신할 때 사용할 기본 교환 응답 제한 시간을 가져옵니다.
세부정보 | |
---|---|
반환 |
응답 제한 시간(밀리초)입니다.
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
GetEncryptionType
uint8_t GetEncryptionType( void ) const
피어와 주고받는 메시지를 암호화할 때 사용할 메시지 암호화 유형을 검색합니다.
GetEventCallback
EventCallback GetEventCallback() const
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
피어와 주고받는 메시지를 암호화할 때 사용할 메시지 암호화 키의 ID를 검색합니다.
GetLogId
uint16_t GetLogId( void ) const
바인딩의 고유 ID를 가져옵니다.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
제공된 PacketBuffer에 들어갈 수 있는 최대 Weave 페이로드 크기를 가져옵니다.
WRM이 있는 UDP를 포함한 UDP의 경우 반환되는 최대 페이로드 크기가 반환되어 Weave 메시지가 구성된 UDP MTU를 오버플로하지 않도록 합니다.
또한 이 메서드는 Weave 페이로드가 제공된 PacketBuffer를 오버플로하지 않도록 합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
최대 Weave 페이로드 크기입니다.
|
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
피어 노드 및 연결된 주소 / 연결 정보를 설명하는 문자열을 생성합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
피어의 IP 주소 정보를 가져옵니다(있는 경우).
피어의 IP 주소 정보의 사용 가능 여부는 바인딩의 상태와 구성에 따라 다릅니다. IP 주소 정보는 IP 기반 전송 (TCP, UDP 또는 WRMP가 있는 UDP)을 사용할 때만 제공됩니다. 준비를 시작하기 전에 주소 정보는 구성 중에 애플리케이션에서 명시적으로 설정한 경우에만 사용할 수 있습니다. 준비 단계에서는 주소 준비가 완료되면 (예: DNS 변환이 완료된 후) 주소 정보를 사용할 수 있습니다. 결합이 준비되면 결합이 재설정될 때까지 주소 정보를 계속 사용할 수 있습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
결합 피어의 노드 ID를 검색합니다.
결합 객체가 준비된 후에만 유효합니다.
세부정보 | |
---|---|
반환 |
피어의 Weave 노드 ID입니다.
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
바인딩의 현재 상태를 가져옵니다.
세부정보 | |
---|---|
반환 |
결합 상태입니다.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
특정 수신 메시지가 구성된 피어에서 온 것이고 적절하게 인증되었는지 확인합니다.
이 메서드는 지정된 메시지에 대한 다음 세부정보를 확인합니다.
- 결합의 피어 노드에서 시작된 메시지입니다.
- 메시지가 결합과 동일한 전송 유형을 통해 수신되었습니다. 메시지가 연결을 통해 수신된 경우 메서드는 바인딩과 연결된 정확한 연결을 통해 메시지가 수신되었는지도 확인합니다.
- 메시지를 암호화하는 데 사용된 암호화 키 및 유형이 바인딩에 구성된 키 및 유형과 일치합니다. 보안을 사용하지 않고 구성된 바인딩의 경우 메서드는 수신 메시지가 암호화되지 않았는지 확인합니다.
이 방법은 노드에서 피어로의 초기 교환 후에 피어가 로컬 노드로의 교환을 스스로 시작할 수 있는 WDM과 같은 프로토콜에 사용하기 위한 것입니다. 이러한 경우, 메서드는 수신 메시지 메시지가 관련 피어에 의해 전송되었음을 로컬 노드가 확인할 수 있게 합니다. 물론 메시지 암호화를 사용하지 않고 구성된 바인딩의 경우 이 어설션은 보안 관점에서 가치가 없습니다. 발신자 노드 ID와 전송 유형이 일치하는지만 확인할 뿐입니다.)
바인딩이 준비 상태가 아니면 이 메서드는 항상 false를 반환합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
메시지가 피어에서 인증된 경우 true입니다.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
바인딩의 대상인 피어와 통신하기 위한 새 Exchange Context를 할당합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
출시
void Release( void )
결합 객체에 대한 참조를 해제합니다.
결합 객체에 대한 참조가 더 이상 없으면 결합이 닫히고 해제됩니다.
RequestPrepare
WEAVE_ERROR RequestPrepare()
재설정
void Reset( void )
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
피어와 통신할 때 사용할 기본 Exchange 응답 제한 시간을 설정합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
공개 정적 함수
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
바인딩 API 이벤트의 기본 핸들러입니다.
애플리케이션에서 인식하거나 처리할 수 없는 API 이벤트에 대해 이 메서드를 호출해야 합니다. 제공된 매개변수는 바인딩을 통해 애플리케이션의 이벤트 핸들러 함수에 전달된 매개변수와 같아야 합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|