

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Biblioteca coreMQTT Agent
<a name="coremqtt-agent"></a>

**nota**  <a name="out-of-date-message"></a>
O conteúdo desta página pode não ser up-to-date. Consulte a [página da biblioteca do FreeRTOS.org](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries) para obter a atualização mais recente.

## Introdução
<a name="coremqtt-agent-introduction"></a>

A biblioteca coreMQTT Agent é uma API de alto nível que adiciona segurança de threads ao [Biblioteca coreMQTT](coremqtt.md). Ela permite criar uma tarefa de agente MQTT dedicada que gerencia uma conexão MQTT em segundo plano e sem precisar de nenhuma intervenção de outras tarefas. A biblioteca fornece equivalentes seguros de encadeamento aos do CoreMQTT APIs, para que possa ser usada em ambientes com vários encadeamentos.

O agente MQTT é uma tarefa independente (ou thread de execução). Ele obtém a segurança do thread ao ser a única tarefa que tem permissão para acessar a API da biblioteca MQTT. Ele serializa o acesso isolando todas as chamadas da API MQTT em uma única tarefa e elimina a necessidade de semáforos ou outras primitivas de sincronização.

A biblioteca usa uma fila de mensagens segura para encadeamentos (ou outro mecanismo de comunicação entre processos) para serializar todas as solicitações para chamar o MQTT. APIs A implementação do sistema de mensagens é desacoplada da biblioteca por meio de uma interface de mensagens, que permite que a biblioteca seja transferida para outros sistemas operacionais. A interface de mensagens é composta por funções para enviar e receber ponteiros para as estruturas de comando do agente e funções para alocar esses objetos de comando, o que permite que o escritor da aplicação decida a estratégia de alocação de memória apropriada para sua aplicação.

A biblioteca é escrita em C e criada para ser compatível com [ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) e [MISRA C:2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/). A biblioteca não depende de bibliotecas adicionais além da biblioteca [Biblioteca coreMQTT](coremqtt.md) e da C padrão. A biblioteca tem [provas](https://www.cprover.org/cbmc/) que mostram o uso seguro da memória e a ausência de alocação de heap, por isso ela pode ser usada para microcontroladores do IoT, mas também é totalmente portável para outras plataformas.

Essa biblioteca pode ser usada gratuitamente e é distribuída sob a [ licença de código aberto do MIT](https://www.freertos.org/a00114.html).


****  
<a name="coreMQTTAgent-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">Tamanho de código da coreMQTT Agent (exemplo gerado com GCC para ARM Cortex-M)</th></tr>
  <tr><th>Arquivo</th><th>Com otimização -O1</th><th>Com otimização -Os</th></tr>
</thead>
<tbody>
  <tr><td>core\_mqtt\_agent.c</td><td>1,7 K</td><td>1,5 K</td></tr>
  <tr><td>core\_mqtt\_agent\_command\_functions.c</td><td>0,3 K</td><td>0,2 K</td></tr>
  <tr><td>core\_mqtt.c (CoreMQTT)</td><td>4,0 K</td><td>3,4 K</td></tr>
  <tr><td>core\_mqtt\_state.c (coreMQTT)</td><td>1,7 K</td><td>1,3 K</td></tr>
  <tr><td>core\_mqtt\_serializer.c (coreMQTT)</td><td>2,8 K</td><td>2,2 K</td></tr>
  <tr><td>Estimativas totais</td><td>10,5 K</td><td>8,6 K</td></tr>
</tbody>
</table>
