Definition at line 90 of file DiameterPeer.java.
Public Member Functions | |
| synchronized int | getNextHopByHopId () |
| Generates Hop-by-Hop id. | |
| synchronized int | getNextEndToEndId () |
| Generates End-to-End id. | |
| DiameterPeer (String xml) | |
| Construct a DiameterPeer based on a configuration file. | |
| void | enableTransactions (long timeout, long checkInterval) |
| Bundles Diameter request and answer to a transaction. | |
| DiameterMessage | newRequest (int command_code, int application_id) |
| Creates a new Diameter request with proxiable bit set. | |
| DiameterMessage | newRequest (int command_code, boolean Proxiable, int application_id) |
| Creates a new Diameter request. | |
| DiameterMessage | newResponse (DiameterMessage request) |
| Creates a new Diameter answer. | |
| boolean | sendMessage (String peerFQDN, DiameterMessage msg) |
| Sends a Diameter message to the designated peer. | |
| boolean | sendMessage (DiameterMessage msg) |
| Sends a Diameter message to a realm routed peer. | |
| boolean | sendRequestTransactional (String peerFQDN, DiameterMessage req, TransactionListener tl) |
| Sends a Diameter request and a TransactionWorker handles the answer. | |
| boolean | sendRequestTransactional (DiameterMessage req, TransactionListener tl) |
| Sends a Diameter request and a TransactionWorker handles the answer. | |
| DiameterMessage | sendRequestBlocking (String peerFQDN, DiameterMessage req) |
| Sends a Diameter message to the designated peer. | |
| DiameterMessage | sendRequestBlocking (DiameterMessage req) |
| Sends a Diameter message to a realm routing determined peer. | |
| void | addEventListener (EventListener l) |
| Adds an EventListener. | |
| void | removeEventListener (EventListener l) |
| Removes an EventListener. | |
| void | shutdown () |
| Deactives the DiameterPeer. | |
Public Attributes | |
| String | FQDN |
| FQDN of itself. | |
| String | Realm |
| Realm of itself. | |
| int | Vendor_Id |
| Vendor id of itself. | |
| String | Product_Name |
| Product Name of itself. | |
| int | Tc |
| Tc timer value - interval to attempt peer reconnect. | |
| Vector< Acceptor > | acceptors |
| Accepting sockets. | |
| boolean | AcceptUnknownPeers |
| If unknown (unconfigured) peers are allowed to connect. | |
| boolean | DropUnknownOnDisconnect |
| If to delete unknown peers after they disconnect. | |
| Vector< Application > | AuthApp |
| Supported Applications. | |
| Vector< Application > | AcctApp |
| RoutingEngine | routingTable = null |
| Routing Engine. | |
| PeerManager | peerManager |
| PeerManger manages connection with other Diameter peers. | |
| Vector< EventListener > | eventListeners |
| Sevice must define new eventListeners in order to process received Diameter answers. | |
| int | queueLength |
| Received Queue Max Length. | |
| ArrayBlockingQueue< DiameterTask > | queueTasks |
| Received Messages queue. | |
| int | workerCount = 1 |
| The number of workers that process DiameterTasks from the taks queue. | |
| int | hopbyhop_id = 0 |
| Hop-by-Hop identifier. | |
| int | endtoend_id = 0 |
| End-to-End identifier. | |
Package Attributes | |
| Document | config |
| Configuration DOM. | |
Private Member Functions | |
| boolean | readConfig (String cfgFile) |
| void | initRoutingTable (Document config) |
| void | startWorkers () |
Private Attributes | |
| DiameterWorker | workers [] |
| workers for running the event listeners | |
| TransactionWorker | transactionWorker = null |
| transaction worker | |
Static Private Attributes | |
| static final Logger | LOGGER = Logger.getLogger(DiameterPeer.class) |
| The logger. | |
| de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer | ( | String | xml | ) |
Construct a DiameterPeer based on a configuration file.
| xml | Configuration file. |
Definition at line 174 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.acceptors, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.AcceptUnknownPeers, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.config, de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.configurePeer(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DropUnknownOnDisconnect, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.endtoend_id, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.eventListeners, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.FQDN, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.hopbyhop_id, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.initRoutingTable(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.peerManager, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Product_Name, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.queueLength, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.queueTasks, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.readConfig(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Realm, de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.startAccepting(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.startWorkers(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Tc, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Vendor_Id, and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.workerCount.
00175 { 00176 Acceptor acc; 00177 NodeList nl; 00178 Node n,nv; 00179 int port,app_id,vendor_id; 00180 InetAddress addr; 00181 String fqdn,realm; 00182 Application app; 00183 00184 eventListeners = new Vector<EventListener>(); 00185 00186 java.util.Random rand = new java.util.Random(); 00187 hopbyhop_id = rand.nextInt(); 00188 endtoend_id = ((int) (System.currentTimeMillis()&0xFFF))<<20; 00189 endtoend_id |= rand.nextInt() & 0xFFFFF; 00190 00191 /* parse the config */ 00192 if (!readConfig(xml)) { 00193 LOGGER.error("DiameterPeer: Error parsing config file"); 00194 return; 00195 } 00196 FQDN = config.getDocumentElement().getAttribute("FQDN"); 00197 LOGGER.info("FQDN: " + config.getDocumentElement().getAttribute("FQDN")); 00198 Realm = config.getDocumentElement().getAttribute("Realm"); 00199 LOGGER.info("Realm: " + config.getDocumentElement().getAttribute("Realm")); 00200 Vendor_Id = Integer.parseInt(config.getDocumentElement().getAttribute("Vendor_Id")); 00201 LOGGER.info("Vendor_ID : " + Integer.parseInt(config.getDocumentElement().getAttribute("Vendor_Id"))); 00202 Product_Name = config.getDocumentElement().getAttribute("Product_Name"); 00203 LOGGER.info("Product Name: " + config.getDocumentElement().getAttribute("Product_Name")); 00204 AcceptUnknownPeers = Integer.parseInt(config.getDocumentElement().getAttribute("AcceptUnknownPeers"))!=0; 00205 LOGGER.info("AcceptUnknwonPeers: " + AcceptUnknownPeers); 00206 DropUnknownOnDisconnect = Integer.parseInt(config.getDocumentElement().getAttribute("DropUnknownOnDisconnect"))!=0; 00207 LOGGER.info("DropUnknownOnDisconnect: " + DropUnknownOnDisconnect); 00208 00209 Tc = Integer.parseInt(config.getDocumentElement().getAttribute("Tc")); 00210 workerCount = Integer.parseInt(config.getDocumentElement().getAttribute("Workers")); 00211 queueLength = Integer.parseInt(config.getDocumentElement().getAttribute("QueueLength")); 00212 00213 queueTasks = new ArrayBlockingQueue<DiameterTask>(queueLength,true); 00214 00215 startWorkers(); 00216 00217 /* Read Supported Application ids */ 00218 this.AuthApp = new Vector<Application>(); 00219 this.AcctApp = new Vector<Application>(); 00220 nl = config.getDocumentElement().getElementsByTagName("Auth"); 00221 for(int i=0;i<nl.getLength();i++){ 00222 n = nl.item(i); 00223 app_id = 0; 00224 app_id = Integer.parseInt(n.getAttributes().getNamedItem("id").getNodeValue()); 00225 vendor_id=0; 00226 if (n.getAttributes().getNamedItem("vendor")!=null) 00227 vendor_id = Integer.parseInt(n.getAttributes().getNamedItem("vendor").getNodeValue()); 00228 00229 app = new Application(app_id,vendor_id,Application.Auth); 00230 this.AuthApp.add(app); 00231 } 00232 nl = config.getDocumentElement().getElementsByTagName("Acct"); 00233 for(int i=0;i<nl.getLength();i++){ 00234 n = nl.item(i); 00235 app_id = 0; 00236 app_id = Integer.parseInt(n.getAttributes().getNamedItem("id").getNodeValue()); 00237 vendor_id=0; 00238 if (n.getAttributes().getNamedItem("vendor")!=null) 00239 vendor_id = Integer.parseInt(n.getAttributes().getNamedItem("vendor").getNodeValue()); 00240 00241 app = new Application(app_id,vendor_id,Application.Acct); 00242 this.AcctApp.add(app); 00243 } 00244 /* Initialize the Peer Manager */ 00245 peerManager = new PeerManager(this); 00246 00247 /* Read the peers from the configuration file */ 00248 nl = config.getDocumentElement().getElementsByTagName("Peer"); 00249 for(int i=0;i<nl.getLength();i++){ 00250 n = nl.item(i); 00251 00252 fqdn = n.getAttributes().getNamedItem("FQDN").getNodeValue(); 00253 00254 realm = n.getAttributes().getNamedItem("Realm").getNodeValue(); 00255 00256 port = 3868; 00257 nv = n.getAttributes().getNamedItem("port"); 00258 if (nv==null) port = 3868; 00259 else port = Integer.parseInt(nv.getNodeValue()); 00260 00261 peerManager.configurePeer(fqdn,realm,port); 00262 } 00263 00264 /* Create & start connection acceptors */ 00265 acceptors = new Vector<Acceptor>(); 00266 nl = config.getDocumentElement().getElementsByTagName("Acceptor"); 00267 for(int i=0;i<nl.getLength();i++){ 00268 n = nl.item(i); 00269 00270 port = 3868; 00271 nv = n.getAttributes().getNamedItem("port"); 00272 if (nv==null) port = 3868; 00273 else port = Integer.parseInt(nv.getNodeValue()); 00274 00275 addr = null; 00276 nv = n.getAttributes().getNamedItem("bind"); 00277 if (nv !=null && nv.getNodeValue().length()!=0 ) 00278 try { 00279 addr = InetAddress.getByName(nv.getNodeValue()); 00280 } catch (UnknownHostException e) { 00281 LOGGER.error("DiameterPeer: Can not resolve "+nv.getNodeValue()); 00282 e.printStackTrace(); 00283 continue; 00284 } 00285 acc = new Acceptor(port,addr,this); 00286 acc.startAccepting(); 00287 acceptors.add(acc); 00288 } 00289 00290 initRoutingTable(config); 00291 00292 peerManager.start(); 00293 00294 }
| synchronized int de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.getNextHopByHopId | ( | ) |
Generates Hop-by-Hop id.
Definition at line 159 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.hopbyhop_id.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPR(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWR().
00160 { 00161 return ++hopbyhop_id; 00162 }
| synchronized int de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.getNextEndToEndId | ( | ) |
Generates End-to-End id.
Definition at line 164 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.endtoend_id.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPR(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWR().
00165 { 00166 return ++endtoend_id; 00167 }
| boolean de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.readConfig | ( | String | cfgFile | ) | [private] |
Definition at line 296 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.config.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer().
00297 { 00298 DocumentBuilderFactory factory = 00299 DocumentBuilderFactory.newInstance(); 00300 //factory.setValidating(true); 00301 //factory.setNamespaceAware(true); 00302 try { 00303 DocumentBuilder builder = factory.newDocumentBuilder(); 00304 config = builder.parse( cfgFile ); 00305 } catch (SAXException sxe) { 00306 // Error generated during parsing) 00307 Exception x = sxe; 00308 if (sxe.getException() != null) 00309 x = sxe.getException(); 00310 x.printStackTrace(); 00311 return false; 00312 } catch (ParserConfigurationException pce) { 00313 // Parser with specified options can't be built 00314 pce.printStackTrace(); 00315 return false; 00316 } catch (IOException ioe) { 00317 // I/O error 00318 ioe.printStackTrace(); 00319 return false; 00320 } 00321 return true; 00322 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.initRoutingTable | ( | Document | config | ) | [private] |
Definition at line 325 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addDefaultRoute(), de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.addRealmRoute(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.routingTable.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer().
00325 { 00326 NodeList nl, nlc; 00327 String fqdn,realm; 00328 int metric; 00329 00330 this.routingTable = new RoutingEngine(); 00331 nl = config.getDocumentElement().getElementsByTagName("DefaultRoute"); 00332 for(int i=0;i<nl.getLength();i++){ 00333 fqdn = nl.item(i).getAttributes().getNamedItem("FQDN").getNodeValue(); 00334 metric = Integer.valueOf(nl.item(i).getAttributes().getNamedItem("metric").getNodeValue()); 00335 routingTable.addDefaultRoute(fqdn, metric); 00336 } 00337 nl = config.getDocumentElement().getElementsByTagName("Realm"); 00338 for(int i=0;i<nl.getLength();i++){ 00339 realm = nl.item(i).getAttributes().getNamedItem("name").getNodeValue(); 00340 nlc = nl.item(i).getChildNodes(); 00341 for(int j=0;j<nlc.getLength();j++) 00342 if (nlc.item(j).getNodeName().equalsIgnoreCase("Route")){ 00343 fqdn = nlc.item(j).getAttributes().getNamedItem("FQDN").getNodeValue(); 00344 metric = Integer.valueOf(nlc.item(j).getAttributes().getNamedItem("metric").getNodeValue()); 00345 routingTable.addRealmRoute(realm, fqdn, metric); 00346 } 00347 } 00348 00349 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.startWorkers | ( | ) | [private] |
Definition at line 352 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.queueTasks, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.workerCount, and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.workers.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer().
00353 { 00354 workers = new DiameterWorker[workerCount]; 00355 for(int i=0;i<workerCount;i++) 00356 workers[i] = new DiameterWorker(i,this.queueTasks); 00357 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.enableTransactions | ( | long | timeout, | |
| long | checkInterval | |||
| ) |
Bundles Diameter request and answer to a transaction.
| timeout | Lifetime of a transaction. | |
| checkInterval |
Definition at line 365 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeerTest.test().
00366 { 00367 if (this.transactionWorker == null) 00368 this.transactionWorker = new TransactionWorker(this,timeout,checkInterval); 00369 }
| DiameterMessage de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest | ( | int | command_code, | |
| int | application_id | |||
| ) |
Creates a new Diameter request with proxiable bit set.
| command_code | Command code of the request. | |
| application_id | Application id in the message header. |
Definition at line 380 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeerTest.UAR().
00381 { 00382 return newRequest(command_code, true, application_id); 00383 }
| DiameterMessage de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest | ( | int | command_code, | |
| boolean | Proxiable, | |||
| int | application_id | |||
| ) |
Creates a new Diameter request.
| command_code | Command code of the request. | |
| Proxiable | Proxiable is set if true. | |
| application_id | Application id in the message header. |
Definition at line 395 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.addAVP(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.FQDN, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.getNextEndToEndId(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.getNextHopByHopId(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Realm, and de.fhg.fokus.diameter.DiameterPeer.data.AVP.setData().
00397 { 00398 DiameterMessage msg = new DiameterMessage(command_code, 00399 true, 00400 Proxiable, 00401 application_id, 00402 this.getNextHopByHopId(), 00403 this.getNextEndToEndId()); 00404 AVP avp; 00405 00406 avp = new AVP(AVP.Origin_Host,true,0); 00407 avp.setData(this.FQDN); 00408 msg.addAVP(avp); 00409 00410 avp = new AVP(AVP.Origin_Realm,true,0); 00411 avp.setData(this.Realm); 00412 msg.addAVP(avp); 00413 00414 return msg; 00415 }
| DiameterMessage de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newResponse | ( | DiameterMessage | request | ) |
Creates a new Diameter answer.
| request | Diameter request. |
Definition at line 425 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.addAVP(), de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.applicationID, de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.commandCode, de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.endToEndID, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.FQDN, de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.getSessionId(), de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage.hopByHopID, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.Realm, and de.fhg.fokus.diameter.DiameterPeer.data.AVP.setData().
Referenced by de.fhg.fokus.diameter.DiameterPeer.TestEventListener.recvMessage().
00426 { 00427 DiameterMessage msg = new DiameterMessage(request.commandCode,false,request.applicationID); 00428 AVP avp; 00429 00430 msg.endToEndID = request.endToEndID; 00431 msg.hopByHopID = request.hopByHopID; 00432 00433 if (request.getSessionId() != null) { 00434 avp = request.getSessionId(); 00435 msg.addAVP(avp); 00436 } 00437 00438 avp = new AVP(AVP.Origin_Host,true,0); 00439 avp.setData(this.FQDN); 00440 msg.addAVP(avp); 00441 00442 avp = new AVP(AVP.Origin_Realm,true,0); 00443 avp.setData(this.Realm); 00444 msg.addAVP(avp); 00445 00446 00447 return msg; 00448 }
| boolean de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendMessage | ( | String | peerFQDN, | |
| DiameterMessage | msg | |||
| ) |
Sends a Diameter message to the designated peer.
| peerFQDN | FQDN of the designated peer. | |
| msg | Diameter message should be sent. |
Definition at line 457 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.getPeerByFQDN(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.peerManager, de.fhg.fokus.diameter.DiameterPeer.peer.Peer.sendMessage(), and de.fhg.fokus.diameter.DiameterPeer.peer.Peer.state.
Referenced by de.fhg.fokus.diameter.DiameterPeer.TestEventListener.recvMessage(), de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestBlocking(), and de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestTransactional().
00458 { 00459 Peer p; 00460 p = peerManager.getPeerByFQDN(peerFQDN); 00461 if (p==null){ 00462 LOGGER.error("DiameterPeer: Peer "+peerFQDN+" not found in peer list."); 00463 return false; 00464 } 00465 if (p.state!=StateMachine.I_Open && 00466 p.state!=StateMachine.R_Open){ 00467 LOGGER.error("DiameterPeer: Peer "+peerFQDN+" not connected."); 00468 return false; 00469 } 00470 return p.sendMessage(msg); 00471 }
| boolean de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendMessage | ( | DiameterMessage | msg | ) |
Sends a Diameter message to a realm routed peer.
| msg | Diameter message should be sent. |
Definition at line 479 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.routing.RoutingEngine.getRoute(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.peerManager, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.routingTable, and de.fhg.fokus.diameter.DiameterPeer.peer.Peer.sendMessage().
00480 { 00481 Peer p; 00482 if (routingTable==null){ 00483 LOGGER.error("DiameterPeer: RoutingTable not initialized!"); 00484 return false; 00485 } 00486 p = routingTable.getRoute(msg,peerManager); 00487 if (p==null){ 00488 LOGGER.error("DiameterPeer: No suitable peer to route to could be found."); 00489 return false; 00490 } 00491 return p.sendMessage(msg); 00492 }
| boolean de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestTransactional | ( | String | peerFQDN, | |
| DiameterMessage | req, | |||
| TransactionListener | tl | |||
| ) |
Sends a Diameter request and a TransactionWorker handles the answer.
| peerFQDN | FQDN of the peer. | |
| req | Diameter request. | |
| tl | TransactionListener. |
Definition at line 502 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestTransactional(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker.
00503 { 00504 if (this.transactionWorker!=null) return transactionWorker.sendRequestTransactional(peerFQDN,req,tl); 00505 else { 00506 LOGGER.error("DiameterPeer:sendRequestTransactional(): Transactions are not enabled on this peer!"); 00507 return false; 00508 } 00509 }
| boolean de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestTransactional | ( | DiameterMessage | req, | |
| TransactionListener | tl | |||
| ) |
Sends a Diameter request and a TransactionWorker handles the answer.
| req | Diameter request. | |
| tl | TransactionListener. |
Definition at line 518 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestTransactional(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker.
00519 { 00520 if (this.transactionWorker!=null) return transactionWorker.sendRequestTransactional(req,tl); 00521 else { 00522 LOGGER.error("DiameterPeer:sendRequestTransactional(): Transactions are not enabled on this peer!"); 00523 return false; 00524 } 00525 }
| DiameterMessage de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestBlocking | ( | String | peerFQDN, | |
| DiameterMessage | req | |||
| ) |
Sends a Diameter message to the designated peer.
The thread will wait for a Diameter answer until it arrives or timeout.
| peerFQDN | FQDN of the designated peer. | |
| req | Diameter message should be sent. |
Definition at line 535 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestBlocking(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeerTest.test().
00536 { 00537 if (this.transactionWorker!=null) return transactionWorker.sendRequestBlocking(peerFQDN,req); 00538 else { 00539 LOGGER.error("DiameterPeer:sendRequestBlocking(): Transactions are not enabled on this peer!"); 00540 return null; 00541 } 00542 }
| DiameterMessage de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestBlocking | ( | DiameterMessage | req | ) |
Sends a Diameter message to a realm routing determined peer.
The thread will wait for a Diameter answer until it arrives or timeout.
| req | Diameter message should be sent. |
Definition at line 551 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER, de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.sendRequestBlocking(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker.
00552 { 00553 if (this.transactionWorker!=null) return transactionWorker.sendRequestBlocking(req); 00554 else { 00555 LOGGER.error("DiameterPeer:sendRequestBlocking(): Transactions are not enabled on this peer!"); 00556 return null; 00557 } 00558 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.addEventListener | ( | EventListener | l | ) |
Adds an EventListener.
| l | EventListener added. |
Definition at line 566 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.eventListeners.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeerTest.test(), and de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.TransactionWorker().
00567 { 00568 eventListeners.add(l); 00569 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.removeEventListener | ( | EventListener | l | ) |
Removes an EventListener.
| l | EventListener removed. |
Definition at line 577 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.eventListeners.
00578 { 00579 eventListeners.remove(l); 00580 }
| void de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.shutdown | ( | ) |
Deactives the DiameterPeer.
Definition at line 585 of file DiameterPeer.java.
References de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.acceptors, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.peerManager, de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionWorker.shutdown(), de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.shutdown(), de.fhg.fokus.diameter.DiameterPeer.transport.Acceptor.stopAccepting(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.transactionWorker, de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.workerCount, and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.workers.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeerTest.test().
00586 { 00587 Acceptor acc; 00588 Iterator<Acceptor> i = acceptors.iterator(); 00589 while(i.hasNext()){ 00590 acc = i.next(); 00591 acc.stopAccepting(); 00592 } 00593 peerManager.shutdown(); 00594 for(int j=0;j<workerCount;j++) 00595 workers[j].shutdown(); 00596 if (transactionWorker!=null) transactionWorker.shutdown(); 00597 }
final Logger de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.LOGGER = Logger.getLogger(DiameterPeer.class) [static, private] |
The logger.
Definition at line 93 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendMessage(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestBlocking(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendRequestTransactional().
FQDN of itself.
Definition at line 96 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Elect(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newResponse(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CEA(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPA(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPR(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWA(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWR().
Realm of itself.
Definition at line 99 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newRequest(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.newResponse(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CEA(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPA(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DPR(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWA(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_DWR().
Vendor id of itself.
Definition at line 102 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CEA().
Product Name of itself.
Definition at line 105 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.I_Snd_CER(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CEA().
Tc timer value - interval to attempt peer reconnect.
Definition at line 108 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.configurePeer(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), and de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.run().
Accepting sockets.
Definition at line 111 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.shutdown().
If unknown (unconfigured) peers are allowed to connect.
Definition at line 114 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.addDynamicPeer(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer().
If to delete unknown peers after they disconnect.
Definition at line 117 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), and de.fhg.fokus.diameter.DiameterPeer.peer.PeerManager.run().
Supported Applications.
Definition at line 120 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Process_CER(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CE_add_applications().
Definition at line 120 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Process_CER(), and de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine.Snd_CE_add_applications().
Routing Engine.
Definition at line 123 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.initRoutingTable(), and de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendMessage().
PeerManger manages connection with other Diameter peers.
Definition at line 126 of file DiameterPeer.java.
Referenced by de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.DiameterPeer(), de.fhg.fokus.diameter.DiameterPeer.transport.Communicator.processMessage(), de.fhg.fokus.diameter.DiameterPeer.DiameterPeer.sendMessage(), a