Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

nl::매초::결합

#include <src/lib/core/WeaveBinding.h>

Weave 통신 및 관련 구성 정보의 의도된 대상을 캡처합니다.

요약

결합 객체는 Weave 통신의 의도된 대상("Peer"라고도 함)과 피어와의 통신 진행 방법을 설명하는 구성 매개변수 집합을 식별합니다. 바인딩은 양 당사자 사이에 전송되는 애플리케이션 프로토콜과는 별개입니다. 이 경우 커뮤니케이션의

구성

애플리케이션은 원하는 통신 채널 유형과 관련된 매개변수를 사용하여 결합을 구성해야 합니다. 바인딩은 Weave Reliable Messaging을 사용한 TCP, UDP, UDP, WoBLE (Weave over BLE)를 비롯한 다양한 네트워크 전송을 지원합니다. 애플리케이션은 특정 보안 메커니즘의 사용을 요청하여 당사자 간에 전송되는 메시지를 보호할 수도 있습니다. CASE 및 PASE 세션과 애플리케이션 그룹 키가 포함됩니다. 결합을 구성하기 위한 인터페이스는 애플리케이션이 간단한 방식으로 통신 요구사항을 명시할 수 있는 선언적 API 스타일을 사용합니다.

자세한 내용은 Binding::Configuration 문서를 참고하세요.

준비

통신이 실행되기 전에 결합은 "prepared."여야 합니다. 결합을 준비하는 작업에는 통신이 발생하는 데 필요한 상태가 설정되어야 합니다. 여기에는 피어의 네트워크 주소 확인, 네트워크 연결 설정, 보안 키 협상 등이 포함될 수 있습니다. 애플리케이션에서 구성한 후에는 결합이 통신 준비에 필요한 모든 단계를 처리하며 프로세스가 완료되면 애플리케이션을 다시 호출합니다. 이렇게 바인딩을 사용하면 통신 메커니즘이 숨겨지므로 애플리케이션이 상위 수준의 상호작용에 집중할 수 있습니다.

통신

결합이 준비되면 사용할 수 있습니다. 이 상태에서 애플리케이션 (또는 더 일반적으로는 애플리케이션을 대신하여 작동하는 프로토콜 레이어 코드)이 Weave 교환 컨텍스트를 할당하기 위해 Binding을 요청합니다. 결과로 반환되는 교환 컨텍스트는 통신용으로 사전 구성되어 있으므로, 애플리케이션이 피어와 즉시 Weave 교환을 시작할 수 있습니다. 애플리케이션은 결합에서 결합이 종료되거나 네트워크 이벤트 등의 특정 이벤트가 기본 통신 채널을 종료할 때까지 교환 컨텍스트를 계속 요청할 수 있습니다.

결합 상태 변경사항

사용하는 동안 결합은 API 이벤트를 애플리케이션에 전달하여 결합 상태 변경을 알립니다. 예를 들어 준비가 성공하면 애플리케이션에서 Binding을 사용할 준비가 되었음을 알리는 이벤트를 수신합니다. 마찬가지로 기본 통신 채널에 장애가 발생하면 결합이 더 이상 준비 상태가 아님을 알리는 이벤트가 애플리케이션에 전달됩니다.

API 이벤트는 Binding이 할당될 때 제공된 이벤트 콜백 함수를 통해 애플리케이션에 전달됩니다.

결합 수명

결합은 여러 소프트웨어 구성요소에서 공유 용도로 사용될 수 있도록 참조로 집계됩니다. Binding이 할당되면 binding에 대한 단일 참조가 생성됩니다. 나중에 언제든지 다시 사용할 수 있도록 결합이 무료로 제공되도록 애플리케이션은 이후에 이 참조를 해제합니다.

애플리케이션이 Binding으로 완료되면 바인딩에서 Close()를 호출할 수 있습니다. 그러면 Binding에 대한 애플리케이션 참조가 해제되고 API 이벤트의 모든 추가 전송이 차단됩니다. Binding에 대한 마지막 참조가 해제되면 자동으로 닫힙니다.

