de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine Class Reference

List of all members.

Detailed Description

Definition at line 42 of file RoutingEngine.java.

Public Member Functions

 RoutingEngine ()
void addDefaultRoute (String FQDN, int metric)
void addRealmRoute (String realm, String FQDN, int metric)
Peer getRoute (DiameterMessage msg, PeerManager peerManager)

Package Attributes

Vector< RoutingEntrydefaultRoutes
TreeMap< String, RoutingRealmrealms


Constructor & Destructor Documentation

de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.RoutingEngine (  ) 

Definition at line 47 of file RoutingEngine.java.

References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.defaultRoutes, and de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.realms.

00048     {
00049         defaultRoutes = new Vector<RoutingEntry>();
00050         realms = new TreeMap<String, RoutingRealm>();
00051     }


Member Function Documentation

void de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addDefaultRoute ( String  FQDN,
int  metric 
)

Definition at line 53 of file RoutingEngine.java.

References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.defaultRoutes.

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

00053                                                        {        
00054         RoutingEntry re = new RoutingEntry(FQDN,metric);
00055         for (RoutingEntry i : defaultRoutes) 
00056             if (i.metric<=metric){
00057                 defaultRoutes.add(defaultRoutes.indexOf(i), re);
00058                 break;
00059             }
00060     }

void de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addRealmRoute ( String  realm,
String  FQDN,
int  metric 
)

Definition at line 62 of file RoutingEngine.java.

References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingRealm.addRoute(), and de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.realms.

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

00063     {
00064         RoutingRealm rr;
00065         rr = realms.get(realm);
00066         if (rr==null){
00067             rr = new RoutingRealm(realm);
00068             this.realms.put(realm, rr);
00069         }
00070         rr.addRoute(FQDN,metric);
00071     }

Peer de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.getRoute ( DiameterMessage  msg,
PeerManager  peerManager 
)

Definition at line 73 of file RoutingEngine.java.

References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.defaultRoutes, de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.findAVP(), de.fhg.fokus.diameter.DiameterPeer.data.AVP.getData(), de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.getPeerByFQDN(), de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.realms, and de.fhg.fokus.diameter.DiameterPeer.peer.Peer.state.

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

00073                                                                        {
00074         String destinationHost=null,destinationRealm=null;
00075         AVP avp;
00076         Peer p;
00077         avp = msg.findAVP(AVP.Destination_Host);
00078         if (avp!=null) destinationHost = new String(avp.getData());
00079         if (destinationHost!=null && destinationHost.length()>0){
00080             p = peerManager.getPeerByFQDN(destinationHost);
00081             if (p!=null && (p.state==StateMachine.I_Open || p.state!=StateMachine.R_Open))
00082                 return p;
00083         }
00084         avp = msg.findAVP(AVP.Destination_Realm);
00085         if (avp!=null) destinationRealm = new String(avp.getData());
00086         if (destinationRealm!=null && destinationRealm.length()>0){
00087             RoutingRealm rr = realms.get(destinationRealm);
00088             if (rr!=null){
00089                 for (RoutingEntry i : rr.routes) {
00090                     p = peerManager.getPeerByFQDN(i.FQDN);
00091                     if (p!=null && (p.state==StateMachine.I_Open || p.state!=StateMachine.R_Open))
00092                         return p;                   
00093                 }
00094             }
00095         }
00096         for (RoutingEntry i : defaultRoutes) {
00097             p = peerManager.getPeerByFQDN(i.FQDN);
00098             if (p!=null && (p.state==StateMachine.I_Open || p.state!=StateMachine.R_Open))
00099                 return p;                   
00100         }
00101         return null;
00102     }


Member Data Documentation

Vector<RoutingEntry> de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.defaultRoutes [package]

Definition at line 44 of file RoutingEngine.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addDefaultRoute(), de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.getRoute(), and de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.RoutingEngine().

TreeMap<String,RoutingRealm> de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.realms [package]

Definition at line 45 of file RoutingEngine.java.

Referenced by de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addRealmRoute(), de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.getRoute(), and de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.RoutingEngine().


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