package from naoqi_libqi repo |
|
Package Summary
Tags | No category tags. |
Version | |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-naoqi/libqi.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2021-09-15 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
Authors
libqi
libqi is a middle-ware framework that provides RPC, type-erasure, cross-language interoperability, OS abstractions, logging facilities, asynchronous task management, dynamic module loading.
Compilation
To compile libqi you need qibuild which give some cmake functions used in libqi's CMakeLists.txt.
``` {.sourceCode .sh} pip2 install –user qibuild
git clone git@github.com:aldebaran/libqi.git cd libqi
mkdir BUILD && cd BUILD cmake .. -DQI_WITH_TESTS=OFF make make install DESTDIR=./output
Example
-------
The following example shows some features of the framework, please refer
to the documentation for further details.
``` {.sourceCode .cpp}
#include <boost/make_shared.hpp>
#include <qi/log.hpp>
#include <qi/applicationsession.hpp>
#include <qi/anyobject.hpp>
qiLogCategory("myapplication");
class MyService
{
public:
void myFunction(int val) {
qiLogInfo() << "myFunction called with " << val;
}
qi::Signal<int> eventTriggered;
qi::Property<float> angle;
};
// register the service to the type-system
QI_REGISTER_OBJECT(MyService, myFunction, eventTriggered, angle);
void print()
{
qiLogInfo() << "print was called";
}
int main(int argc, char* argv[])
{
qi::ApplicationSession app(argc, argv);
// connect the session included in the app
app.start();
qi::SessionPtr session = app.session();
// register our service
session->registerService("MyService", boost::make_shared<MyService>());
// get our service through the middleware
qi::AnyObject obj = session->service("MyService");
// call myFunction
obj.call<void>("myFunction", 42);
// call print in 2 seconds
qi::async(&print, qi::Seconds(2));
// block until ctrl-c
app.run();
}
You can then run the program with:
``` {.sourceCode .console} ./myservice –qi-standalone # for a standalone server ./myservice –qi-url tcp://somemachine:9559 # to connect to another galaxy of sessions
```
Links
git repository: http://github.com/aldebaran/libqi
Documentation: http://doc.aldebaran.com/libqi/
IRC Channel: #qi on freenode.
Maintainers:
- Joël Lamotte <<jlamotte@aldebaran.com>>
- Jérémy Monnon <<jmonnon@aldebaran.com>>
- Matthieu Paindavoine <<matthieu.paindavoine@softbankrobotics.com>>
- Vincent Palancher <<vincent.palancher@external.softbankrobotics.com>>
libqi Change Log
libqi 2.0.0
This release provides a few fixes.
Particularly, on OS using systemd
, when compiling with the WITH_SYSTEMD
flag, it fixes localhost
communication issues due to the qi-messaging’s machine-id implementation.
Compatibility breakage on OS using systemd
: The behavior change when WITH_SYSTEMD
is defined at
compile time, makes it incompatible with older versions of libqi running on the same machine, when
localhost
is the only available endpoint.
This change shall be considered a qi-messaging protocol breakage.
libqi 1.8.7
This release mainly ports the tests on GoogleTest 1.10.0
, and improves the compatibility with
more recent versions of boost
.
libqi 1.8.6
This release aims to improve security and reliability.
libqi 1.8.3
This release aims to improve TLS connection security (#45843) and to fix a connection backward compatibility issue (#45842).
libqi 1.8.2
This release focuses on fixing a blocking issue on the service directory proxy (mirroring) (#45483).
libqi 1.8.1
This release focuses on enabling remote access to service gateways on a machine hidden behind another, by adding NAT support.
libqi 1.8.0
This release focuses on improving security.
Particularly, libqi now requires TLS 1.2
on server side.
libqi 1.7.2
This release focuses on improving reliability of libqi client side.
libqi 1.7.0
This release focuses on improving reliability and memory consumption. It includes fixes to libqi.
Notice that this release introduces a small API breakage by changing qi::Signal<T>
and qi::Property<T>
to be no more a boost::function<T>
.
However qi::SignalF<T>
still can be converted to boost::function<T>
implicitely.
libqi 1.6.15
This release focuses on improving security and fixes some gateway crashes.
libqi 1.6.14
This release fixes a few qi-messaging issues.