공개 유형

@23{
  kGetPeerDescription_MaxLength = nl::Weave::kWeavePeerDescription_MaxLength
}
enum
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
EventType{
  kEvent_ConnectionEstablished = 1,
  kEvent_BindingReady = 2,
  kEvent_PrepareFailed = 3,
  kEvent_BindingFailed = 4,
  kEvent_PrepareRequested = 5,
  kEvent_PASEParametersRequested = 6,
  kEvent_TAKEParametersRequested = 7,
  kEvent_DefaultCheck = 100
}
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 컨텍스트를 할당합니다.
Release(void)
void
결합 객체에 대한 참조를 해제합니다.
RequestPrepare()
애플리케이션이 결합을 구성하고 준비하도록 요청합니다.
Reset(void)
void
결합을 구성되지 않은 상태로 다시 재설정합니다.
SetDefaultResponseTimeout(uint32_t msec)
void
피어와 통신할 때 사용되는 기본 교환 응답 제한 시간을 설정합니다.
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
void
피어와 통신할 때 사용할 기본 WRMP 구성을 설정합니다.
SetEventCallback(EventCallback aEventCallback)
void
Binding에 대한 API 이벤트가 발생할 때 호출되는 애플리케이션 정의 함수를 설정합니다.
SetProtocolLayerCallback(EventCallback callback, void *state)
void
애플리케이션을 대신하여 결합을 사용하여 프로토콜 레이어 코드의 이벤트 콜백 함수를 설정합니다.

공개 정적 함수

DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
바인딩 API 이벤트의 기본 핸들러입니다.

클래스

nl::Weave::결합::구성

Binding 객체를 구성 및 준비하는 선언적 스타일 인터페이스를 제공합니다.

구조체

nl::Weave::결합::InEventParam

Binding API 이벤트에 매개변수를 입력합니다.

nl::Weave::결합::OutEventParam

Binding API 이벤트에 매개변수를 출력합니다.

공개 유형

@23

 @23
속성
kGetPeerDescription_MaxLength

GetPeerDescription()에서 반환된 최대 문자열 길이(NUL 문자 포함).

이벤트 콜백

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

binding에서 준비 작업을 실행할 수 없습니다.

kEvent_PrepareRequested

애플리케이션은 네트워크 스택에서 사용할 결합을 구성하고 준비하도록 요청됩니다.

kEvent_TAKEParametersRequested

TAKE 세션 설정 중에 사용할 매개변수를 제공하라는 요청을 받습니다.

상태

 State

공개 속성

앱 상태

void * AppState

공개 함수

추가 참조

void AddRef(
  void
)

결합 객체에 대한 참조를 예약합니다.

AdjustResponseTimeout

WEAVE_ERROR AdjustResponseTimeout(
  ExchangeContext *apExchangeContext
) const 

기존 Exchange 컨텍스트를 다시 구성하여 응답 시간 제한을 조정합니다.

세부정보
매개변수
[in] apExchangeContext
다시 구성할 Exchange Context 객체에 대한 포인터

RightSizedBuffer 할당

WEAVE_ERROR AllocateRightSizedBuffer(
  PacketBuffer *& buf,
  const uint32_t desiredSize,
  const uint32_t minSize,
  uint32_t & outMaxPayloadSize
)

BeginConfiguration(시작 구성)

Configuration BeginConfiguration()

결합 구성 프로세스

애플리케이션은 피어와의 통신을 위해 준비하기 전에 BeginConfiguration()을 호출하여 Binding을 구성해야 합니다.

세부정보
반환
결합을 구성하는 데 사용할 수 있는 Binding::Configuration 객체

준비 가능

bool CanBePrepared(
  void
) const 

닫기

void Close(
  void
)

결합 객체를 닫고 참조를 해제합니다.

