CPPSERV


Home Projects Jobs Clientele Contact

cppserv


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Roadmap



Oh, there is one important piece I forgot: Docs. If you are reading
through the code,
and notice something that needs explanation, please add DoxyGen format
comments,
and send me diffs ;-)

    Ilya.

Ilya A. Volynets-Evenbakh wrote:

> 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
>


-- 
Ilya A. Volynets-Evenbakh
Total Knowledge. CTO
http://www.total-knowledge.com


Authoright © Total Knowledge: 2001-2008