de.fhg.fokus.diameter.DiameterPeer.DiameterWorker Class Reference

List of all members.

Detailed Description

DiameterWorker gets a DiameterTask out of the task queue and delivers them to the listeners for further processes, if they are defined.

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

Definition at line 47 of file DiameterWorker.java.

Public Member Functions

 DiameterWorker (int id, ArrayBlockingQueue< DiameterTask > tasks)
 Constructs a DiameterWorker.
void run ()
 Delivers a DiameterTask to a listener.
void shutdown ()
 Shuts downs the Diameter worker.

Package Attributes

int id

Private Attributes

boolean running
ArrayBlockingQueue< DiameterTaskqueueTasks

Static Private Attributes

static final Logger LOGGER = Logger.getLogger(DiameterWorker.class)
 The logger.


Constructor & Destructor Documentation

de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.DiameterWorker ( int  id,
ArrayBlockingQueue< DiameterTask tasks 
)

Constructs a DiameterWorker.

Parameters:
id An id number of the DiameterWorker.
tasks Task queue for saving all DiameterTasks.

Definition at line 63 of file DiameterWorker.java.

00063                                                                           {
00064         this.id = id;
00065         this.running = true;
00066         this.queueTasks = tasks;
00067         this.start();
00068     }


Member Function Documentation

void de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.run (  ) 

Delivers a DiameterTask to a listener.

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

Definition at line 77 of file DiameterWorker.java.

References de.fhg.fokus.diameter.DiameterPeer.peer.Peer.diameterPeer, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.eventListeners, de.fhg.fokus.diameter.DiameterPeer.peer.Peer.FQDN, de.fhg.fokus.diameter.DiameterPeer.data.DiameterTask.msg, de.fhg.fokus.diameter.DiameterPeer.data.DiameterTask.peer, de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.queueTasks, de.fhg.fokus.diameter.DiameterPeer.EventListener.recvMessage(), and de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.running.

00077                       {
00078         DiameterTask task;
00079         int i, size;
00080         EventListener e;
00081         Vector listeners;
00082         
00083         while(running){
00084             task=null;
00085             try {
00086                 task = (DiameterTask) queueTasks.take();
00087             } catch (InterruptedException e1) { }
00088         
00089             if (task==null||task.peer==null||task.msg==null) {
00090                 //LOGGER.debug("["+id+"]ety "+queueTasks.size());
00091                 continue;
00092             }
00093             //LOGGER.debug("["+id+"]got "+queueTasks.size());
00094             //LOGGER.debug("processing");
00095             listeners = task.peer.diameterPeer.eventListeners;
00096 //          if (listeners.size()>0) ((EventListener) listeners.get(0)).recvMessage(task.peer.FQDN,task.msg);
00097             size = listeners.size();
00098             for(i=0;i<size;i++){
00099                 e = (EventListener) listeners.get(i); 
00100                 e.recvMessage(task.peer.FQDN,task.msg);
00101             }
00102         }
00103         //LOGGER.debug("["+id+"]end "+queueTasks.size());
00104     }

void de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.shutdown (  ) 

Shuts downs the Diameter worker.

Definition at line 110 of file DiameterWorker.java.

00111     {
00112         this.running = false;
00113         
00114         // poison the queue (now it just wakes the worker)
00115         try {
00116             this.queueTasks.put(new DiameterTask(null,null));
00117         } catch (InterruptedException e) {
00118             e.printStackTrace();
00119         }
00120     }


Member Data Documentation

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

The logger.

Definition at line 50 of file DiameterWorker.java.

int de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.id [package]

Definition at line 52 of file DiameterWorker.java.

boolean de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.running [private]

Definition at line 53 of file DiameterWorker.java.

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

ArrayBlockingQueue<DiameterTask> de.fhg.fokus.diameter.DiameterPeer.DiameterWorker.queueTasks [private]

Definition at line 54 of file DiameterWorker.java.

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


The documentation for this class was generated from the following file:
Generated on Sat Sep 6 04:10:15 2008 for Open IMS Core JavaDiameterPeer by  doxygen 1.5.2