이 메서드를 호출하면 바인딩이 Closed 상태로 전환됩니다. 결합에 대해 진행 중인 준비 작업이 취소되고 결합에 보관된 모든 외부 커뮤니케이션 리소스가 해제됩니다.

Close()를 호출하면 결합과 관련된 참조 수가 줄어들어 참조 수가 0이 되면 객체가 해제됩니다.

GetConnection

WeaveConnection * GetConnection() const 

결합과 연결된 Weave 연결 객체를 가져옵니다.

세부정보
반환
WeaveConnection 객체에 대한 포인터 또는 결합과 연결된 연결이 없는 경우 NULL

GetDefaultResponseTimeout

uint32_t GetDefaultResponseTimeout() const 

피어와 통신할 때 사용되는 기본 교환 응답 제한 시간을 가져옵니다.

세부정보
반환
응답 제한 시간(밀리초)입니다.

GetDefaultWRMPConfig

const WRMPConfig & GetDefaultWRMPConfig(
  void
) const 

피어와 통신할 때 사용할 기본 WRMP 구성을 가져옵니다.

세부정보
반환
기본 구성 값이 포함된 WRMPConfig 구조에 대한 참조입니다.

암호화 유형

uint8_t GetEncryptionType(
  void
) const 

피어 간 메시지를 암호화할 때 사용할 메시지 암호화 유형을 검색합니다.

GetEventCallback

EventCallback GetEventCallback() const 

Binding에 대한 API 이벤트가 발생할 때 호출되는 함수를 가져옵니다.

세부정보
반환
콜백 함수에 대한 포인터입니다.

GetExchangeManager : 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를 오버플로하지 않도록 합니다.

세부정보
매개변수
[in] msgBuf
메시지 페이로드를 작성할 PacketBuffer에 대한 포인터입니다.
반환
위브 페이로드의 최대 크기입니다.

GetPeerDescription

void GetPeerDescription(
  char *buf,
  uint32_t bufSize
) const 

피어 노드 및 관련 주소 / 연결 정보를 설명하는 문자열을 생성합니다.

세부정보
매개변수
[in] buf
문자열을 작성해야 하는 버퍼 포인터로, 제공된 버퍼는 최소한 kGetPeerDescription_MaxLength보다 커야 합니다. 더 작은 버퍼가 제공되면 문자열이 크기에 맞게 잘립니다. 출력에는 모든 경우에 NUL 종료 문자가 포함됩니다.
[in] bufSize
buf가 가리키는 버퍼의 크기입니다.

GetPeerIPAddress

void GetPeerIPAddress(
  nl::Inet::IPAddress & address,
  uint16_t & port,
  InterfaceId & interfaceId
) const 

피어의 IP 주소 정보를 검색합니다(있는 경우).

피어의 IP 주소 정보의 사용 가능 여부는 결합의 상태 및 구성에 따라 다릅니다. IP 주소 정보는 IP 기반 전송 (TCP, UDP, WRMP와 함께 UDP)을 사용할 때만 사용할 수 있습니다. 준비하기 전에 주소 정보는 구성 중에 애플리케이션에서 명시적으로 설정한 경우에만 사용할 수 있습니다. 준비 단계에서 주소 준비가 완료되면 DNS 확인이 완료된 후 주소 정보를 사용할 수 있습니다. 결합이 준비되면 결합이 재설정될 때까지 주소 정보를 사용할 수 있습니다.

세부정보
매개변수
[out] address
피어의 IP 주소를 수신할 IPAddress 객체에 대한 참조입니다. 피어의 IP 주소 정보를 사용할 수 없는 경우 이 값은 IPAddress::Any로 설정됩니다.
[out] port
피어의 포트 번호를 수신할 정수에 대한 참조입니다. 피어의 IP 주소 정보를 사용할 수 없는 경우 이 값은 정의되지 않습니다.
[out] interfaceId
피어에 도달할 수 있는 네트워크 인터페이스의 ID를 수신할 정수에 대한 참조입니다. 피어의 IP 주소 정보를 사용할 수 없는 경우 이 값은 정의되지 않습니다.

