cebit.server.idm.socket
Class IDMSocketClient

java.lang.Object
  |
  +--org.w3c.jigsaw.http.Client
        |
        +--cebit.server.idm.socket.IDMSocketClient
All Implemented Interfaces:
org.ssonet.net.ConnectionListener, org.w3c.tools.timers.EventHandler, java.lang.Runnable, org.ssonet.net.SSONETContextListener

public class IDMSocketClient
extends org.w3c.jigsaw.http.Client
implements java.lang.Runnable, org.ssonet.net.SSONETContextListener, org.ssonet.net.ConnectionListener

Implements a Client (Connection handler) for Connections using the Identity manager. Its funktionality is almost the same as the http-SocketClient. The main addition to the basic SocketClient is, that this IDMSocketClient requests a new negotiation of security parameters before the reply is sent. Therefore the SSONETContext of this connection is added to the reply, when calling the method perform(request).


Field Summary
protected  boolean alive
          Is this client still alive ?
protected  int bindcount
          Number of times this client was bound to a connection.
protected  cebit.server.idm.socket.SocketOutputBuffer bufout
          Our reusable output buffer.
protected  idman.mngt.Context context
           
protected  java.io.DataOutputStream dataOutputStream
           
protected  boolean done
          are we done?
protected  boolean idle
          Are we idle (waiting for next request ?)
protected  boolean isContextRegistered
           
protected  java.net.Socket socket
          The socket currently handled by the client.
(package private)  cebit.server.idm.socket.IDMSocketClientState state
          The client state for this client, has managed by the SocketClientFactory
protected  java.lang.Thread thread
          The thread that we have been attached to.
 
Fields inherited from class org.w3c.jigsaw.http.Client
buffer, cont, debug, identifier, prev_body_count, reqcount, server
 
Fields inherited from interface org.ssonet.net.ConnectionListener
FINISHED_STATE, INIT_STATE, MECHANISMS_NEGOTIATION, NOT_STARTED_STATE, RUNNING_STATE, SECURITY_GOAL_NEGOTIATION
 
Constructor Summary
IDMSocketClient(org.w3c.jigsaw.http.httpd server, cebit.server.idm.socket.IDMSocketClientFactory pool, cebit.server.idm.socket.IDMSocketClientState state)
          Create an empty client, that will be ready to work.
 
Method Summary
protected  void bind(java.net.Socket socket)
          SocketClientFactory interface - Bind the socket to this client.
 void connectionStateChanged(org.ssonet.net.SSONETContext context, int currentState)
          When the connection state has changed, this method reports the current state.
 void contextChanged(org.ssonet.net.SSONETContext c)
          Notifies about context changes.
 boolean decideSecurityGoal(int securityGoal, org.ssonet.net.ActionConfiguration ownConfiguration, org.ssonet.net.SSONETContext context)
           
protected  int emitReply(org.w3c.jigsaw.http.Reply reply)
          Emit the given reply to the client.
 int getBindCount()
          Get the total number of times this client was bound to a socket.
 idman.mngt.Context getContext()
           
 java.net.InetAddress getInetAddress()
          Client implementation - Get the IP address of this client.
protected  org.w3c.jigsaw.http.Request getNextRequest()
           
 java.net.Socket getSocket()
           
protected  java.lang.Thread getThread()
          Get the thread powering that client.
protected  boolean idleConnection()
          Client implementation - The current connection is idle.
 void join()
          If this client is allocated a thread, join it.
protected  void kill(boolean now)
          SocketClientFactory interface - Kill this client.
 void negotiationRequestReceived(org.ssonet.net.SSONETContext context, int negotiationType)
           
 void replaceContext(org.ssonet.net.SSONETContext o, org.ssonet.net.SSONETContext n)
          Method of SSONETContextListener.
 void run()
          Run for our newly attached connection.
protected  void stopConnection()
          Client implementation - This connection has been stopped.
 java.lang.String toString()
          Print that client into a String.
protected  void unbind()
          SocketClientFactory interface - Unbind this client.
protected  void usedConnection()
          Client implementation - The current connection is in use.
 
Methods inherited from class org.w3c.jigsaw.http.Client
chunkTransfer, error, getIdentifier, getInputStream, getMajorVersion, getMinorVersion, getOutputStream, getRequestCount, getServer, handleTimerEvent, initialize, interruptConnection, isInterrupted, isRunning, log, processRequest, sendContinue, startConnection, trace, tryKeepConnection
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

socket

protected java.net.Socket socket
The socket currently handled by the client.


alive

protected boolean alive
Is this client still alive ?


state

cebit.server.idm.socket.IDMSocketClientState state
The client state for this client, has managed by the SocketClientFactory


bindcount

protected int bindcount
Number of times this client was bound to a connection.


thread

protected java.lang.Thread thread
The thread that we have been attached to.


bufout

protected cebit.server.idm.socket.SocketOutputBuffer bufout
Our reusable output buffer.


idle

protected boolean idle
Are we idle (waiting for next request ?)


done

protected boolean done
are we done?


context

protected idman.mngt.Context context

isContextRegistered

