fr.dyade.aaa.agent
Class PoolNetwork

java.lang.Object
  extended by fr.dyade.aaa.agent.Network
      extended by fr.dyade.aaa.agent.StreamNetwork
          extended by fr.dyade.aaa.agent.PoolNetwork
All Implemented Interfaces:
MessageConsumer, NetworkMBean, PoolNetworkMBean
Direct Known Subclasses:
SSLNetwork

public class PoolNetwork
extends StreamNetwork
implements PoolNetworkMBean

PoolNetwork is an implementation of StreamNetwork class that manages multiple connection in a pool paradigm way.


Nested Class Summary
(package private) static class PoolNetwork.Boot
           
(package private)  class PoolNetwork.Dispatcher
           
(package private)  class PoolNetwork.NetSession
          The class NetSession controls the connection with a particular server.
(package private)  class PoolNetwork.Sender
           
(package private)  class PoolNetwork.WakeOnConnection
           
(package private)  class PoolNetwork.WatchDog
           
 
Nested classes/interfaces inherited from class fr.dyade.aaa.agent.Network
Network.NetworkAverageLoadTask
 
Field Summary
(package private)  java.util.Vector activeSessions
          Synchronized vector of active (i.e. connected) sessions.
(package private)  boolean compressedFlows
          Defines if the streams between servers are compressed or not.
(package private)  int defaultMaxMessageInFlow
          Defines the default value for maximum number of message sent and non acknowledged on a connection.
(package private)  PoolNetwork.Dispatcher dispatcher
          Daemon sending message to others servers.
(package private)  long IdleTimeout
          Defines in milliseconds the maximum idle period permitted before reseting the connection.
static byte[] magic
          Magic number to identify peer.
(package private)  int nbMaxCnx
          Defines the maximum number of concurrent connected sessions.
(package private)  PoolNetwork.NetSession[] sessions
          Components handling communication with other servers.
(package private)  PoolNetwork.WakeOnConnection wakeOnConnection
          Daemon listening for connection from other servers.
(package private)  PoolNetwork.WatchDog watchDog
          Daemon handling the messages for inaccessible servers.
 
Fields inherited from class fr.dyade.aaa.agent.StreamNetwork
backlog, CnxRetry, ConnectTimeout, inLocalAddr, outLocalAddr, outLocalPort, serverSocketFactory, socketFactory, SoLinger, SoTimeout, TcpNoDelay
 
Fields inherited from class fr.dyade.aaa.agent.Network
ALREADY_DELIVERED, averageLoadTask, bootTSFN, DELIVER, domain, idxLS, logmon, name, nbMessageIn, nbMessageOut, port, qout, servers, serversFN, sid, WDActivationPeriod, WDNbRetryLevel1, WDNbRetryLevel2, WDRetryPeriod1, WDRetryPeriod2, WDRetryPeriod3
 
Constructor Summary
PoolNetwork()
          Creates a new network component.
 
Method Summary
 void addServer(short id)
          Adds the server sid in the network configuration.
 void delServer(short id)
          Removes the server sid in the network configuration.
 boolean getCompressedFlows()
          Returns if the stream between servers are compressed or not.
 long getIdleTimeout()
          Returns the maximum idle period permitted before reseting the connection.
(package private)  long getLastReceived(short sid)
          Returns the time in milliseconds of last message received.
(package private)  int getMaxMessageInFlow(short sid)
          Gets the maximum number of message sent and non acknowledged.
private  java.lang.String getMBeanName(short sid)
           
(package private)  int getNbAckSent(short sid)
          Returns the number of acknowledge sent since last reboot.
 int getNbActiveSession()
          Returns the number of currently connected sessions.
(package private)  int getNbBufferingMessageToSent(short sid)
          Returns the number of buffering messages to sent since last reboot.
 int getNbMaxActiveSession()
          Returns the maximum number of concurrent connected sessions.
(package private)  int getNbMessageReceived(short sid)
          Returns the number of messages received since last reboot.
(package private)  int getNbMessageSent(short sid)
          Returns the number of messages sent since last reboot.
 int getNbWaitingMessages()
          Gets the number of waiting messages in this engine.
