Pravala Toolkit is a collection of libraries and associated tools developed at Pravala and Carnegie Technologies.
Most of the code is general purpose C++ libraries, including container templates, memory management, event-oriented programming and classes for manipulating data from network protocols.
One of the major components is 'protocol generator'. It is a tool for generating code capable of reading and writing data messages specified in simple files describing the data structures. It is capable of generating code in C++, Java and C-sharps. This project also includes support libraries in Java and C-sharp required by the auto-generated code.
- 3rdparty - 3rd-party dependency submodules.
- cmake - Helper CMake scripts.
- csharp - C# bindings for the protocol generator.
- java - Java bindings for the protocol generator.
- lib - C++ library code.
- proto - Protocol definition files.
- scripts - Scripts for automatic code formatting.
- tests - Unit tests and test tools for C++ code.
- tools - Helper C++ tools.
Most of the code in this repository was written in C++.
It uses following dependencies (Ubuntu packages):
build-essential pkg-config git cmake bison flex ninja-build libssl-dev libcurl4-openssl-dev libgtest-dev
It also requires a number of 3rd-party components provided as submodules that can be fetched using git submodule update --init --recursive
Once installed, it can be built using CMake & make:
mkdir -p build && cd build && cmake .. && make
A number of unit tests and test tools are available and can be built using
make tests
inside build
directory.
Finally, a Dockerfile and a helper script is provided, to make it possible to build it inside a Docker image:
./docker_run.sh command
, or used without a command to use a bash shell.
Inside java
directory, there are Java dependencies for the Java code generated using the protocol generator.
A Gradle script is provided for building java code: ./gradlew :proto:build
Similarly to C++ project, a Dockerfile and a helper script is provided.
C# dependencies for the C# code generated by the protocol generated are provided in csharp
directory.
A number of helper C++ tools are provided.
A simple Base64 encoding/decoding tool.
A tool for generating configuration data used by C++ LibConfig library that can be embedded inside binary files.
A tool for inspecting embedded configuration data.
Protocol generator. It uses protocol description files (a number of files is provided in proto
directory)
to generate C++/Java/C# code to encode/decode binary messages using the protocol specified.
A tool for making inspecing binary data produced using generated protocol code easier.
A tool for accessing log streams from remote applications that provide remote logging access using C++ LibCtrl library.
A simple SOCKS5 proxy tool.
Copyright 2019 Carnegie Technologies
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.