피어 피어 ID 가져오기

uint64_t GetPeerNodeId(
  void
) const 

결합 피어의 노드 ID를 검색합니다.

결합 객체가 준비된 경우에만 유효합니다.

세부정보
반환
피어의 노드 ID ID

GetProtocolLayerCallback

void GetProtocolLayerCallback(
  EventCallback & callback,
  void *& state
) const 

GetState

State GetState(
  void
) const 

바인딩의 현재 상태를 검색합니다.

세부정보
반환
binding 상태입니다.

IsAuthenticMessageFromPeer

bool IsAuthenticMessageFromPeer(
  const WeaveMessageInfo *msgInfo
)

특정 수신 메일이 구성된 피어에서 보낸 것인지, 올바르게 인증되었는지 확인합니다.

이 메서드는 지정된 메시지에 대한 다음 세부정보를 확인합니다.

  • 결합의 피어 노드에서 보낸 메시지입니다.
  • 결합과 동일한 전송 유형을 통해 메시지를 수신했습니다. 연결을 통해 메시지를 수신한 경우 이 메서드는 결합과 연결된 정확한 연결을 통해 메시지가 수신되었는지도 확인합니다.
  • 메시지를 암호화하는 데 사용되는 암호화 키와 유형이 결합에 구성된 암호화 유형과 일치합니다. 보안을 사용하지 않고 구성한 바인딩의 경우 메서드는 수신 메일이 암호화되지 않았음을 확인합니다.

이 방식은 동료 간 초기 교환 후 로컬 노드에서 자발적으로 교환을 시작할 수 있는 WDM과 같은 프로토콜에서 사용하도록 고안되었습니다. 이러한 경우 이 메서드를 사용하면 로컬 노드가 수신되지 않은 메시지가 연결된 피어에서 전송되었는지 확인할 수 있습니다. 물론 메시지 암호화를 사용하지 않고 구성된 바인딩의 경우 이 어설션은 보안 측면에서 아무런 가치가 없습니다. 발신자 노드 ID와 전송 유형이 일치하는지만 확인하면 됩니다.

바인딩이 준비 상태가 아니면 이 메서드는 항상 false를 반환합니다.

세부정보
매개변수
[in] msgInfo
수신 메시지의 Weave 메시지 정보입니다.
반환
메시지가 신뢰할 수 있는 피어에서 true인 경우 true입니다.

IsConnectionTransport

bool IsConnectionTransport() const 

준비 중

bool IsPreparing(
  void
) const 

세부정보
반환
Binding이 현재 준비 중인 경우 true입니다.

준비됨

bool IsReady(
  void
) const 

세부정보
반환
Binding이 Ready 상태인 경우 true입니다.

UDPTransport

bool IsUDPTransport() const 

UnUnliliableUDPUDP

bool IsUnreliableUDPTransport() const 

IsWRMTransport

bool IsWRMTransport() const 

새 교환 컨텍스트

WEAVE_ERROR NewExchangeContext(
  ExchangeContext *& appExchangeContext
)

결합의 대상인 피어와 통신하기 위해 새 Exchange 컨텍스트를 할당합니다.

세부정보
매개변수
[out] appExchangeContext
새로 할당된 Exchange Context 객체를 수신할 포인터에 대한 참조입니다. 포인터는 메서드가 실패하는 경우 NULL로 설정됩니다.
반환 값
WEAVE_NO_ERROR
교환 컨텍스트가 성공적으로 할당된 경우
WEAVE_ERROR_NO_MEMORY
교환 컨텍스트를 할당할 메모리가 없는 경우
WEAVE_ERROR_INCORRECT_STATE
결합이 준비 상태가 아닌 경우
other
결합 구성에 따른 교환 컨텍스트 구성과 관련된 기타 오류입니다.

