Home Projects Jobs Clientele Contact


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


Hi all,

I want to discuss feature list CPPSERV needs, and vsersioning

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

Authoright © Total Knowledge: 2001-2008