Skip to content

NemesisWasAlienToo/CoreKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Core Kit

WARNING: This library is still in heavy development and might contain bugs or undergo heavy changes at any time.

Core Kit is general purpose c++ 20 library with focus on networking specially containing commonly used tools and DHT node runner implementation.

Project architecture

  • Library : Contains CoreKit library files
  • Sample : Sample source codes

Dependencies

  • Standard c++ 20 Library
  • Openssl 1.1.0 or higher

Instalation

Core Kit is a header based library, so to use it basically download it, point your compiler include path to it and use it.

Compilation

Compile with -lssl -lcrypto flags for open ssl and -std=c++2a for c++ 20 standard libraries.

As an example to compile Main.cpp using g++ :

g++ Source/Main.cpp -o CoreKit.elf -std=c++2a -Wall -ILibrary -pthread -lssl -lcrypto

Features

Checked items are implemented completly at the moment and unchecked items are to be implemented or completed.

  • Test : Simple test and log functions

  • Dynamic Lib : Dynamic Library facilities

  • Duration

  • DateTime

  • File

  • Directory : Directory functionality including content list

  • Event : Linux Eventfd based event mechanism

  • Timer : Linux Timerfd based timer mechanism

  • Coroutine : Linux implementation of a stackful asymmetric coroutine

  • Machine : Linux implementation of a duff's device state machine coroutine

  • Foramt:

    • Base64 : Base64 Encoding
    • Hex : Hexadecimal String Encoding
    • Serializer : Data serializer and deserializer for network data packing
    • Stream : Data stream
  • Storage:

    • Sqlite3 : Sqlite3 wrapper class
  • Iterable:

    • Span : Generic array wrapper
    • List : Generic list
    • Queue : Generic FIFO Queue
    • Map : Generic red black binary tree map
    • Linked List
    • Binary tree
    • Poll : Poll io file descriptor watching mechanism
    • ePoll : ePoll io file descriptor watching mechanism
  • Network:

    • DNS : Basic DNS lookup functionalities

    • Address : Internet IP v4 and v6 address

    • EndPoint : End-Point consisting of address, port and some version specific fields

    • Socket

    • Http:

      • : Request
      • : Response
      • : Server
      • : Controller
    • DHT : Distributed Hash Table runners and tools

      • Cache : Peer cache policy
      • Handler : Request to Function Mapper for handling incomming new or pending requests
      • Key : N-Byte key (id)
      • Node
      • Server : UDP Server
      • Runner : A DHT node runner
  • Cryptography:

    • Random : Cryptographicly secure random number generation and tools
    • Digest : Digest functions like SHA , MD
    • RSA
    • AES

To do

  • Format

    • Optmize bit-copy-able objects Add and Take
  • Iterable:

    • Add Linked-List
    • Add Map
    • Add (red-black & AVL) binary search trees
  • Cryptography:

    • Add SHA3
    • Move States to heap to protect user against leaks
    • RSA Error handling
  • Http:

    • Add Controller
  • DHT:

    • Task queue between Runner and Server-Handler
    • Server connections limit

About

Linux C++ 20 library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published