protected boolean isContextRegistered

dataOutputStream

protected java.io.DataOutputStream dataOutputStream
Constructor Detail

IDMSocketClient

public IDMSocketClient(org.w3c.jigsaw.http.httpd server,
                       cebit.server.idm.socket.IDMSocketClientFactory pool,
                       cebit.server.idm.socket.IDMSocketClientState state)
Create an empty client, that will be ready to work.

Parameters:
server - The server to which this client is attached.
pool - The pool for reuse.
state - The state of this client.
Method Detail

emitReply

protected int emitReply(org.w3c.jigsaw.http.Reply reply)
                 throws java.io.IOException
Emit the given reply to the client.

Overrides:
emitReply in class org.w3c.jigsaw.http.Client
Parameters:
reply - The reply to be emited.
Returns:
The number of body bytes emited, or -1 if no bytes needed to be emitted.
Throws:
java.io.IOException - If some IO error occurs.

toString

public java.lang.String toString()
Print that client into a String. This adds "IDM" to the output of the toString()-Method of SocketClient.

Overrides:
toString in class java.lang.Object
Returns:
A String instance.

join

public void join()
If this client is allocated a thread, join it.


run

public void run()
Run for our newly attached connection.

Specified by:
run in interface java.lang.Runnable
Returns:
A boolean, true if the client is to be killed as decided by its SocketClientFactory creator.

getInetAddress

public java.net.InetAddress getInetAddress()
Client implementation - Get the IP address of this client.

Specified by:
getInetAddress in class org.w3c.jigsaw.http.Client
Returns:
An InetAddress instance, or null if the client is not currently running.

stopConnection

protected void stopConnection()
Client implementation - This connection has been stopped. Make sure the whole socket is closed, and be ready to handle next connection.

Specified by:
stopConnection in class org.w3c.jigsaw.http.Client

getThread

protected java.lang.Thread getThread()
Get the thread powering that client.

Specified by:
getThread in class org.w3c.jigsaw.http.Client
Returns:
A Thread instance, or null.

idleConnection

protected boolean idleConnection()
Client implementation - The current connection is idle. The client is about to wait for the next request from the net, mark it as idle to make it a candidate for persistent connection closing.

Specified by:
idleConnection in class org.w3c.jigsaw.http.Client
Returns:
A boolean, if true our client factory wants us to stop right now, in order to handle some other connection.

usedConnection

protected void usedConnection()
Client implementation - The current connection is in use. A request is about to be processed, mark that connection as used, to remove it from the idle state.

Specified by:
usedConnection in class org.w3c.jigsaw.http.Client

bind

protected void bind(java.net.Socket socket)
SocketClientFactory interface - Bind the socket to this client. Binding a socket to a client triggers the processing of the underlying connection. It is assumed that the client was ready to handle a new connection before this method was called.

Parameters:
socket - The socket this client should now handle.

unbind

protected void unbind()
SocketClientFactory interface - Unbind this client. This client is handling an idle connection, unbind it to make it free for handling some other more buzy connection.


kill

protected void kill(boolean now)
SocketClientFactory interface - Kill this client. The clean way for our client factory to shut us down unconditionally. This will free all resources acquired by this client, stop the current connection processing if needed, and terminate the underlying thread.


getBindCount

public final int getBindCount()
Get the total number of times this client was bound to a socket.

Returns:
An integer, indicatingthe number of bind calls on this client.

getNextRequest

protected org.w3c.jigsaw.http.Request getNextRequest()
                                              throws org.w3c.jigsaw.http.ClientException,
                                                     java.io.IOException
Overrides:
getNextRequest in class org.w3c.jigsaw.http.Client
org.w3c.jigsaw.http.ClientException
java.io.IOException

replaceContext

public void replaceContext(org.ssonet.net.SSONETContext o,
                           org.ssonet.net.SSONETContext n)
Method of SSONETContextListener. Replaces an old context.

Specified by:
replaceContext in interface org.ssonet.net.SSONETContextListener

contextChanged

public void contextChanged(org.ssonet.net.SSONETContext c)
Notifies about context changes. Not used.

Specified by:
contextChanged in interface org.ssonet.net.SSONETContextListener

connectionStateChanged

public void connectionStateChanged(org.ssonet.net.SSONETContext context,
                                   int currentState)
When the connection state has changed, this method reports the current state.

Specified by:
connectionStateChanged in interface org.ssonet.net.ConnectionListener

getSocket

public java.net.Socket getSocket()
Returns:
The socket of this client.

getContext

public idman.mngt.Context getContext()

negotiationRequestReceived

public void negotiationRequestReceived(org.ssonet.net.SSONETContext context,
                                       int negotiationType)
Specified by:
negotiationRequestReceived in interface org.ssonet.net.ConnectionListener

decideSecurityGoal

public boolean decideSecurityGoal(int securityGoal,
                                  org.ssonet.net.ActionConfiguration ownConfiguration,
                                  org.ssonet.net.SSONETContext context)
Specified by:
decideSecurityGoal in interface org.ssonet.net.ConnectionListener


Copyright © 2003 DRIM Team. All Rights Reserved.