All Packages Class Hierarchy This Package Previous Next Index
Class w3c.jigsaw.http.socket.SocketClientFactory
java.lang.Object
|
+----w3c.jigsaw.http.socket.SocketClientFactory
- public class SocketClientFactory
- extends Object
- implements ClientFactory, PropertyMonitoring
The client pool is a kind of client factory.
Each time the server gets a new connection, it calls the client pool
to bound a client object (newly created or spared) to handle it.
-
AVG_DEAD
-
-
AVG_HIGH
-
-
AVG_LIGHT
-
-
AVG_NORMAL
-
-
IDLETO
-
-
IDLETO_P
-
-
MAXCLIENTS
-
-
MAXCLIENTS_P
-
-
MAXSPARE_FREE
-
-
MAXSPARE_FREE_P
-
-
MAXSPARE_IDLE
-
-
MAXSPARE_IDLE_P
-
-
MAXTHREADS
-
-
MAXTHREADS_P
-
-
MINSPARE_FREE
-
-
MINSPARE_FREE_P
-
-
SocketClientFactory()
- Empty constructor for dynamic class instantiation.
-
addClient(boolean)
- Create a new client for this pool.
-
clientConnectionFinished(SocketClient)
- Notify that this client has finished with its connection.
-
clientFinished(SocketClient)
- Notify that this client has been killed.
-
createServerSocket()
- Create the master socket for this client factory.
-
deleteClient(SocketClientState)
- Remove this client state from the glohbal client list.
-
handleConnection(Socket)
- Handle the given connection.
-
initialize(httpd)
- Initialize the raw, client socket factory.
-
killClients(boolean)
-
-
killSomeClients()
-
-
killSomeClients(int)
-
-
notifyIdle(SocketClient)
- The client notifies the pool that it enters idle state.
-
notifyUse(SocketClient)
- The client notifies the pool that is has been activated.
-
propertyChanged(String)
- Some property have changed, update our setting.
-
run(SocketClient)
-
-
shutdown(boolean)
- Shutdown the client pool.
MINSPARE_FREE
public static final int MINSPARE_FREE
MAXSPARE_FREE
public static final int MAXSPARE_FREE
MAXSPARE_IDLE
public static final int MAXSPARE_IDLE
MAXTHREADS
public static final int MAXTHREADS
MAXCLIENTS
public static final int MAXCLIENTS
IDLETO
public static final int IDLETO
AVG_LIGHT
public static final int AVG_LIGHT
AVG_NORMAL
public static final int AVG_NORMAL
AVG_HIGH
public static final int AVG_HIGH
AVG_DEAD
public static final int AVG_DEAD
MINSPARE_FREE_P
public static final String MINSPARE_FREE_P
MAXSPARE_FREE_P
public static final String MAXSPARE_FREE_P
MAXSPARE_IDLE_P
public static final String MAXSPARE_IDLE_P
MAXTHREADS_P
public static final String MAXTHREADS_P
MAXCLIENTS_P
public static final String MAXCLIENTS_P
IDLETO_P
public static final String IDLETO_P
SocketClientFactory
public SocketClientFactory()
- Empty constructor for dynamic class instantiation.
propertyChanged
public boolean propertyChanged(String name)
- Some property have changed, update our setting.
- Parameters:
- name - The name of the property that has changed.
- Returns:
- A boolean, true if we updated ourself
successfully.
deleteClient
protected synchronized void deleteClient(SocketClientState cs)
- Remove this client state from the glohbal client list.
- Parameters:
- cs - The client state to remove from the list.
addClient
protected synchronized SocketClientState addClient(boolean free)
- Create a new client for this pool.
- Parameters:
- free - A boolean, if true the client is inserted
straight into the free list, otherwise, it is not plugged into any
list.
- Returns:
- A SocketClientState instance, if creation of a new client was
allowed, null if no more clients could be created.
clientConnectionFinished
protected boolean clientConnectionFinished(SocketClient client)
- Notify that this client has finished with its connection.
If the pool wants the client to be freed (because it has too many of
them), it makes the client kill itself (which will trigger a call to
the clientFinished method, were enventual cleanup is performed).
- Parameters:
- client - The client that is done with its connection.
clientFinished
protected void clientFinished(SocketClient client)
- Notify that this client has been killed.
- Parameters:
- client - The client that has terminate.
notifyUse
protected void notifyUse(SocketClient client)
- The client notifies the pool that is has been activated.
The client state object is updated to unmark the client as idle.
This method needs not be synchronized, as it affect only the client
state, not the client list.
- Parameters:
- client - The activated client.
notifyIdle
protected boolean notifyIdle(SocketClient client)
- The client notifies the pool that it enters idle state.
This method needs not be synchronized, as it affect only the client
state, not the client list.
- Parameters:
- client - The client that is going to be idle.
killSomeClients
protected void killSomeClients(int howmany)
killSomeClients
protected final void killSomeClients()
run
protected void run(SocketClient client)
handleConnection
public void handleConnection(Socket socket)
- Handle the given connection.
Find a free client, bind it to the given socket, and run it. If we
have reached our maximum allowed number of clients, kill some
connections.
A client enters the LRU list (and become a candidate for kill) only
after it has handle one request (or if some timeout expires). This is
performed by the first call to notifyUse
which will
silently insert the client into the LRU if it was not there already.
This client pool does a lot of nice thinigs, but could probably be
implemented in a much better way (while keeping the features it has).
Contention arond the pool is probably concern number 1 of performances.
- Parameters:
- socket - The connection to handle.
killClients
protected synchronized void killClients(boolean force)
shutdown
public void shutdown(boolean force)
- Shutdown the client pool.
If force is true, kill all running clients right
now, otherwise, wait for them to terminate gracefully, and return
when done.
- Parameters:
- force - Should we interrupt running clients.
createServerSocket
public ServerSocket createServerSocket() throws IOException
- Create the master socket for this client factory.
- Returns:
- A ServerSocket instance.
- Throws: IOException
- If some IO error occurs while creating the
server socket.
initialize
public void initialize(httpd server)
- Initialize the raw, client socket factory.
- Parameters:
- server - The server context we are attached to.
All Packages Class Hierarchy This Package Previous Next Index