Git Product home page Git Product logo

starnetwork's Introduction

StarNetwork

CircleCI Codecov

Overview

StarNetwork is a simple implementation of the Star network. One node becomes host, and other nodes can send message through the host (broadcast/unicast).

Demo

The under pain is host. The left and right upper pains are guest.

demo

By following the instruction below, you can run the demo (tmux and docker-compose are both required).

1. create a tmux session (tmux new -s demo)
2. create a new terminal window, and run demo.bash in the window

Directory Structure

StarNetwork/ ................. Top src dir
├── app/ ..................... Application code
├── cmake/ ................... Helpers for CMake
│   ├── cable/  .............. https://github.com/ethereum/cable
│   ├── templates/ ........... Generate build infomation
│   └── toolchains/ .......... Toolchains for this project
├── demo.bash ................ Run demonstration
├── docker/ .................. Dockerfile and scripts
├── docker-compose.dev.yml ... Service definitions for development
├── docker-compose.release.yml Service definitions for release build
├── docker-compose.test.yml .. Service definitions for feature testing and unit testing
├── docs/ .................... Documentation for this project
├── lib/ ..................... Libraries for this project
│   ├── core/ ................ Core library
│   ├── rudp/ ................ Reliable UDP library
│   └── test/ ................ Test library
└── test/ .................... Test code
    ├── feature/ ............. Feature testing
    └── unit/ ................ Unit testing

Quick Start

Start dev server:
docker-compose -f docker-compose.dev.yml up -d dev_server
Run all tests:
docker-compose -f docker-compose.test.yml run --rm all_tests
Build for release:
docker-compose -f docker-compose.release.yml run --rm build

Development

If you use CLion, remote debugging is available: Remote Debugging with CLion

Supported OS

  • Linux

Technologies used

  • Reliable UDP (inspired by ENet)
    • Flow Control
      • Delayed Acknowledgement
      • Variable Bandwidth

Road map

  • Traffic Encryption
  • Data Compression

Acknowledgments

I've been influenced by:

  • ENet : Reliable UDP networking library
  • Godot Engine : Multi-platform 2D and 3D game engine

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.