de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor Class Reference

List of all members.

Detailed Description

This class defines the Diameter Connection Acceptor.

A DiameterPeer may use several acceptors to get connections with other DiameterPeers. If a connection is created, it will be maintained by a communicator.

Author:
Dragos Vingarzan vingarzan -at- fokus dot fraunhofer dot de

Definition at line 56 of file Acceptor.java.

Public Member Functions

 Acceptor (int port)
 Creates a new acceptor.
 Acceptor (int port, InetAddress bindAddr, DiameterPeer dp)
 Create a new acceptor.
void startAccepting ()
 Start a acceptor.
void stopAccepting ()
 Stop a acceptor.
void run ()
 Accept incoming request, create a communicator which will be associated with a propor Peer in the PeerManager.

Public Attributes

DiameterPeer diameterPeer
 DiameterPeer API reference.

Package Attributes

int port
 The port it listens to.
ServerSocket acceptSocket
 The socket we are accepting connections on.
InetAddress acceptAddr
 The server address we are accepting connections on.

Private Member Functions

void openSocket ()
void closeSocket ()

Private Attributes

boolean accepting = false
 If it is accepting connections.

Static Private Attributes

static final Logger LOGGER = Logger.getLogger(Acceptor.class)
 The logger.
static int backlog = 50
 Used to create the listening socket.
static int so_timeout = 0
 SO_TIMEOUT for the socket.


Constructor & Destructor Documentation

de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.Acceptor ( int  port  ) 

Creates a new acceptor.

Parameters:
port Port number, at which the DiameterPeer is ready to accept a connection.

Definition at line 87 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket().

00087                               {
00088         this.port = port;
00089         this.acceptAddr = null;
00090         openSocket();
00091     }

de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.Acceptor ( int  port,
InetAddress  bindAddr,
DiameterPeer  dp 
)

Create a new acceptor.

Parameters:
port Port number, at which the DiameterPeer is ready to accept a connection.
bindAddr IP address, at which the DiameterPeer accepts connnection.
dp DiameterPeer, for which the acceptor is created.

Definition at line 101 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket().

00101                                                                    {
00102         this.port = port;
00103         this.acceptAddr = bindAddr;
00104         this.diameterPeer = dp;
00105         openSocket();
00106     }


Member Function Documentation

void de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket (  )  [private]

Definition at line 108 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptAddr, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptSocket, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.backlog, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.LOGGER, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.port, and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.so_timeout.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.Acceptor().

00109     {
00110         try {
00111             acceptSocket = new ServerSocket(port,backlog,acceptAddr);
00112         } catch (IOException e) {
00113             LOGGER.error("Acceptor: Error opening socket on port "+port);
00114             e.printStackTrace();
00115         }
00116         try {
00117             acceptSocket.setSoTimeout(so_timeout);
00118         } catch (SocketException e1) {
00119             LOGGER.error("Acceptor: Error setting SO_TIMEOUT socket of "+so_timeout);
00120             e1.printStackTrace();
00121         }
00122     }

void de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket (  )  [private]

Definition at line 124 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptSocket, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.LOGGER, and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.port.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.stopAccepting().

00125     {
00126         try {
00127             acceptSocket.close();
00128         } catch (IOException e) {
00129             LOGGER.error("Acceptor: Error closing socket on port "+port);
00130             e.printStackTrace();
00131         }
00132     }   

void de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.startAccepting (  ) 

Start a acceptor.

A DiameterPeer is ready to accept a connection.

Definition at line 139 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.accepting.

Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer().

00140     {
00141         accepting = true;
00142         this.start();
00143     }

void de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.stopAccepting (  ) 

Stop a acceptor.

A DiameterPeer is unable to accept a connection.

Definition at line 149 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.accepting, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.so_timeout.

Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.shutdown().

00150     {
00151         accepting = false;
00152         if (so_timeout==0)
00153             closeSocket();
00154     }

void de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run (  ) 

Accept incoming request, create a communicator which will be associated with a propor Peer in the PeerManager.

See also:
java.lang.Runnable.run()

Definition at line 162 of file Acceptor.java.

References de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.accepting, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptSocket, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket(), de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.diameterPeer, and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.LOGGER.

00162                       {
00163         Socket clientSocket;
00164         while(accepting){
00165             try {
00166                 clientSocket = acceptSocket.accept();
00167             } catch (SocketTimeoutException e) {
00168                 LOGGER.error("Acceptor: SO_TIMEOUT -> No Connection");
00169                 continue;
00170             } catch (IOException e) {
00171                 if (accepting){
00172                     LOGGER.error("Acceptor: I/O Error on accept");
00173                     e.printStackTrace();
00174                 }
00175                 break;
00176             } 
00177             LOGGER.debug("Acceptor: Connection Accepted");
00178             Communicator r = new Communicator(clientSocket,diameterPeer,Communicator.Receiver);
00179         }
00180         closeSocket();
00181     }


Member Data Documentation

final Logger de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.LOGGER = Logger.getLogger(Acceptor.class) [static, private]

The logger.

Definition at line 59 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket(), de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run().

DiameterPeer de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.diameterPeer

DiameterPeer API reference.

Definition at line 62 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run().

int de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.port [package]

The port it listens to.

Definition at line 65 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket().

ServerSocket de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptSocket [package]

The socket we are accepting connections on.

Definition at line 68 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.closeSocket(), de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run().

InetAddress de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.acceptAddr [package]

The server address we are accepting connections on.

Definition at line 71 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket().

boolean de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.accepting = false [private]

If it is accepting connections.

Definition at line 74 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.run(), de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.startAccepting(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.stopAccepting().

int de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.backlog = 50 [static, private]

Used to create the listening socket.

Definition at line 77 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket().

int de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.so_timeout = 0 [static, private]

SO_TIMEOUT for the socket.

Definition at line 80 of file Acceptor.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.openSocket(), and de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.stopAccepting().


The documentation for this class was generated from the following file:
Generated on Tue Jul 29 04:09:50 2008 for Open IMS Core JavaDiameterPeer by  doxygen 1.5.2