Merge Request #5 - January

Small Changes

  • OS: define SIGKILL constant on windows
  • Logs: add a CSV log handler
  • Translator: add a context
  • Object registration: new macros to advertise methods and overloads
  • Path: add conversions from/to boost::filesystem and wstring
  • qicli trace: add JSON output
  • strand: property get/set from outside are now stranded
  • signal: add asyncDisconnect (not meant to be widely used...)
  • Session: add authentication API (still not enforced by default, more on this in a later merge)
  • Actor: make it copyable (no operation)
  • Object registration: when advertising free functions, a pointer to the object is given as first argument
  • PeriodicTask: add qiClock API and deprecate old API
  • Future: add then continuation which return a future
  • Future: add unwrap to transform Future<Future<T>> into Future<T>
  • Asynchronous calls: make it return cancellable futures (does not work for remote calls yet)
  • Future: add aliases waitFor and waitUntil
  • Object registration: rework template object registration (now works)
  • Python: make async return a cancellable future (does not work for remote objects yet)

Bind Session in the type-system

Session is now bound in the type system. This means that there is now almost no difference between the Session class in C++ and in Python. You can now call loadService from Python and pass Python Session objects to C++.

qi::File

qi::File provides a way to open a file in read-only mode on the local file system and share the content of this file with potentially remote services. We provide algorithms to copy a remote file’s content to make a local copy of it, using the qi::copyToLocal or qi::prepareCopyToLocal functions.

Examples for each use case are provided in the documentation. A complete working example of a service and a service user application is also provided with qi::File sources and documentation.

Bugfixes

  • Session: fix deadlock in server when a connection is received
  • RemoteObject: fix deadlock when disconnecting a signal multiple times in parallel
  • Stats: fix crash in pushStats, stats and clearStats
  • Session: fix connection to localhost to a server in a different writable path
  • Session: fix crash when accessing a local service directory of a destroyed session
  • Eventloop: fix error about promise being set multiple times
  • fix compilation on Mac OS Yocemite
  • Python: fix python dict to c++ struct conversion
  • PeriodicTask: fix deadlock when using trigger()
  • Session: don’t make waitForService hold a reference on Session preventing it from destruction
  • Python: hide strand getter on objects (qi_strand won’t appear anymore)
  • Python: fix deadlock on property destruction
  • Python: fix deadlock on object destruction