This package is responsible for the abstraction of all network-connections of the server. It provides a public interface called ProxyConnection and two implementations of this interface, one dealing with client-side connections (class ProxyRequestConnection) and one for handling the connection to the web server (ProxyResponseConnection. Figure 2.7 shows the relation between these classes/interfaces.

Once the request-/response-data is wrapped in the ProxyConnection-interface (or its implementing classes, respectively), the content is available as array of bytes and the header fields are accessible either as hash table or as pure text. A HeaderField, in FOXY, is not just a name-value-pair. To overcome problems caused by name-inconsistencies (e.g. ''User-agent'' or ''User-Agent''), we additionally store a lowercase version of the header field's name, which acts as a unique key for the field.

Figure 2.9 shows the usage of the connection-classes during a common HTTP-connection through FOXY.

Figure 2.7: Main classes/interfaces of package foxy.proxy.connection
Image foxy_proxy_connection-diag

Figure 2.8: Establishing a connection through FOXY (simplified)
Image foxy_proxy-graph

Figure 2.9: Usage of the connection-classes
Image foxy_proxy_connection-graph

root 2006-05-22