TRUMPF-IoT / qdsDataInterface

Write your own adapter to collect process data from your device with TRUMPF Quality Data Storage (QDS) data collector.
Mozilla Public License 2.0
1 stars 1 forks source link

Non-functional requirements #1

Open JojoEffect opened 2 years ago

JojoEffect commented 2 years ago
dschnabel commented 2 years ago

Protobuf offers these functionalities:

  1. Generate language-dependent structures and headers from proto definitions which can be incorporated into user code (e.g. C++, C#, Python, Node.js, ...)
  2. Serialize structures for storage or network transfer

Different versions of protobuf may generate slightly different structures even if the same proto definition file is used. This has implications if these structures are shared between applications (e.g. using gRPC).

Also, best practice requires that generated protobuf structures and headers are not being checked into source control, only the proto definition files. This means that every time somebody wants to compile and run the user code, protobuf needs to re-generate the structures and headers, if they are not yet present. As a result, the protobuf compiler (protoc) becomes a compile time requirement because without the generated files, the user code will not compile. Problems can occur, if the user code was implemented against an API generated by a different version of protoc. For this reason, protobuf checks the variable PROTOBUF_VERSION and prints these errors:

In general, protobuf tries to keep API compatibility between versions, so a tight version match is not needed. However, it is still recommended to use similar protobuf versions for code generation.

For this reason, I think we need to agree on a protobuf version to use in this project.

dschnabel commented 2 years ago

C++ 11 standard

The library makes use of these C++17 features:

These will have to be re-written to work with C++11.