[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Roadmap
Hi all,
I want to discuss feature list CPPSERV needs, and vsersioning
plan.
Below is what I came up with. Please add missing things and/or say if
you think
something needs to be moved around. Please try to think of your specific app
that you'd like to write on top of CPPSERV, and what you'd need for it
while doing so ;-)
v0.0.0 - what we have right now
- support for most basic APIs
- Request
- Response
- InputStream
- OutputStream
- Response header & status control
- Cookies
- Sessions
- Usable server daemon
- Starts and daemonizes
- Redirects its sin/cout/cerr to log files
- Listens on TCP/IP socket for requests
- Manages pool of threads that handle requests (still needs to be
tested if
cleanups are done propperly)
- Loadable servlets
- Servlet is compiled as DSO
- Servlet is linked to libcserv.so
- Servlet provides "entry function" that is called by server on
servlet load
to create servlet object
- Server configuration
- Mapping between Servlet name and path to DSO implementing that
servlet
- Apache module
- Receives and handles requests
- Passes them along to CPPSERV daemon
v0.1.0 - Somethig usable for web application writer
- Servlet <-> Server interaction
- Allow unloading servlets
- Real configuration
- Allow to specify global generic parameters
- Allow to group servlets into "applications"
(Such groups would share ServletContext and sessions)
- Allow to set session timeout per-group
- Allow to set per-servlet parameters
- Allow to set things like number of threads in pool
- Allow chosing different port to listen on / IP to bind to
- Add configuration directives to apache module
- Little bit more flexible mapping of URL to servlet
- Tell where CPPSERV daemon listens (host/port)
- Daemon startup parameters
- IP to bind to
- port to listen on
- Autoconfi finalization
- Make sure "./configure; make; make install" actually gives
usable setup - all needed headers go into /usr/include/cppserv
as well as libcppserv.so gets installed
v0.2.0 - Make servlet engine stable
- Servlet <-> Server interaction
- Servlet should supply expected server version
- Server should check the version on loading module,
and fail loading binaries with different versions
- Signal handling in servlet daemon
- Catch SIGPIPE and terminate handling of connection that
was closed. This may mean terminating the thread that handles it.
- Catch SIGSEGV, SIGFPE, SIGILL, SIGBUS and handle them in a way
that
wouldn't kill whole server. Again - terminate the thread that
caused
the signal, and also close connection to web server nicely
- Threading issues
- Analyze race and deadlock conditions
v0.99.0 - Make CPPSERV release-1.0 ready. I.E. production-quality.
- Nice utilites
- File upload API
- apxs-like utility for servlet compilation/installation
- Forward/Backward compatibility considerations
- Figure out proper include directory structure
- Add ELF versioning to libcserv.so
- Administration pleasures
- Web-based config editor
- Stats access (think - web page with list of active sessions
for a servlet context)
- Runtime configuration change/reloading
- Follow-Ups:
- Re: Roadmap
- From: "Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>