Giter VIP home page Giter VIP logo

jakobod / network-driver Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 606 KB

An asynchronous network abstraction framework for applications written C++20.

License: GNU General Public License v3.0

CMake 1.51% C++ 97.78% Dockerfile 0.23% Python 0.48%
network multiplexer communication communication-library async asynchronous-io asyncio internet internet-connection tcp tcp-client tcp-server cpp linux network-abstraction socket-api socket-programming

network-driver's Introduction

network-driver

A network abstraction framework aimed at implementing different (multithreaded) multiplexing solutions, encapsulated by a common API. This is a project I work on in my free time. It may be useful to some, but I just have fun designing this framework :)

Requirements

  • C++20
  • Linux >= 2.6.2 (Epoll introduced EPOLLONESHOT with this version)
  • CMake
  • Threads
  • OpenSSL (I may relax this with a config option for people that don't want encrypted transport)

How to

building the project is accomplished by doing

// On linux this is sufficient
./configure
// On MacOS the OpenSSL root directory must be specified
./configure --openssl-root-dir=$(brew --prefix openssl)

make -C build -j$(nproc)

If one wants to build tests, they have to be enabled explicitly

./configure --enable-testing
make -C build -j$(nproc)
make -C build test

There are many tests bundled with this project, but they may not provide a good base to start. Have a look at my benchmark repo where I actually put the whole stack to some use.

TODO

Interesting Links

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.