At 01:16 PM 6/21/2004, Bill Stoddard wrote:
>William A. Rowe, Jr. wrote:
>>
>>Scratch my proposal 1a) - your solution 1c) is the obvious choice if the
>>user attempted to do this within apr...
>>But it's not practical, in this case because http.dll isn't just another low-level 
>>interface, but a very high-level interface of an full http provider.  And it turns 
>>out, core_filters are fairly trivial and the right solution.  If anything is busted 
>>in the implementation of core_filter logic (that led you to claim it wasn't
>>terribly practical), wouldn't 2.2 be the time to get this right?
>
>I tried for a few months (a few years ago) to maintain custom core_*_filters to 
>interface to IBM's Windows kernel resident caching GET engine and it was -way- more 
>trouble than it was worth. Apache core*filters are a moving target and I spent a huge 
>amount of time debugging problems in both the customer filters and the apache core 
>filters. The apr_iol patch solved the problem for me perfectly. The apr_iols allowed 
>me to use the Apache core filters and benefit directly from all the testing provided 
>by the user community. Using apr_iol reduced the size and most importantly the 
>complexity of the custom code I had to maintain. 

That's understandable, IIUC the IBM in-kernel code looks similar to a socket.

>I know nothing about the httpd.dll, so maybe iols would be useful, or maybe not. They 
>were useful for me for a similar (in concept) application. YMMV.

That's where http.dll's API is very different, it's a very high-level interface with
the construct

<http://msdn.microsoft.com/library/en-us/http/http/httpreceivehttprequest.asp>HttpReceiveHttpRequest
  << collect all the headers targeted to 'this' server
<http://msdn.microsoft.com/library/en-us/http/http/httpreceiverequestentitybody.asp>HttpReceiveRequestEntityBody
  << collect the body for this request
<http://msdn.microsoft.com/library/en-us/http/http/httpsendhttpresponse.asp>HttpSendHttpResponse
  << respond with all the headers as an array
<http://msdn.microsoft.com/library/en-us/http/http/httpsendresponseentitybody.asp>HttpSendResponseEntityBody
  << send the body to the client.

You are handling an HTTP_REQUEST structure, not an arbitrary stream
of bytes from the client, so it's not a match.  This looks too far different
from Apache's socket model, so I'm afraid that working at the I/O layer
would be overkill.  Replacing the connection mechanism and request pooling
logic is the straight line.

Bill



Reply via email to