rabbit.proxy
Class Connection

java.lang.Object
  extended by rabbit.proxy.Connection

public class Connection
extends Object

The base connection class for rabbit. This is the class that handle the http protocoll for proxies. For the technical overview of how connections and threads works see the file htdocs/technical_documentation/thread_handling_overview.txt

Author:
Robert Olofsson

Constructor Summary
Connection(ConnectionId id, SocketChannel channel, Selector selector, HttpProxy proxy, BufferHandler bufHandler)
           
 
Method Summary
protected  boolean checkStrongEtag(String et, String im)
           
protected  boolean checkWeakEtag(String et, String im)
           
 BufferHandler getBufferHandler()
           
 SocketChannel getChannel()
           
 boolean getChunking()
          Get the chunking option.
 String getContentLength()
           
 String getExtraInfo()
           
 HttpGenerator getHttpGenerator()
           
 ConnectionId getId()
           
 Logger getLogger()
           
 boolean getMayFilter()
          Get the state of the request.
 boolean getMeta()
          Get the state of this request.
 String getPassword()
           
 HttpProxy getProxy()
           
 String getRequestLine()
           
 String getRequestURI()
          Get the current request uri.
 Selector getSelector()
           
 long getStarted()
          Get the time this connection was started.
 String getStatus()
           
 String getUserName()
           
protected  boolean isWeak(String t)
           
 void logAndClose(rabbit.proxy.RequestHandler rh)
           
 void logAndRestart()
           
protected  boolean mustTunnel(rabbit.proxy.RequestHandler rh)
          Check if we must tunnel a request.
 void readRequest()
          Read a request.
 void setChunking(boolean b)
          Set the chunking option.
 void setContentLength(String contentLength)
          Set the content length of the response.
 void setExtraInfo(String info)
          Set the extra info.
 void setKeepalive(boolean keepalive)
          Set keepalive to a new value.
 void setMayCache(boolean cacheAllowed)
          Set the state of this request.
 void setMayFilter(boolean filterAllowed)
          Get the state of this request.
 void setMayUseCache(boolean useCache)
          Set the state of this request.
 void setMeta(boolean meta)
          Set the state of this request.
 void setMustRevalidate(boolean b)
           
 void setPassword(String password)
           
 void setStatusCode(String statusCode)
           
 void setUserName(String userName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Connection

public Connection(ConnectionId id,
                  SocketChannel channel,
                  Selector selector,
                  HttpProxy proxy,
                  BufferHandler bufHandler)
Method Detail

getId

public ConnectionId getId()

readRequest

public void readRequest()
Read a request.


mustTunnel

protected boolean mustTunnel(rabbit.proxy.RequestHandler rh)
Check if we must tunnel a request. Currently will only check if the Authorization starts with NTLM or Negotiate.

Parameters:
rh - the request handler.

getChannel

public SocketChannel getChannel()

getSelector

public Selector getSelector()

getProxy

public HttpProxy getProxy()

getBufferHandler

public BufferHandler getBufferHandler()

getLogger

public Logger getLogger()

setKeepalive

public void setKeepalive(boolean keepalive)
Set keepalive to a new value. Note that keepalive can only be promoted down.

Parameters:
keepalive - the new keepalive value.

getUserName

public String getUserName()

setUserName

public void setUserName(String userName)

getPassword

public String getPassword()

setPassword

public void setPassword(String password)

getRequestLine

public String getRequestLine()

getRequestURI

public String getRequestURI()
Get the current request uri. This will get the uri from the request header.


getStatus

public String getStatus()

getContentLength

public String getContentLength()

getExtraInfo

public String getExtraInfo()

setExtraInfo

public void setExtraInfo(String info)
Set the extra info.

Parameters:
info - the new info.

getStarted

public long getStarted()
Get the time this connection was started.


setChunking

public void setChunking(boolean b)
Set the chunking option.

Parameters:
b - if true this connection should use chunking.

getChunking

public boolean getChunking()
Get the chunking option.

Returns:
if this connection is using chunking.

getMeta

public boolean getMeta()
Get the state of this request.

Returns:
true if this is a metapage request, false otherwise.

setMeta

public void setMeta(boolean meta)
Set the state of this request.

Parameters:
meta - true if this request is a metapage request, false otherwise.

setMayUseCache

public void setMayUseCache(boolean useCache)
Set the state of this request. This can only be promoted down..

Parameters:
useCache - true if we may use the cache for this request, false otherwise.

setMayCache

public void setMayCache(boolean cacheAllowed)
Set the state of this request. This can only be promoted down.

Parameters:
cacheAllowed - true if we may cache the response, false otherwise.

setMayFilter

public void setMayFilter(boolean filterAllowed)
Get the state of this request. This can only be promoted down.

Parameters:
filterAllowed - true if we may filter the response, false otherwise.

getMayFilter

public boolean getMayFilter()
Get the state of the request.

Returns:
true if we may filter the response, false otherwise.

setMustRevalidate

public void setMustRevalidate(boolean b)

setContentLength

public void setContentLength(String contentLength)
Set the content length of the response.

Parameters:
contentLength - the new content length.

setStatusCode

public void setStatusCode(String statusCode)

logAndClose

public void logAndClose(rabbit.proxy.RequestHandler rh)

logAndRestart

public void logAndRestart()

isWeak

protected boolean isWeak(String t)

checkStrongEtag

protected boolean checkStrongEtag(String et,
                                  String im)

checkWeakEtag

protected boolean checkWeakEtag(String et,
                                String im)

getHttpGenerator

public HttpGenerator getHttpGenerator()