Skip to content
☎️ A general-purpose, C-based server, implemented using multiplexed I/O with epoll and custom thread pools.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
old
src
test
.gitignore
LICENSE.md
Makefile
README.md

README.md

Lysten Logo

Lysten

A general-purpose server, implemented using multiplexed I/O with epoll and custom thread pools for concurrency on a multicore system.

Table of Contents

  1. Setting up Libraries
  2. Compiling
  3. Debugging
  4. Testing
  5. Running
  6. Built With
  7. Contributing
  8. Authors
  9. License

Setting up Libraries

Lysten uses either static or shared libraries in order to incorporate the thread pool. These libraries can be set with make.

Static Library Compilation

   make package-static-lib

Shared Library Compilation

   make package-shared-lib

Back to top

Compiling

To compile Lysten using the shared thread pool libraries, run:

   make compile-shared

To compile Lysten using the static thread pool libraries, run:

   make compile-static

Back to top

Debugging

To compile Lysten with debugging statements on, run:

   make compile-debug

Note: This compiles using the thread pool's static libraries, so make sure to run make package-static-lib first.

Back to top

Testing

Included is a test script to pelt the server with multiple clients all at once. You can run this test with:

  make test-server

By default, the test script will spin up 10 clients who each run 10 cycles or commands. This can be changed by running ./test/testserver.sh directly

Back to top

Running

To run the server, execute:

    make run-server

To start a client, execute:

    make run-client

Back to top

Built With

  • C - The C language itself
  • Epoll - Multiple epoll units are used to efficiently retrieve tasks from a job queue
  • Thread Pool - A custom thread pool is used to disperse tasks across cores
  • Pseudo TTYs - Psuedo terminals spin up to run Bash commands remotely

Back to top

Contributing

As always, I'm very happy to receive pull requests, questions/issues regarding code, and feature requests.

Back to top

Authors

Back to top

License

Lysten is licensed under the MIT License - see the LICENSE.md file for details.

Back to top

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.