(name 'AL-Http-cwp.65' message 'A couple of tweaks to make  creating response objects more pleasant.' id '23bcb20e-80c6-440f-9385-6f3b79f21fd8' date '14 January 2013' time '10:29:13.916 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.64' message 'Implemented Etag>>=' id '90aebde9-eacb-4904-98a9-8067b73b6473' date '12 January 2013' time '7:42:25.036 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.63' message 'Trivial refactoring.' id 'bb7d23c3-a492-4a36-a05e-c1426a266173' date '12 January 2013' time '12:21:24.924 am' author 'cwp' ancestors ((name 'AL-Http-cwp.62' message 'Restore the #none method, which got lost in the merge.' id '3e0a11e2-d95b-4d62-9e0a-8a2757917f3b' date '1 January 2013' time '2:12:04.644 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.61' message 'merge' id '1a51a165-ddc9-428d-8d56-55cf5fc363a3' date '1 January 2013' time '2:08:57.706 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.60' message 'Renamed ALEntity to ALHttpEntity to free up the name.' id '551cdc97-6759-4e1b-b5f2-5d013780b718' date '1 January 2013' time '2:07:30.837 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.58' message 'Added cookie headers to the generator specs, and generated the assocated headers. Added ALUrl>>printWith: so that Location headers can accept url arguments.' id '4105c0be-688d-4cc0-aa8d-f18234f0925a' date '26 December 2012' time '7:53:55.988 am' author 'cwp' ancestors ((name 'AL-Http-cwp.57' message 'Added an ALStrings class to support the Vary header.' id '0e631edf-389b-4916-b440-49a1efc4dd7d' date '19 December 2012' time '11:20:22.881 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.56' message 'Revamped the ALMimeMessage hierarchy with generated accessors for headers defined by RFC2616.' id 'f74b652e-f019-4fea-80fd-44f4460818c4' date '13 December 2012' time '1:58:49.067 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.55' message 'Added support for Etag and timestamp headers to facilitate caching by the browser.' id '8f92605a-a412-4ef0-bb1c-d6d00c67d9a1' date '6 December 2012' time '4:58:55.085 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.54' message 'Added accessors for If-None-Match headers.' id 'ea6c6e0a-17e7-49b5-a0e7-809912cf1a34' date '30 November 2012' time '9:42:10.707 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.53' message 'Create a Etag value class, and moved handling of HTTP exceptions in a dedicated relay class.' id 'a958f06d-b3f2-4e2d-af43-5b88ba439d32' date '30 November 2012' time '9:12:57.287 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.52' message 'More refactoring around relays:
  * ALClient now sets the host header directly, rather than relying on ALHostRelay. Also, uses an ALHost instance internally, rather than a host/port pair.
  * ALTerminalRelay now terminates the relay chain, and handles dispatching through a locator, rather than the locator acting as a relay
  * Got rid of ALVariableRelay, as it wasn''t being used, and probably didn''t work.
  * Got rid of the #annotate: stuff, since http messages now deal with building the stream stack on their own.
  * Relays now implement #write:into: so as to be able to influence entity rendering.' id 'ce3efcfb-9621-4580-88a5-0689a2cb1c52' date '24 November 2012' time '10:23:52.587 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.51' message 'Added a getter for the ''Accept'' header.' id '12c4a4b4-e913-4d37-b3c9-758324d0be61' date '17 November 2012' time '10:35:04.554 am' author 'cwp' ancestors ((name 'AL-Http-cwp.50' message 'Http header processing is now handled by message and entity objects, rather than relays.' id 'a4ada3a1-8f89-4ed2-b9dc-ecbc3c18ab1a' date '5 November 2012' time '12:41:45.884 am' author 'cwp' ancestors ((name 'AL-Http-cwp.49' message 'Simplified ALResourceQueue.' id 'b8abe204-f087-4247-aa5a-cd1fa99c35f8' date '1 November 2012' time '11:24:49.897 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.48' message 'Ignore Incomplete errors when writing responses to the socket. It just means the client has dropped the connection.' id '9ddd8a5c-594b-492e-8008-cf8ad5b1c950' date '1 November 2012' time '11:16:09.792 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.47' message 'Folded ALReader into ALConnection for simplicity.' id '759a13dc-cd7a-42df-ba18-41e5c1e406fb' date '1 November 2012' time '11:10:58.87 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.46' message 'Simplified the process model by removing writers. Each request gets its own process. Pipelining is supported using ALResourceQueue, which ensures that the responses are written in the correct order, regardless of when they are ready for writing.' id '7f4fcb6e-08ad-4f38-8d61-6e75ef48c6b7' date '30 October 2012' time '5:48:42.886 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.45' message 'Make the server purge connections that have been closed by the client, as well as idle connections.' id 'baee9f7e-412d-4604-a15e-ece4a6944931' date '29 October 2012' time '12:28:33.741 am' author 'cwp' ancestors ((name 'AL-Http-cwp.44' message 'Refactored the process model to use two processes per connection, plus a process for each dispatch.' id '47cae1ae-6a49-43d9-a953-0d2ba8f68dca' date '29 October 2012' time '12:14:08.204 am' author 'cwp' ancestors ((name 'AL-Http-cwp.43' message 'Refactored ALFormDataParser so that it can be used for url queries as well as POSTed forms. Implemented comparisons and hashing for urls and paths.' id 'a1a84a7b-0ac0-4eef-976e-b28e1194675c' date '9 October 2012' time '12:47:50.034 am' author 'cwp' ancestors ((name 'AL-Http-cwp.42' message 'Moved ALPath from AL-Application. Implmented ALUrl, and switched to using it instead of bare paths.' id '5bdbc9ad-1624-46d5-b987-e4488b8f13e0' date '8 October 2012' time '2:36:47.495 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.41' message 'Added support for parsing cookie headers.' id 'd5574a66-821b-4602-a5b1-09d2b00bf006' date '17 July 2012' time '11:22:10.989 am' author 'cwp' ancestors ((name 'AL-Http-cwp.40' message 'Added a couple of convenience methods for dealing with JSON.' id 'ca584b00-7115-4b31-91cd-86f9782a87f1' date '2 April 2012' time '5:54:28.884 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.39' message 'Added an exception for 406 Not Acceptable.' id 'c2d9c77c-4338-4376-a1bd-5c226f222ec0' date '14 March 2012' time '1:47:05.629 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.38' message 'Added an accessor to ALServer so that exploring the application''s locator is easy to do from a workspace.' id 'c7824d36-0a49-469c-ae85-139a0797fa9f' date '6 March 2012' time '9:18:20.201 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.37' message 'Added an extension method that was mis-categorized.' id '5d445d82-b945-4d15-b1d5-a1e69ec257b4' date '17 February 2012' time '1:11:40.862 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.36' message 'Moved ALRelay from AL-Application, and moved parsing instance variables from ALHttpInterpreter down to ALHttpParser.' id '356c9c53-7344-4fb4-a0f5-3c0eb6761542' date '10 January 2012' time '12:26:25.943 am' author 'cwp' ancestors ((name 'AL-Http-cwp.35' message 'Lazy parsing of headers now caches the result.' id 'ef3d7fd6-87d4-4410-83dd-b0e32c19095f' date '25 October 2011' time '3:17:15.079 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.34' message 'Lots of refactoring around header values. Now we use first-class ALContentType and ALHost where possible.' id 'ac6a6cb6-6641-4f74-a0ed-af42abe9c28d' date '25 October 2011' time '3:12:24.065 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.33' message 'Merged HTTP parsing back into a single class.' id 'db34768e-297f-4b9f-818f-8fba04f27cb5' date '24 October 2011' time '3:20:17.987 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.32' message 'Optimization.' id '31af70ad-6f56-4538-8690-dc125219ae14' date '24 October 2011' time '2:53:41.982 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.31' message 'Reverted to binary parsing of HTTP messages.' id '8a638516-5739-41de-a095-11f39c2b2368' date '24 October 2011' time '2:31:19.487 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.30' message 'Consolidated all HTTP parsing into a single class, which now relies on XTHttpTokenStream to do the scanning for it.' id '1c8bf50d-b8e4-4850-9625-df4e676a3c18' date '22 October 2011' time '12:46:11.491 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.29' message 'ALServer now closes connection after a minute with no activity.' id '868f7636-2630-4482-902e-f5382c0f2e2e' date '19 October 2011' time '8:48:32.974 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.28' message 'Factored ALListener out of ALServer, which can now take on responsibility for connection management.' id '85bb8445-e027-495b-a8d5-31e86b7b6407' date '19 October 2011' time '1:12:46.267 am' author 'cwp' ancestors ((name 'AL-Http-cwp.27' message 'Added a #location: convenience setter to ALMessage.' id '36e7d862-a125-4402-94c3-aee6005d5383' date '17 October 2011' time '5:31:05.315 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.26' message 'Added an exception for 415 Unsupported Content Type, and a method to read but ignore the entity attached to a message.' id 'b6bb2f42-bb36-43df-9b50-019b87b097da' date '15 October 2011' time '12:29:02.586 am' author 'cwp' ancestors ((name 'AL-Http-cwp.25' message 'Ignore SocketPrimitiveFailed, which will get thrown on image start if the image was saved with keep-alive connections open.' id 'e8964dfc-8e36-4280-b27b-fbbf11ac5b63' date '3 October 2011' time '2:45:44.673 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.24' message 'Implemented a bunch of #isMethodFoo queries on ALRequest.
Implemented ALContentType class>>json.' id '8b3cd29c-e4fa-457d-8d5c-79a8471dcf93' date '1 October 2011' time '5:33:44.186 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.23' message 'Oops, eliminated a necessary exception handler.' id 'd6cef2a2-67e5-406a-a987-b011fc75757d' date '1 October 2011' time '12:04:49.799 am' author 'cwp' ancestors ((name 'AL-Http-cwp.22' message 'Replaced ALConnection''s error handling with ALErrorRelay, fixed several bugs in creating error responses.' id '921308d7-f44b-4209-abdb-7249bdc652e7' date '30 September 2011' time '11:54:07.005 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.21' message 'Moved the Error classes out of AL-Core and put them here, since they''re actually HTTP-releated.' id '7ce37275-b74e-41a7-a4f0-304e3361eebe' date '24 September 2011' time '3:14:37.155 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.20' message 'Added a parser for form data.' id '8c93276c-4429-434e-8bd9-19ae958e10b8' date '24 September 2011' time '3:02:52.79 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.19' message 'Extracted ALContentTypeParser from ALHttpParser.' id '0784a6e8-00a5-4d3b-b446-119686cc3312' date '15 September 2011' time '3:51:09.177 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.18' message 'Moved ALRelay into AL-Core.' id '1042babc-e5f4-486c-9205-63c5803910b7' date '13 September 2011' time '2:07:57.864 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.17' message 'Lots of little fixes to get RezVu working again.' id 'ac095406-266e-4c5b-aa73-ec7fe91bd08e' date '13 September 2011' time '11:25:54.479 am' author 'cwp' ancestors ((name 'AL-Http-cwp.16' message 'ALEntity>>readWith: only consumes the rest of the read stream after invoking the read blcok when whent the stream has been limited (to honor contentType).' id '5f9b7083-69dc-4159-be96-ec8dc0ba02f9' date '12 September 2011' time '5:28:50.743 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.15' message 'Added chunking for write entities.' id 'f6fbfe1f-eac9-4f7f-b9c1-f618f7cd1089' date '11 September 2011' time '3:20:44.849 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.14' message 'Renamed an abstract class.' id 'fc18e6a9-2ea4-4159-8a42-35d640b3310d' date '11 September 2011' time '2:24:36.674 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.13' message 'Replaced ALMediaRelay with the decoding relays. It''s not clear if automatic encoding is necessary.' id '69666da1-6453-4080-abba-bd2da94091e0' date '11 September 2011' time '12:23:46.593 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.12' message 'Make sure filters get applied in the right order, given the mismatch between the way streams are built and the way relays are nested.' id '3b10a7d6-2b00-48da-a3aa-bf58e4b72930' date '11 September 2011' time '11:11:28.186 am' author 'cwp' ancestors ((name 'AL-Http-cwp.11' message 'Cleaned up ALLimitingRelay.' id '4bb3156e-7ac1-4ca4-bc8d-25b2e13486de' date '9 September 2011' time '12:22:38.086 am' author 'cwp' ancestors ((name 'AL-Http-cwp.10' message 'Factored out a lot of the interpretation of HTTP into Relay subclasses - analogous to middleware classes in Django.' id 'e177e64a-0659-4829-83fa-8d701a454e41' date '8 September 2011' time '3:43:15.61 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.9' message 'Initial implementation of the client. Works ok, but doesn''t handle chunked transfers.' id 'a04b5b41-0dd2-4820-8d89-0dc072fa9114' date '7 September 2011' time '1:00:59.665 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.8' message 'Added an error handler so that if the application raises an error, we send a 500 response to the client.' id 'b45a3e94-ef98-4cf0-b66a-8319a12f0cf7' date '21 August 2011' time '10:53:56.845 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.7' message 'Added a couple of convenience methods.' id '99f6325f-cef6-4757-9b1c-a2bf7bfa5857' date '10 August 2011' time '12:04:06.911 am' author 'cwp' ancestors ((name 'AL-Http-cwp.6' message 'Put a nil check in ALServer>>stop, so stopping an already-stopped server is a noop.' id 'd02bb03f-b54f-4f48-9067-b757dac190b9' date '6 August 2011' time '5:26:07.569 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.5' message 'Fleshed out the HTTP implementation a bit, now able to serve JSON responses properly.' id 'e2787526-3acd-40ab-8f64-794afe17f889' date '5 May 2011' time '12:40:42.075 am' author 'cwp' ancestors ((name 'AL-Http-cwp.4' message 'Changed start/stop behaviour to terminate the process instead of waiting for it to exit. Also implemented startup/shutdown handling, so that we don''t hang the image if it gets saved with a server listening.' id '1f408730-84fe-4f77-9f4e-d5403934a02a' date '4 May 2011' time '9:19:32.965 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.3' message 'Refactored ALRequest and ALResponse.' id 'da5eb61a-9a28-4f31-9e73-f2c0fb6cd577' date '24 April 2011' time '11:12:02.617 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.2' message 'Now able to complete an HTTP response without relying on external packages. Still doesn''t accept entities from the application.' id '89aa31c8-dd58-4ecc-bbcd-a50918f7c630' date '23 April 2011' time '7:08:51.517 pm' author 'cwp' ancestors ((name 'AL-Http-cwp.1' message 'First commit, recovered from broken image.' id '1e702eb7-2476-46bb-8d8b-ec0609eb6b94' date '23 April 2011' time '2:17:16.711 pm' author 'cwp' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'AL-Http-cwp.59' message 'Added a convenience constructor to ALEntity for cases where no entity is expected, and no content-length should header should be added (as in #empty).' id 'd8f5ec59-25d8-4bcf-b519-a4f071acc45e' date '29 December 2012' time '5:06:58.629 pm' author 'cwp' ancestors ((id '4105c0be-688d-4cc0-aa8d-f18234f0925a')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())