EmbedThis Ioto® Agent Features
- HTTP/1.1 server.
- HTTP/1.1 client.
- MQTT/3.1.1 client.
- JSON/5 parser and query engine.
- Embedded database (based on DynamoDB OneTable)
- Transport Layer Security (TLS/SSL) with ALPN support.
- Safe, secure runtime core.
- Complete documentation.
- Extensive Samples.
- Full Source code.
Feature Overview
MQTT Client
- MQTT 3.1.1 support.
- On-demand connection management.
- TLS encryption with ALPN over port 443.
- Supports connect, publish, subscribe, ping and disconnect messages.
- Message quality of service for reliable delivery.
- Retained messages.
- Subscription pooling via master subscription topic.
- High message throughput with exceptionally low overhead.
- Wait for delivery or acknowledgement options.
- Auto reconnect.
- Scheduled connections and configurable timeouts and retries.
- Parallelism via fiber coroutines.
Embedded Database
- High performance in-memory NoSQL document database.
- Red/black binary search indexes.
- JSON documents with in-memory query API.
- Controllable local persistency on a per-table basis.
- Database triggers.
- Based on DynamoDB OneTable APIs and Schemas.
HTTP Server
- HTTP/1.0, HTTP/1.1 support.
- TLS/SSL 1.3 and Alpn support.
- URL actions that bind URLs to C functions.
- Configurable request routes and redirections.
- Supports bi-directional transfer chunk encoding to preserve keep-alive.
- Cookie and session management.
- Authentication and user management.
- Fully streaming API for dynamic input and output.
- Request tracing for HTTP request and response headers.
- Sand-box resource limits.
- Runtime configurable via JSON config files.
- HTML helpers for encoding, decoding and escaping content.
- JSON parser and query engine.
- Single-threaded, parallel fiber coroutine event-based runtime.
HTTP Client
- HTTP/1.0, HTTP.1.1 client.
- Fully streaming API for dynamic input and output.
- Convenience JSON API for interacting with REST services.
- Single-threaded, parallel fiber coroutine event-based runtime.
- TLS/SSL 1.3 with certificate verification controls.
JSON Parser and Engine
- JSON and JSON/5 support.
- JSON parser and renderer.
- JSON query engine.
Safe Runtime
- Fiber coroutines for non-blocking procedural programming model.
- Global memory error handler.
- Networking and TLS support.
- Logging framework —— filter by source and/or message type.
- Safe strings, lists, hashing and buffer management.
- Safe, secure printf that is tolerant of null args.
- Portable, cross-platform O/S abstraction.
Performance
- Tiny memory footprint. All-up is less than 200K code.
- Single-threaded fiber coroutines provide an elegant, non-blocking, procedural programming paradigm without resorting to ugly callbacks or complex threads.
- Web server request throughput (> 9,300 requests per second on Raspberry PI 4).
Security
- Sandbox limits.
- Safe portable runtime to protect against memory leaks and buffer overflows.
- Transport Layer Security (TLS/SSL).
Developer Integration
- Stand-alone Ioto program
- Embeddable Ioto library
- Easy, intuitive programming model
- Extensive C API
Documentation
- Full C API Documentation
- Cookbook of samples (cut and paste to get going)
- Tutorials
Platform Support
- Linux (2.6+)
- MAC OS X (10.7+)
- FreeBSD (10.X+)
- FreeRTOS
- ESP32
- Easily ported to new platforms
Ioto is portable and users may wish to port Ioto to other operating systems. Support is available to assist in such efforts.
Embedding Support
- Supports ARM, MIPS, X86, X64, PPC, RiscV, SH, Sparc processors
- Full cross-compilation support. Use Linux or Mac as build system
- Fine-grained control for conditional build and compilation