(package private)  PoolNetwork.NetSession getSession(short sid)
          Returns the NetSession component handling the communication with the remote server that id is passed in parameter.
(package private)  int getSessionNbWaitingMessages(short sid)
          Gets the number of waiting messages to send for this session.
 void init(java.lang.String name, int port, short[] servers)
          Initializes a new network component.
 boolean isRunning()
          Tests if the network component is alive.
(package private)  boolean isSessionRunning(short sid)
          Tests if the session is connected.
(package private)  int readAck(java.io.InputStream in)
           
(package private)  PoolNetwork.Boot readBoot(java.io.InputStream in)
           
(package private)  void readFully(java.io.InputStream is, byte[] iobuf)
           
 void setIdleTimeout(long idleTimeout)
          Sets the maximum idle period permitted before reseting the connection.
(package private)  void setMaxMessageInFlow(short sid, int maxMessageInFlow)
          Sets the maximum number of message sent and non acknowledged.
 void setProperties()
          Set the properties of the network.
 void start()
          Causes this network component to begin execution.
 void stop()
          Forces the network component to stop executing.
 java.lang.String toString()
          Returns a string representation of this consumer, including the daemon's name and status.
 void wakeup()
          Wakes up the watch-dog thread.
(package private)  void writeAck(java.io.OutputStream out)
           
(package private)  void writeBoot(java.io.OutputStream out)
           
 
Methods inherited from class fr.dyade.aaa.agent.StreamNetwork
createServerSocket, createServerSocket, createSocket, createSocket, createSocket, setSocketOption
 
Methods inherited from class fr.dyade.aaa.agent.Network
delete, deliver, getAverageLoad1, getAverageLoad15, getAverageLoad5, getBootTS, getDomainName, getName, getNbMessageReceived, getNbMessageSent, getPort, getQueue, getStamp, getWDActivationPeriod, getWDNbRetryLevel1, getWDNbRetryLevel2, getWDRetryPeriod1, getWDRetryPeriod2, getWDRetryPeriod3, index, insert, post, resetServer, restore, save, setPort, setStamp, setWDActivationPeriod, setWDNbRetryLevel1, setWDNbRetryLevel2, setWDRetryPeriod1, setWDRetryPeriod2, setWDRetryPeriod3, testBootTS, validate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface fr.dyade.aaa.agent.NetworkMBean
getAverageLoad1, getAverageLoad15, getAverageLoad5, getName, getNbMessageReceived, getNbMessageSent, getWDActivationPeriod, getWDNbRetryLevel1, getWDNbRetryLevel2, getWDRetryPeriod1, getWDRetryPeriod2, getWDRetryPeriod3, setWDActivationPeriod, setWDNbRetryLevel1, setWDNbRetryLevel2, setWDRetryPeriod1, setWDRetryPeriod2, setWDRetryPeriod3
 

Field Detail

magic

public static final byte[] magic
Magic number to identify peer.


wakeOnConnection

PoolNetwork.WakeOnConnection wakeOnConnection
Daemon listening for connection from other servers.


sessions

PoolNetwork.NetSession[] sessions
Components handling communication with other servers. There is a NetSession component for each server in the domain, some are 'active' (i.e connected).


dispatcher

PoolNetwork.Dispatcher dispatcher
Daemon sending message to others servers.


watchDog

PoolNetwork.WatchDog watchDog
Daemon handling the messages for inaccessible servers.


activeSessions

java.util.Vector activeSessions
Synchronized vector of active (i.e. connected) sessions.


compressedFlows

boolean compressedFlows
Defines if the streams between servers are compressed or not.

Default value is false, be careful in a domain all servers must use the same definition.

This value can be adjusted for all network components by setting PoolNetwork.compressedFlows global property or for a particular network by setting \.compressedFlows specific property.

Theses properties can be fixed either from java launching command, or in a3servers.xml configuration file.


nbMaxCnx

int nbMaxCnx
Defines the maximum number of concurrent connected sessions.

