# ArnLib
**Repository Path**: BlueBuger/ArnLib
## Basic Information
- **Project Name**: ArnLib
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2017-10-28
- **Last Updated**: 2025-01-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Copyright (C) 2010-2016 Michael Wiklund.
All rights reserved.
Contact: arnlib@wiklunden.se
# ArnLib - Active Registry Network.
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.
### Comparison to similar concepts
* **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.
## Installation and usage
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.
## Main features
* Based on Qt (4 & 5), 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).
#### Arn Data Objects
* 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).
* Metrics of Arn available in Arn tree.
#### Sharing
* 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.
* 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.
#### Persistent storage
* 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.
#### Java Script
* 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.
#### Data streams and _Remote Procedure Call_
* 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.
#### ZeroConfig and Discover
* 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.
#### Qml
* Support in Qml for: _Arn Data Objects_, monitoring of changed objects and Service Api (RPC).
* Added support in Qml for url like "arn:///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.