Code Monkey home page Code Monkey logo

capicxx-wamp-runtime's Introduction

CommonAPI C++ WAMP Runtime

Introductory remarks

CommonAPI runtime support for WAMP messaging. Please note that this project is under development. For more information, please refer to the companion project: https://github.com/GENIVI/capicxx-wamp-tools

Copyright

Copyright (C) 2017, itemis AG. Copyright (C) 2017, GENIVI Alliance, Inc.

This file is part of GENIVI Project IPC Common API C++. Contributions are licensed to the GENIVI Alliance under one or more Contribution License Agreements or MPL 2.0.

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, you can obtain one at http://mozilla.org/MPL/2.0/.

Documentation

CommonAPI WAMP C++ User Guide

As this project is currently under development, no user guide is available yet.

Further information

https://genivi.github.io/capicxx-core-tools/

Build Instructions for Linux

Prerequisites

The following packages are required to build autobahn-cpp and WAMP Runtime

  • Install build tools and Boost libs: sudo apt install libbz2-dev libssl-dev cmake libboost-dev libboost-system-dev libboost-thread-dev libboost-log-dev
MsgPack-C installation
  • Open your git folder in a terminal and type: git clone https://github.com/msgpack/msgpack-c.git
  • cd msgpack-c
  • git checkout cpp-1.4.2
  • cmake -DMSGPACK_CXX11=ON .
  • sudo make install
WebSocket++ installation
  • Open your git folder in a terminal and type: git clone https://github.com/zaphoyd/websocketpp.git
  • cd websocketpp
  • cmake .
  • sudo make install
AutobahnC++ installation

For additional help look here: Installation on Linux.

  • Open your git folder in a terminal and type: git clone https://github.com/crossbario/autobahn-cpp.git
  • cd autobahn-cpp
  • sudo cp -r autobahn/ /usr/local/include/

Build CommonAPI-WAMP Runtime

Use CMake to build the CommonAPI WAMP runtime library. We assume that your source directory is capicxx-wamp-runtime:

$ cd capicxx-wamp-runtime
$ mkdir build
$ cd build
$ cmake -D USE_INSTALLED_COMMONAPI=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ make install

You can change the installation directory by the CMake variable CMAKE_INSTALL_PREFIX or you can let it uninstalled (skip the make install command). If you want to use the uninstalled version of CommonAPI set the CMake variable USE_INSTALLED_COMMONAPI to OFF.

For further build instructions (build for windows, build documentation, tests etc.) please refer to the CommonAPI WAMP tutorial.

capicxx-wamp-runtime's People

Contributors

jeremiah avatar kbirken avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

capicxx-wamp-runtime's Issues

Reconsider implementation of WampConnection

Currently WampConnection::dispatch uses boost::asio for implementing the main loop (via Autobahn-cpp). This means that when creating multiple connections multiple main loops (?) will be created. This should be reconsidered and maybe reimplemented.

Rework synchronisation between WampConnection creation and StubAdapters.

A StubAdapter needs a connection which is properly initialized. This means WampConnection::connect has to be executed successfully. In the current implementation, WampConnection::connect will do some asynchronous steps without blocking. In the generated StubAdapterInternal-classes, there is a busy waiting at the beginning of the provideRemoteMethods() method.

This should be improved, without need for busy waiting.

Question about CMake convention and build instruction

The README says to do these steps:

$ cd capicxx-wamp-runtime
$ mkdir build

<- Here you must mean to also cd into build/ first, right?

$ cmake -D USE_INSTALLED_COMMONAPI=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ make install

At the end this is written out:
"Build files have been written to: /home/user/devel/GENIVI/capicxx-wamp-runtime"
<- Note - not written to /build

  1. I thought the more common way is that Makefile(s) are generated inside the build/ directory? That seems to be the point of creating the directory and also what I see from other cmake projects.

  2. I suppose this way is fine too, but then why not simply "cmake ." in root instead of "cmake .." inside of build...

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.