By default this property is set to -1 to dynamically adjust to the number of servers of the domain (excepting the current server). Setting this value needs precautions to avoid unexpected connection loss.

This value can be adjusted for all network components by setting PoolNetwork.nbMaxCnx global property or for a particular network by setting \.nbMaxCnx specific property.

Theses properties can be fixed either from java launching command, or in a3servers.xml configuration file.


IdleTimeout

long IdleTimeout
Defines in milliseconds the maximum idle period permitted before reseting the connection.

The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout. Default value is 60000 (1 minute), value less than 1000 are unauthorized.

This value can be adjusted for all network components by setting PoolNetwork.IdleTimeout global property or for a particular network by setting \.IdleTimeout specific property.

Theses properties can be fixed either from java launching command, or in a3servers.xml configuration file.


defaultMaxMessageInFlow

int defaultMaxMessageInFlow
Defines the default value for maximum number of message sent and non acknowledged on a connection.

By default this value is set to -1 and there is no flow control.

This value can be adjusted for all network components by setting the PoolNetwork.maxMessageInFlow global property or for a particular network by setting \.maxMessageInFlow specific property.

For a particular network the value can be defined finely for a the connection with a particular remote server by setting PoolNetwork.maxMessageInFlow_N or \.maxMessageInFlow_N.

Theses properties can be fixed either from java launching command, or in a3servers.xml configuration file.

Constructor Detail

PoolNetwork

public PoolNetwork()
            throws java.lang.Exception
Creates a new network component.

Throws:
java.lang.Exception
Method Detail

getCompressedFlows

public boolean getCompressedFlows()
Returns if the stream between servers are compressed or not.

Specified by:
getCompressedFlows in interface PoolNetworkMBean
Returns:
true if the streams between servers are compressed, false otherwise.

getNbMaxActiveSession

public int getNbMaxActiveSession()
Returns the maximum number of concurrent connected sessions.

Specified by:
getNbMaxActiveSession in interface PoolNetworkMBean
Returns:
the number of concurrent connected sessions.

getNbActiveSession

public int getNbActiveSession()
Returns the number of currently connected sessions.

Specified by:
getNbActiveSession in interface PoolNetworkMBean
Returns:
the number of currently connected sessions.

getIdleTimeout

public long getIdleTimeout()
Returns the maximum idle period permitted before reseting the connection.

Specified by:
getIdleTimeout in interface PoolNetworkMBean
Returns:
the maximum idle period permitted before reseting the connection.

setIdleTimeout

public void setIdleTimeout(long idleTimeout)
Sets the maximum idle period permitted before reseting the connection.

Specified by:
setIdleTimeout in interface PoolNetworkMBean
Parameters:
the - maximum idle period permitted before reseting the connection.

init

public void init(java.lang.String name,
                 int port,
                 short[] servers)
          throws java.lang.Exception
Initializes a new network component. This method is used in order to easily creates and configure a Network component from a class name. So we can use the Class.newInstance() method for create (without any parameter) the component, then we can initialize it with this method.
This method initializes the logical clock for the domain.

Overrides:
init in class StreamNetwork
Parameters:
name - The domain name.
port - The listen port.
servers - The list of servers directly accessible from this network interface.
Throws:
java.lang.Exception
See Also:
Network

setProperties

public void setProperties()
                   throws java.lang.Exception
Set the properties of the network. Inherited from Network class, can be extended by subclasses.

Overrides:
setProperties in class StreamNetwork
Throws:
java.lang.Exception

addServer

public void addServer(short id)
               throws java.lang.Exception
Adds the server sid in the network configuration.

Overrides:
addServer in class Network
Parameters:
id - the unique server id.
Throws:
java.lang.Exception

delServer

public void delServer(short id)
               throws java.lang.Exception
Removes the server sid in the network configuration.

Overrides:
delServer in class Network
Parameters:
id - the unique server id.
Throws:
java.lang.Exception

getMBeanName

private java.lang.String getMBeanName(short sid)

start

public void start()
           throws java.lang.Exception
Causes this network component to begin execution.

