

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

# 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)에 따라 배포됩니다.


****  
<a name="coreMQTTAgent-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">coreMQTT 에이전트 코드 크기(ARM Cortex-M용 GCC로 생성된 예제)</th></tr>
  <tr><th>파일</th><th>-O1 최적화</th><th>-Os 최적화</th></tr>
</thead>
<tbody>
  <tr><td>core\_mqtt\_agent.c</td><td>1.7K</td><td>1.5K</td></tr>
  <tr><td>core\_mqtt\_agent\_command\_functions.c</td><td>0.3K</td><td>0.2K</td></tr>
  <tr><td>core\_mqtt.c(coreMQTT)</td><td>4.0K</td><td>3.4K</td></tr>
  <tr><td>core\_mqtt\_state.c(coreMQTT)</td><td>1.7K</td><td>1.3K</td></tr>
  <tr><td>core\_mqtt\_serializer.c(coreMQTT)</td><td>2.8K</td><td>2.2K</td></tr>
  <tr><td>총 추정치</td><td>10.5K</td><td>8.6K</td></tr>
</tbody>
</table>
