org.xsocket.connection
Interface IConnectionScoped
- All Superinterfaces: 
- Cloneable
- public interface IConnectionScoped 
- extends Cloneable
Defines that the IHandler is connection scoped. 
 A connection scoped handler will be used by the server 
 as a prototype. That means, for each new incoming connection
 this handler will be cloned and the cloned handler will be assigned 
 to the new connection to perform the handling. 
 
 The prototype handler will never be used to handle 
 connections. It will only be used as a clone base. 
 
 By having such a dedicate handler instance for each connection,
 all variables of the cloned handler become session specific
 variables. 
  
 
 Take care by implementing the clone interface. Just calling the 
 super.clone() method within the handler clone method lead to 
 a shallow copy. That means all fields that refer to other 
 objects will point to the same objects in both the original and 
 the clone. To avoid side effects a deep copy has to be implemented. 
 All attributes beside primitives, immutable or global manager/service 
 references has also to be cloned
 
 E.g. 
 
   class MyHandler implements IDataHandler, IConnectionScoped {
      private int state = 0;
      private ConnectionRecordQueue recordQueue = new ConnectionRecordQueue();
      ...
   
   
      public boolean onData(INonBlockingConnection connection) throws IOException, BufferUnderflowException {
         ...
         return true;
      }   
      
      
      @Override
      public Object clone() throws CloneNotSupportedException {
          MyHandler copy = (MyHandler) super.clone();
          copy.recordQueue = new ConnectionRecordQueue(); // deep "clone"
          return copy;
      }
   }
 
- Author:
- grro@xsocket.org
 
clone
Object clone()
             throws CloneNotSupportedException
- 
 
- 
 
- 
- Throws:
- CloneNotSupportedException
 
Copyright 2008 						xSocket.org