Specified by:
start in interface MessageConsumer
Specified by:
start in interface NetworkMBean
Throws:
java.lang.Exception
See Also:
stop

wakeup

public void wakeup()
Wakes up the watch-dog thread.


stop

public void stop()
Forces the network component to stop executing.

Specified by:
stop in interface MessageConsumer
Specified by:
stop in interface NetworkMBean
See Also:
start

isRunning

public boolean isRunning()
Tests if the network component is alive.

Specified by:
isRunning in interface MessageConsumer
Specified by:
isRunning in interface NetworkMBean
Returns:
true if this MessageConsumer is alive; false otherwise.

getSession

final PoolNetwork.NetSession getSession(short sid)
                                 throws UnknownServerException
Returns the NetSession component handling the communication with the remote server that id is passed in parameter.

Parameters:
sid - the server id of remote server.
Returns:
the NetSession component handling the communication with the remote server.
Throws:
UnknownServerException

isSessionRunning

final boolean isSessionRunning(short sid)
Tests if the session is connected.

Parameters:
sid - the server id of remote server.
Returns:
true if this session is connected; false otherwise.

getMaxMessageInFlow

final int getMaxMessageInFlow(short sid)
Gets the maximum number of message sent and non acknowledged.

Parameters:
sid - the server id of remote server.
Returns:
the maximum number of message sent and non acknowledged.

setMaxMessageInFlow

void setMaxMessageInFlow(short sid,
                         int maxMessageInFlow)
Sets the maximum number of message sent and non acknowledged.

Parameters:
sid - the server id of remote server.
maxMessageInFlow - the maximum number of message sent and non acknowledged.

getSessionNbWaitingMessages

final int getSessionNbWaitingMessages(short sid)
Gets the number of waiting messages to send for this session.

Parameters:
sid - the server id of remote server.
Returns:
the number of waiting messages.

getNbMessageSent

final int getNbMessageSent(short sid)
Returns the number of messages sent since last reboot.

Parameters:
sid - the server id of remote server.
Returns:
the number of messages sent since last reboot.

getNbMessageReceived

final int getNbMessageReceived(short sid)
Returns the number of messages received since last reboot.

Parameters:
sid - the server id of remote server.
Returns:
the number of messages received since last reboot.

getNbAckSent

final int getNbAckSent(short sid)
Returns the number of acknowledge sent since last reboot.

Parameters:
sid - the server id of remote server.
Returns:
the number of acknowledge sent since last reboot.

getLastReceived

final long getLastReceived(short sid)
Returns the time in milliseconds of last message received.

Parameters:
sid - the server id of remote server.
Returns:
the time in milliseconds of last message received.

getNbBufferingMessageToSent

final int getNbBufferingMessageToSent(short sid)
Returns the number of buffering messages to sent since last reboot.

Parameters:
sid - the server id of remote server.
Returns:
the number of buffering messages to sent since last reboot.

getNbWaitingMessages

public int getNbWaitingMessages()
Gets the number of waiting messages in this engine.

Specified by:
getNbWaitingMessages in interface NetworkMBean
Overrides:
getNbWaitingMessages in class Network
Returns:
the number of waiting messages.

toString

public java.lang.String toString()
Returns a string representation of this consumer, including the daemon's name and status.

Specified by:
toString in interface NetworkMBean
Overrides:
toString in class Network
Returns:
A string representation of this consumer.

writeBoot

final void writeBoot(java.io.OutputStream out)
              throws java.io.IOException
Throws:
java.io.IOException

readFully

final void readFully(java.io.InputStream is,
                     byte[] iobuf)
              throws java.io.IOException
Throws:
java.io.IOException

readBoot

final PoolNetwork.Boot readBoot(java.io.InputStream in)
                         throws java.io.IOException
Throws:
java.io.IOException

writeAck

final void writeAck(java.io.OutputStream out)
             throws java.io.IOException
Throws:
java.io.IOException

readAck

final int readAck(java.io.InputStream in)
           throws java.io.IOException
Throws:
java.io.IOException


Copyright © 2010 ScalAgent D.T.. All Rights Reserved.