Changes between Version 6 and Version 7 of soc/2007/cgi
- Timestamp:
- May 29, 2007, 1:01:51 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
soc/2007/cgi
v6 v7 2 2 3 3 Below is a partial list of things this project aims to provide: 4 * '''Implement the Controller part of the [http://en.wikipedia.org/wiki/Model-view-controller model-view-controller] idiom''' 4 5 * Simple access to standard CGI environment variables and input data. 5 6 * Clean access to request meta-data (ie. 'environment vars') and input data using alternative protocols, such as FastCGI. … … 111 112 The gateway is the abstraction of the interface with the server. This can vary from just an abstraction of std::cin/cout to a fully multiplexed set of connections, which can themselves be of more than one type. 112 113 114 === ```cgi::acceptor<>``` === 115 Accepts connections. This should probably accept on only one connection type (meaning the ```gateway``` would be responsible for retrying an accept on a different connection type if that's allowed by the current protocol. 116 117 === ```cgi::dispatcher<>``` === 118 Completion handlers should be sent to a dispatcher to be called since a variety of dispatching methods should be available. The most basic/general is a thread-per-request dispatcher; more efficient would be a thread-pool dispatcher. Users should be able to implement their own dispatcher if they wish without having to know about any other class: encapsulation is important. ''Note: asio already has a dispatcher, so what can be used from that?'' 119 113 120 114 121 === Random Notes === 115 122 116 123 * The active requests queue should hold ```boost::weak_ptr<basic_request<> >```s. That means that the request will be properly destroyed unless it's on the pending requests queue or actually being handled by user code. ''Note: to keep it alive during asynchronous requests, the user should be using a function object with a ```boost::shared_ptr<request_base>``` that they pass to the Handler given to the async request. 124 * The standard CGI sub-library should be header-only. Ideally the other parts (eg. fcgi_service) will be either header-only or compilable, with compilable as the default: a multi-process FastCGI server pool is the most common use, so using a shared '[MVC-]controller' library is likely to be quite effective.