출시

void Release(
  void
)

결합 객체에 대한 참조를 해제합니다.

결합 객체에 대한 참조가 더 이상 없으면 결합이 닫히고 해제됩니다.

요청 준비

WEAVE_ERROR RequestPrepare()

애플리케이션이 결합을 구성하고 준비하도록 요청합니다.

프로토콜 레이어 코드는 구성이나 사용할 수 없는 결합에서 이 메서드를 사용하여 바인딩을 구성 및 사용하도록 요청하는 애플리케이션 (kEvent_PrepareRequested)에 이벤트를 트리거할 수 있습니다.

이 메서드는 NotConfigured 또는 Failed 상태인 경우에만 바인딩에서 호출할 수 있습니다.

애플리케이션에서 바인딩의 주문형 구성/준비를 지원하지 않으면 메서드가 WEAVE_ERROR_NOT_IMPLEMENTED와 함께 실패합니다.

재설정

void Reset(
  void
)

결합을 구성되지 않은 상태로 다시 재설정합니다.

Reset()이 호출되면 결합에 대해 진행 중인 모든 준비 작업이 취소되고 결합에 보관된 모든 외부 커뮤니케이션 리소스가 해제됩니다. Reset()은 결합을 구성되지 않은 상태로 배치합니다. 구성 후 다시 구성될 수 있습니다.

Reset()는 결합의 참조 수를 변경하지 않습니다.

SetDefaultResponseTimeout

void SetDefaultResponseTimeout(
  uint32_t msec
)

피어와 통신할 때 사용되는 기본 교환 응답 제한 시간을 설정합니다.

세부정보
매개변수
[in] timeout
새 응답 제한 시간(밀리초)입니다.

SetDefaultWRMPConfig

void SetDefaultWRMPConfig(
  const WRMPConfig & wrmpConfig
)

피어와 통신할 때 사용할 기본 WRMP 구성을 설정합니다.

세부정보
매개변수
[in] aWRMPConfig
새 기본 구성이 포함된 WRMPConfig 구조에 대한 참조입니다.

SetEventCallback

void SetEventCallback(
  EventCallback aEventCallback
)

Binding에 대한 API 이벤트가 발생할 때 호출되는 애플리케이션 정의 함수를 설정합니다.

세부정보
매개변수
[in] aEventCallback
콜백 함수에 대한 포인터입니다.

SetProtocolLayerCallback

void SetProtocolLayerCallback(
  EventCallback callback,
  void *state
)

애플리케이션을 대신하여 결합을 사용하여 프로토콜 레이어 코드의 이벤트 콜백 함수를 설정합니다.

이 함수는 Binding에 대한 API 이벤트가 발생하면 애플리케이션 정의 콜백 함수와 함께 호출됩니다.

세부정보
매개변수
[in] callback
콜백 함수에 대한 포인터입니다.
[in] state
프로토콜 레이어 콜백이 발생할 때 프로토콜 레이어 코드에 제공될 상태 객체에 대한 포인터입니다.

공개 정적 함수

DefaultEventHandler

void DefaultEventHandler(
  void *apAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

바인딩 API 이벤트의 기본 핸들러입니다.

애플리케이션은 인식하지 못하거나 처리하지 않은 API 이벤트에 대해 이 메서드를 호출해야 합니다. 제공된 매개변수는 애플리케이션의 이벤트 핸들러 함수에 바인딩에 의해 전달된 매개변수와 같아야 합니다.

세부정보
매개변수
[in] apAppState
결합과 관련된 애플리케이션 정의 상태 정보에 대한 포인터입니다.
[in] aEvent
이벤트 콜백에서 전달한 이벤트 ID
[in] aInParam
이벤트 콜백에서 전달한 입력 이벤트 매개변수의 참조
[in] aOutParam
이벤트 콜백에서 전달하는 출력 이벤트 매개변수의 참조