Subject: Re: [boost] [GSoC] Opinions and suggestions for improving CGI library
From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2009-03-28 08:50:00
Eugene Wee wrote:
> As suggested, I have uploaded my proposal draft to a web page:
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk