Oleg, That's perfect, thank you. If this project moves forward I'll contribute the ICAP protocol support in the same manner that the SIP support was contributed.
Thanks, Sam On 22 March 2011 10:33, Oleg Kalnichevski <[email protected]> wrote: > On Tue, 2011-03-22 at 09:53 +0000, Sam Crawford wrote: >> Morning, >> >> I'm interested in developing an ICAP server for the purposes of >> content filtering and rewriting. As per the RFC >> (http://www.faqs.org/rfcs/rfc3507.html), ICAP uses an almost identical >> request/response protocol to HTTP. The only discernible difference I >> can see is it's use of different verbs (which HttpCore will take care >> of already), a different URI scheme and a different protocol name >> (ICAP/1.0 is the current one). For example, a typical request line >> might be: >> >> RESPMOD icap://icap.example.net/translate?mode=french ICAP/1.0 >> >> I've built a number of servers successfully with HttpCore NIO and am >> very comfortable with its operation and performance. I'm wondering if >> it's possible to re-use HttpCore for this project, even though it's >> not HTTP. >> >> So, a couple of questions: >> >> 1) Is this a sensible thing to do? > > Seems so as long as ICAP employs the same mechanisms to delimit entity > content as HTTP (content-length or chunk coding) > >> 2) Is there an easy way to instruct HttpCore to accept ICAP messages > > Easy? Probably not ;-) It is certainly doable, though. You would need a > number of custom classes such ICAP specific message parser and formatter > >> (like the request line above) and produce ICAP responses? Moreover, is >> there a class I can extend to specify support for different protocols, >> or does HttpCore not expose this? >> > > Have a look at the > > DefaultHttpRequestParser / DefaultHttpResponseWriter classes in the > HttpCore NIO module. You would need similar classes that are ICAP > protocol aware. > > Most probably you will need a custom HTTP connection implementation that > employs ICAP specific message parser / formatter when serializing / > deserializing messages. Otherwise you should be able to re-use existing > HTTP protocol code. > > There is also an example of client side SIP protocol implementation > based on HttpCore (blocking) in the contrib package you might want to > take a look at: > > http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/sip/ > > Hope this helps > > Cheers > > Oleg > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
