Copyright (C) 2010-2022 Michael Wiklund.
All rights reserved.
Contact: [email protected]
This Qt based library makes it easy to distribute changing data objects. It also gives a central place to find all your systems' current data. By using the ArnBrowser, all data objects are real time presented in a tree view.
-
Data mart: Statistical data gathered from different systems. This makes it possible to run cross system analysis.
-
Windows Active Directory (R): Centralized configuration data. All in one place easily shared.
-
ArnLib: Hot changing data from different systems. Enables easy cross system data exchange, debugging, etc.
Read [doc/Install.md](\ref ins_build) how to build, install and use.
ArnLib could be beneficial in a lot of projects. It should be well suited to the following conditions:
-
A lot of configurations and changing values.
ArnLib helps giving out-of-the-box diagnostics and ability to change values not yet available in the custom application user interface. -
Hardware with a lot of sensors and controls.
Arnlib helps giving a common interface and diagnostic. -
Distributed systems.
ArnLib helps giving an out-of-the-box data sharing system that replicates Arn objects. -
Networked services by RPC (remote procedure call).
Will be quite the same as setting up signals and slots for local calls. You can find an easy example in the ArnLib package, showing a simple chat Client and Server. -
ZeroConfig detection of present services.
Helps advertise and browse a service (ftp, http, arn, ...) on a local network. This is similar to UPNP discovery of units.
- Based on Qt (4, 5 and 6), multiple platform and OS support.
- Qt based Arn browser available. Allows you to access all data objects in a tree view (see ArnBrowser).
- Web based Arn browser available, allowing you to use a standard web browser (see WebArnBrowser).
-
Hierarchical storage of hot changing data objects.
-
Arn Data objects can be: integers, floats, strings, byte arrays and variants (most Qt data types, e.g. QImage).
-
Data objects can typically be: measures, settings, data streams, documents, scripts (js), etc.
-
Arn Data objects are thread-safe.
-
Native support for data validation and double direction pipes (streams).
-
Enums, Flags and SubEnunms in code available as text for output and parse.
-
Metrics of Arn available in Arn tree.
-
Data objects can be shared in a single program, among threads or between programs, at different computers. This division of program modules can be changed and is transparent to usage of ArnLib.
-
TCP connection can be SSL-encrypted.
-
Support for temporary session data objects. Optional auto-delete of objects when tcp/ip closes and unique uuid names.
-
Dependency system with custom offered services and getting signals when all needed services are available.
-
Monitoring of newly created data objects and any mode change.
-
Login system, to give access protection and different privileges.
-
Remote access to Arn sessions, to view and control currently connected clients.
-
Optional persistent storage of object in SQLight or in a file.
-
Support for version control (VCS) of objects stored in files. This can be git.
-
Native support in JavaScript for: Arn Data Objects, Dependency system and Monitoring of changed objects.
-
Java Script jobstack with preemptive and cooperative scripts running at different priorities.
-
All data streams (pipes) can easily be monitored and manual test data can be inserted (see ArnBrowser).
-
Service Api, for calling routines anywhere in connected Arn. Remote Procedure Call (RPC) simple to use as "remote signal slots".
-
Service Api has an automatically generated help for giving syntax when doing debug manual typed calls to a RPC service.
-
Any service (ftp, http, arn, etc) can be advertised, browsed and resolved for its host address and port number.
-
High level, fully automatic support specialised for arn service, can e.g. remotely change the advertised service name.
-
Optional internal DNS_SD/mDNS routines for no dependency to any extra library.
-
Support in Qml for: Arn Data Objects, monitoring of changed objects and Service Api (RPC).
-
Added support in Qml for url like "arn:https:///test.qml".
-
Possibility to create a remote generic Qml running environment, comparable to a web browser running an arbitrary web application. This is done by ArnBrowser.