Giter Club home page Giter Club logo

libqi's Introduction

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.

This library is published as part of the NAOqi SDK: http://doc.aldebaran.com/

Compilation

To compile libqi you need qibuild which give some cmake functions used in libqi's CMakeLists.txt.

pip2 install --user qibuild

git clone [email protected]: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.

#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:

./myservice --qi-standalone # for a standalone server
./myservice --qi-url tcp://somemachine:9559 # to connect to another galaxy of sessions

Versioning & Branching Strategy

The current version is described in the CHANGELOG file.

We follow Semantic Versioning v2.0.0 : http://semver.org/

We follow Git Flow branching strategy: https://datasift.github.io/gitflow/IntroducingGitFlow.html but for historical reasons we use the following branch names:

  • master: last stable release;
  • team/platform/dev: development branch;
  • tags: libqi-vX.Y.Z;
  • tags if published with a NAOqi release: NAOqi-vX.Y.Z;
  • next: compatibility breaking long-term changes branch;

All branches not following this naming strategy are legacy branches. All tags not following the naming strategy are legacy tags and matches NAOqi release version numbers.

Links

git repository: http://github.com/aldebaran/libqi

Documentation: http://doc.aldebaran.com/libqi/

IRC Channel: #qi on freenode.

Maintainers

libqi's People

Contributors

alkino avatar blastrock avatar cgestes avatar ckilner avatar clemolgat-sbr avatar dmerejkowsky avatar goreal avatar gschweitzer-aldebaran avatar gstavrinos avatar hcuche avatar houssemkouki avatar jlanca avatar jmassot avatar klaim avatar llec avatar lpea avatar pmartin-sbre avatar rhumbert avatar rom1v avatar sbarthelemy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.