fr.dyade.aaa.agent
Class StreamNetwork

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

public abstract class StreamNetwork
extends Network

StreamNetwork is a base implementation of Network class for TCP sockets.


Nested Class Summary
 
Nested classes/interfaces inherited from class fr.dyade.aaa.agent.Network
Network.NetworkAverageLoadTask
 
Field Summary
(package private)  int backlog
          The maximum queue length for incoming connection indications, default value is 5.
(package private)  int CnxRetry
          Numbers of attempt to bind the server's socket before aborting, default value is 3.
(package private)  int ConnectTimeout
          Defines in milliseconds the timeout used during socket connection.
(package private)  java.net.InetAddress inLocalAddr
          The local address the listen ServerSocket is bound to.
(package private)  java.net.InetAddress outLocalAddr
          The local address the sockets are bound to.
(package private)  int outLocalPort
          The local port the sockets are bound to.
(package private)  ServerSocketFactory serverSocketFactory
          Allows to define a specific factory for ServerSocket in order to by-pass compatibility problem between JDK version.
(package private)  SocketFactory socketFactory
          Allows to define a specific factory for Socket in order to by-pass compatibility problem between JDK version.
(package private)  int SoLinger
          Enable SO_LINGER with the specified linger time in seconds, if the value is less than 0 then it disables SO_LINGER.
(package private)  int SoTimeout
          Enable/disable SO_TIMEOUT with the specified timeout in milliseconds.
(package private)  boolean TcpNoDelay
          Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm), default value is false.
 
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
StreamNetwork()
          Creates a new Network component
 
Method Summary
(package private)  java.net.ServerSocket createServerSocket()
          This method creates and returns a server socket which uses all network interfaces on the host, and is bound to the specified port.
(package private)  java.net.ServerSocket createServerSocket(int port)
          This method creates and returns a server socket which uses all network interfaces on the host, and is bound to the specified port.
(package private)  java.net.Socket createSocket(java.net.InetAddress addr, int port)
          This method creates and returns a socket connected to a ServerSocket at the specified network address and port.
(package private)  java.net.Socket createSocket(ServerDesc server)
          This method creates and returns a socket connected to a specified server.
(package private)  java.net.Socket createSocket(SocketAddress addr)
          This method creates and returns a socket connected to a ServerSocket at the specified socket address.
 void init(java.lang.String name, int port, short[] servers)
          Initializes a new StreamNetwork component.
 void setProperties()
          Set the properties of the network.
(package private)  void setSocketOption(java.net.Socket sock)
          Configures this socket using the socket options established for this factory.
 
Methods inherited from class fr.dyade.aaa.agent.Network
addServer, delete, deliver, delServer, getAverageLoad1, getAverageLoad15, getAverageLoad5, getBootTS, getDomainName, getName, getNbMessageReceived, getNbMessageSent, getNbWaitingMessages, getPort, getQueue, getStamp, getWDActivationPeriod, getWDNbRetryLevel1, getWDNbRetryLevel2, getWDRetryPeriod1, getWDRetryPeriod2, getWDRetryPeriod3, index, insert, post, resetServer, restore, save, setPort, setStamp, setWDActivationPeriod, setWDNbRetryLevel1, setWDNbRetryLevel2, setWDRetryPeriod1, setWDRetryPeriod2, setWDRetryPeriod3, testBootTS, toString, 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.MessageConsumer
isRunning, start, stop
 
Methods inherited from interface fr.dyade.aaa.agent.NetworkMBean
isRunning, start, stop
 

Field Detail

CnxRetry

int CnxRetry
Numbers of attempt to bind the server's socket before aborting, default value is 3. This value can be adjusted for all network components by setting CnxRetry global property or for a particular network by setting \.CnxRetry specific property.

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


backlog

int backlog
The maximum queue length for incoming connection indications, default value is 5. This value can be adjusted for all network components by setting backlog global property or for a particular network by setting \.backlog specific property.

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


TcpNoDelay

boolean TcpNoDelay
Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm), default value is false. This value can be adjusted for all network components by setting TcpNoDelay global property or for a particular network by setting \.TcpNoDelay specific property.

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


SoLinger

int SoLinger
Enable SO_LINGER with the specified linger time in seconds, if the value is less than 0 then it disables SO_LINGER. Default value is -1. This value can be adjusted for all network components by setting SoLinger global property or for a particular network by setting \.SoLinger specific property.

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


SoTimeout

int SoTimeout
Enable/disable SO_TIMEOUT with the specified timeout in milliseconds. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout. Default value is 0. This value can be adjusted for all network components by setting SoTimeout global property or for a particular network by setting \.SoTimeout specific property.

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


