Skip to content

General purpose C++ libraries, including container templates, memory management, event-oriented programming and classes for manipulating data from network protocols.

License

Notifications You must be signed in to change notification settings

sjakub/pravala-toolkit

 
 

Repository files navigation

Pravala Toolkit

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.

Directory structure overview

  • 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.

C++

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.

Java

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#

C# dependencies for the C# code generated by the protocol generated are provided in csharp directory.

Tools

A number of helper C++ tools are provided.

Base64

A simple Base64 encoding/decoding tool.

EcfgGen

A tool for generating configuration data used by C++ LibConfig library that can be embedded inside binary files.

EcfgInspect

A tool for inspecting embedded configuration data.

ProtoGen

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.

ProtoDec

A tool for making inspecing binary data produced using generated protocol code easier.

RemoteLog

A tool for accessing log streams from remote applications that provide remote logging access using C++ LibCtrl library.

Socks5Proxy

A simple SOCKS5 proxy tool.

License

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.

About

General purpose C++ libraries, including container templates, memory management, event-oriented programming and classes for manipulating data from network protocols.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 90.2%
  • C# 4.2%
  • Java 2.6%
  • C 1.6%
  • CMake 1.2%
  • Shell 0.2%