Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nope.c architecture #36

Open
riolet opened this issue Jul 30, 2014 · 3 comments
Open

nope.c architecture #36

riolet opened this issue Jul 30, 2014 · 3 comments
Labels

Comments

@riolet
Copy link
Collaborator

riolet commented Jul 30, 2014

Let's have a brief discussion about nope.c architecture. What I have in mind for nope.c is a layered architecture that embodies the Unix philosophy with three main strata:

  1. The core (nope.c): A minimalist HTTP server, mostly focussing on the event loop. We are using select() currently, but we could provide additional event notification systems (poll(),epoll() etc) as drop in replacements.
  2. The shell (nopeutils.c - optional): Provides a programming interface to the core, abstracting over most of the cores operations.
  3. The modules (optional): Provides various enhancements to make it easier to write useful web applications. nope.c does not need many specific nope.c modules as there are thousands of c libraries that nope.c can use natively. That said, we need modules for ssl, multi-part parsing and web sockets.

What are your thoughts?

@Charles0429
Copy link

When considering performance issues, I think some components such as memory pool, connection pool may be added into the project, so what does these components belong to?

@truongminh
Copy link
Contributor

If performance issues are considered vital, connection pool and memory pool should be part of the core.

@riolet
Copy link
Collaborator Author

riolet commented Aug 8, 2014

@Charles0429 and @truongminh, please take a look at the multithreaded branch I am working on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants