| 
					
				 | 
			
			
				@@ -10,6 +10,7 @@ type ConnectionHandler func(*Connection) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type Connection struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	conn     net.Conn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	listener *TCPHub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reusable bool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (this *Connection) Read(b []byte) (int, error) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -31,8 +32,11 @@ func (this *Connection) Close() error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if this == nil || this.conn == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return ErrorClosedConnection 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	err := this.conn.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if this.Reusable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.listener.Recycle(this.conn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return this.conn.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (this *Connection) Release() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -64,3 +68,11 @@ func (this *Connection) SetReadDeadline(t time.Time) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (this *Connection) SetWriteDeadline(t time.Time) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return this.conn.SetWriteDeadline(t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (this *Connection) SetReusable(reusable bool) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	this.reusable = reusable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (this *Connection) Reusable() bool { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return this.reusable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |