
Eugene Wee wrote:
As suggested, I have uploaded my proposal draft to a web page: http://www.comp.nus.edu.sg/~weehke/gsoc/proposal2009.html
Hi Eugene, Quoting from your web page:
Session handling allows data to persist across requests. Each session has a unique session identifier, and stores an arbitrary number of name/value pairs. The name will be a string, while the value will be a serializable object. The session identifier could be propagated via a cookie, the query string, or a hidden form field. To avoid session fixation, session identifiers can be regenerated.
At the moment, the CGI library lacks session handling entirely. My aim is to design a session handler interface that allows for pluggable storage formats: a (possibly memory mapped) file or a database table could be used to store the session's name/value pairs. As such, this part of the project will involve designing both the session interface and the session handler interface, and then an implementation will be made with at least one possible storage format.
Web applications have persistent data associated with sessions, but they also have persistent data associated with e.g. a username or page, etc. I would think that IFF the framework provides a good way to access cookies, form variables etc AND handle the data storage (database, Boost.Serialisation, Boost.Interprocess) THEN the user should be allowed to plumb these together as they wish: there are many possible combinations with no "one size fits all".
Currently, multipart/form-data parsing is done with regular expressions. However, regular expressions are not adequate to describe the structure, hence this is difficult to read and maintain. I intend to re-implement multipart/form-data parsing by using Boost.Spirit.
multipart/form-data is basically MIME, so providing a library that can also be used more generally would be useful. It would be a shame to implement a MIME parser and then to hide it as an implementation detail inside another library. I have previously implemented a basic multipart/form-data parser using "traditional" string manipulation (i.e. find, substr etc). It's not clear to me that Boost.Spirit offers a significant benefit for this task. Anyway, this is all important stuff that we should have in Boost. Go for it. Phil.