

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# coreMQTT 에이전트 라이브러리
<a name="coremqtt-agent"></a>

**참고**  <a name="out-of-date-message"></a>
이 페이지의 내용은 최신 상태가 아닐 수 있습니다. 최신 업데이트는 [Freertos.org 라이브러리 페이지](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)를 참조하세요.

## 소개
<a name="coremqtt-agent-introduction"></a>

coreMQTT 에이전트 라이브러리는 [coreMQTT 라이브러리](coremqtt.md)에 스레드 안전성을 추가하는 상위 수준 API입니다. 이를 통해 백그라운드에서 MQTT 연결을 관리하고 다른 태스크의 개입이 필요 없는 전용 MQTT 에이전트 태스크를 생성할 수 있습니다. 이 라이브러리는 coreMQTT API와 동등한 스레드 안전 기능을 제공하므로 다중 스레드 환경에서 사용할 수 있습니다.

MQTT 에이전트는 독립적인 태스크(또는 실행 스레드)입니다. MQTT 라이브러리의 API에 액세스할 수 있는 유일한 태스크이기 때문에 스레드 안전성이 향상됩니다. 모든 MQTT API 호출을 단일 태스크로 격리하여 액세스를 직렬화하므로 세마포어 또는 기타 동기화 프리미티브가 필요하지 않습니다.

라이브러리는 스레드 안전 메시징 대기열(또는 기타 프로세스 간 통신 메커니즘)를 사용하여 MQTT API를 직접 호출하는 모든 요청을 직렬화합니다. 메시징 구현은 메시징 인터페이스를 통해 라이브러리와 분리되므로 라이브러리를 다른 운영 체제로 이식할 수 있습니다. 메시징 인터페이스는 에이전트의 명령 구조에 대한 포인터를 보내고 받는 함수와 이러한 명령 객체를 할당하는 함수로 구성되어 있으며, 이를 통해 애플리케이션 작성자는 해당 애플리케이션에 적합한 메모리 할당 전략을 결정할 수 있습니다.

이 라이브러리는 C로 작성되었으며 [ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) 및 [MISRA C:2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/)를 준수하도록 설계되었습니다. 이 라이브러리에는 [coreMQTT 라이브러리](coremqtt.md) 및 표준 C 라이브러리 이외의 추가 라이브러리에 대한 종속성이 없습니다. 또한 안전한 메모리 사용과 힙 할당 없음을 보여주는 [증거](https://www.cprover.org/cbmc/)가 있어 IoT 마이크로컨트롤러에 사용할 수 있을 뿐만 아니라 다른 플랫폼으로도 완벽하게 이식할 수 있습니다.

이 라이브러리는 자유롭게 사용할 수 있으며 [MIT 오픈 소스 라이선스](https://www.freertos.org/a00114.html)에 따라 배포됩니다.


****  

| coreMQTT 에이전트 코드 크기(ARM Cortex-M용 GCC로 생성된 예제) | 파일 | -O1 최적화 | -Os 최적화 | 
| --- | --- | --- | --- | 
| core\$1mqtt\$1agent.c | 1.7K | 1.5K | 
| core\$1mqtt\$1agent\$1command\$1functions.c | 0.3K | 0.2K | 
| core\$1mqtt.c(coreMQTT) | 4.0K | 3.4K | 
| core\$1mqtt\$1state.c(coreMQTT) | 1.7K | 1.3K | 
| core\$1mqtt\$1serializer.c(coreMQTT) | 2.8K | 2.2K | 
| 총 추정치 | 10.5K | 8.6K | 