README.md 3.93 KB
Newer Older
Jerome Royan's avatar
Jerome Royan committed
*This repository is part of the outcomes of the Specialist Task Force 620 and 669 focusing on the authoring and use of a World Representation as part of the ETSI ISG Augmented Reality Framework architecture (https://www.etsi.org/deliver/etsi_gs/ARF/001_099/003/01.01.01_60/gs_ARF003v010101p.pdf).*
*The set of the World Representation components includes:*
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
*•	The C++ and C# source code for servers and clients  generated from OpenAPI available here (https://forge.etsi.org/rep/arf/arf005)*
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
*•	A Unity plugin and a Unity editor for authoring and accessing a World Representation hosted on a World Storage server.*
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
*All these components are available under the ETSI Labs group “World Storage API Helpers”: https://labs.etsi.org/rep/arf/world-storage-api-helpers*
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
*If you wish to contribute to this project or any other projects in the context of the [ETSI ISG Augmented Reality Framework architecture](https://www.etsi.org/committee/1420-arf), please refer to the ["How to get involved in an ISG" section on the ETSI website](https://www.etsi.org/how-to-get-involved-in-an-isg)*
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
---
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
# WORLD STORAGE CPP SERVER (RestBed)
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Description
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
This repo contains a restbed server library generation pipeline compliant to the World Storage API.
It also contains a sample using that library, it's a basic implementation allowing the user to perform all CRUD operations on the Trackable models.
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Repo Content
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
|   |  File / Folder |                                                                                    Description                                                                                    |
|:-:|:--------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| 📂 | EtsiServerGen  | The folder where the library code will be generated, the openapi generator is set to not overwrite the CmakeLists.txt used to generate and export the library to the user's sytem |
| 📂 | EtsiServerImpl | This folder contains a basic implementation of this library, its main set up a local hosted server on port 8080 waiting for CRUD REST queries on the Trackable objects             |
| 📂 | arf005         | A submodule pointing to the git containing the API specification file                                                                                                             |
| 📃 | package.json   | The file containing the npm scripts automating the whole library generation process                                                                                               |
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Requirements
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
- Ubuntu 22.04
- CMake > 2.22
- conan V2
- npm
- openapi-generator-cli version 7.5.0
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Install or update cmake
To install the last version of Cmake, we recommend to follow the instruction detailed on the following link (Using APT Repositories): https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Install conan v2
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
Check if conan is already installed on your machine, and if the version 2 is installed:
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
    conan version
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
If conan version 1 is installed, you will have to remove it before installing version 2.
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
To install conan version 2, simply run:
    
    pip install conan
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
To setup your conan profile, run:
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
    conan profile detect
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
Conan is installed on your machine, you are ready to generate the cpp code for RestBed server.
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Instal openapi-generator-cli
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
First, install openapi-generator-cli with npm:
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
    npm install @openapitools/openapi-generator-cli -g
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
Then, set its version to 7.5.0:
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
    openapi-generator-cli version-manager set 7.5.0   
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
## Code Generation
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
To generate the code and the DLLs use the following commands:
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
    npm install (if not already done)
    npm run generate && npm run build
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
You will find the header files in:
    
    /usr/local/include/worldStorageRestBedcppServer/
Jerome Royan's avatar
Jerome Royan committed

Jerome Royan's avatar
Jerome Royan committed
and the library file in:
    
    /usr/local/lib/libworldStorageRestBedcppServer.so