

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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\_mqtt\_agent.c | 1.7 K | 1.5 K | 
| core\_mqtt\_agent\_command\_functions.c | 0.3 K | 0.2 K | 
| core\_mqtt.c (coreMQTT) | 4.0K | 3.4K | 
| core\_mqtt\_state.c (coreMQTT) | 1.7 K | 1.3K | 
| core\_mqtt\_serializer.c (coreMQTT) | 2.8K | 2.2 K | 
| 合計 (概算) | 10.5K | 8.6K | 