Skip to content

regexpressyourself/Lysten

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

☎️ A general-purpose, C-based server, implemented using multiplexed I/O with epoll and custom thread pools.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published