ConnectTimeout

int ConnectTimeout
Defines in milliseconds the timeout used during socket connection. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout. Default value is 0. This value can be adjusted for all network components by setting ConnectTimeout global property or for a particular network by setting \.ConnectTimeout specific property.

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


inLocalAddr

java.net.InetAddress inLocalAddr
The local address the listen ServerSocket is bound to. A null address will assign the wildcard address. Default value is null. This value can be adjusted for all network components by setting InLocalAddress global property or for a particular network by setting \.InLocalAddress specific property.

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


outLocalPort

int outLocalPort
The local port the sockets are bound to. A valid port value is between 0 and 65535. A port number of zero will let the system pick up an ephemeral port in a bind operation. Default value is 0. This value can be adjusted for all network components by setting OutLocalPort global property or for a particular network by setting \.OutLocalPort specific property.

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


outLocalAddr

java.net.InetAddress outLocalAddr
The local address the sockets are bound to. A null address will assign the wildcard address. Default value is null. This value can be adjusted for all network components by setting OutLocalAddress global property or for a particular network by setting \.OutLocalAddress specific property.

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


serverSocketFactory

ServerSocketFactory serverSocketFactory
Allows to define a specific factory for ServerSocket in order to by-pass compatibility problem between JDK version. Currently there is two factories, The default factory one for JDK since 1.4, and ServerSocketFactory13 for JDK prior to 1.4. This value can be adjusted for all network components by setting ServerSocketFactory global property or for a particular network by setting \.ServerSocketFactory specific property.

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


socketFactory

SocketFactory socketFactory
Allows to define a specific factory for Socket in order to by-pass compatibility problem between JDK version. Currently there is two factories, The default factory one for JDK since 1.4, and SocketFactory13 for JDK prior to 1.4. This value can be adjusted for all network components by setting SocketFactory global property or for a particular network by setting \.SocketFactory specific property.

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

Constructor Detail

StreamNetwork

public StreamNetwork()
Creates a new Network component

Method Detail

init

public void init(java.lang.String name,
                 int port,
                 short[] servers)
          throws java.lang.Exception
Initializes a new StreamNetwork component.

Overrides:
init in class Network
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 Network
Throws:
java.lang.Exception

createSocket

final java.net.Socket createSocket(ServerDesc server)
                            throws java.io.IOException
This method creates and returns a socket connected to a specified server. It may be overloaded in subclass, in order to create particular subclasses of sockets.

Parameters:
server - the server descriptor.
Returns:
a socket connected to a ServerSocket at the specified network address and port.
Throws:
java.io.IOException - if the connection can't be established

createSocket

final java.net.Socket createSocket(SocketAddress addr)
                            throws java.io.IOException
This method creates and returns a socket connected to a ServerSocket at the specified socket address. If it fails it resets the address in order to take in account dynamic DNS.

Parameters:
addr - the socket address.
Returns:
a socket connected to a ServerSocket at the specified network address and port.
Throws:
java.io.IOException - if the connection can't be established

createSocket

java.net.Socket createSocket(java.net.InetAddress addr,
                             int port)
                       throws java.io.IOException
This method creates and returns a socket connected to a ServerSocket at the specified network address and port. It may be overloaded in subclass, in order to use particular implementation of sockets.

Due to polymorphism of both factories and sockets, different kinds of sockets can be used by the same application code. The sockets returned to the application can be subclasses of Socket, so that they can directly expose new APIs for features such as compression, security, or firewall tunneling.

Parameters:
addr - the server address.
port - the server port.
Returns:
a socket connected to a ServerSocket at the specified network address and port.
Throws:
java.io.IOException - if the connection can't be established

createServerSocket

final java.net.ServerSocket createServerSocket()
                                        throws java.io.IOException
This method creates and returns a server socket which uses all network interfaces on the host, and is bound to the specified port.

Returns:
a server socket bound to the specified port.
Throws:
java.io.IOException - for networking errors

createServerSocket

java.net.ServerSocket createServerSocket(int port)
                                   throws java.io.IOException
This method creates and returns a server socket which uses all network interfaces on the host, and is bound to the specified port. It may be overloaded in subclass, in order to create particular subclasses of server sockets.

Parameters:
port - the port to listen to.
Returns:
a server socket bound to the specified port.
Throws:
java.io.IOException - for networking errors

setSocketOption

void setSocketOption(java.net.Socket sock)
               throws java.net.SocketException
Configures this socket using the socket options established for this factory. It may be overloaded in subclass, in order to handle particular subclasses of sockets

Parameters:
Socket - the socket.
Throws:
java.io.IOException - for networking errors
java.net.SocketException


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