\r
package org.umu.cops.prpdp;\r
\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.umu.cops.stack.*;\r
+\r
import java.io.IOException;\r
import java.net.Socket;\r
import java.util.Date;\r
-import java.util.Enumeration;\r
-import java.util.Hashtable;\r
-\r
-import org.umu.cops.common.COPSDebug;\r
-import org.umu.cops.stack.COPSClientCloseMsg;\r
-import org.umu.cops.stack.COPSContext;\r
-import org.umu.cops.stack.COPSDeleteMsg;\r
-import org.umu.cops.stack.COPSError;\r
-import org.umu.cops.stack.COPSException;\r
-import org.umu.cops.stack.COPSHeader;\r
-import org.umu.cops.stack.COPSKAMsg;\r
-import org.umu.cops.stack.COPSMsg;\r
-import org.umu.cops.stack.COPSPepId;\r
-import org.umu.cops.stack.COPSReportMsg;\r
-import org.umu.cops.stack.COPSReqMsg;\r
-import org.umu.cops.stack.COPSSyncStateMsg;\r
-import org.umu.cops.stack.COPSTransceiver;\r
+import java.util.Map;\r
+import java.util.concurrent.ConcurrentHashMap;\r
\r
/**\r
* Class for managing an provisioning connection at the PDP side.\r
*/\r
public class COPSPdpConnection implements Runnable {\r
\r
+ public final static Logger logger = LoggerFactory.getLogger(COPSPdpConnection.class);\r
+\r
/**\r
Socket connected to PEP\r
*/\r
/**\r
Maps a Client Handle to a Handler\r
*/\r
- protected Hashtable _managerMap;\r
+ protected final Map<String, COPSPdpReqStateMan> _managerMap;\r
// map < String(COPSHandle), COPSPdpHandler> HandlerMap;\r
\r
/**\r
\r
_lastKa = new Date();\r
_lastmessage = COPSHeader.COPS_OP_OPN;\r
- _managerMap = new Hashtable(20);\r
+ _managerMap = new ConcurrentHashMap<>();\r
\r
_kaTimer = 0;\r
_process = process;\r
return _lastmessage;\r
}\r
\r
- /**\r
- * Gets active handles\r
- * @return An <tt>Enumeration</tt> holding all active handles\r
- */\r
- public Enumeration getHandles() {\r
- return _managerMap.keys();\r
- }\r
-\r
- /**\r
- * Gets the handle map\r
- * @return A <tt>Hashtable</tt> holding the handle map\r
- */\r
- public Hashtable getReqStateMans() {\r
- return _managerMap;\r
- }\r
-\r
/**\r
* Gets the PEP-ID\r
* @return The ID of the PEP, as a <tt>String</tt>\r
int _startTime = (int) (_lastRecKa.getTime());\r
int cTime = (int) (new Date().getTime());\r
\r
- if ((int)(cTime - _startTime) > _kaTimer*1000) {\r
+ if ((cTime - _startTime) > _kaTimer * 1000) {\r
_sock.close();\r
// Notify all Request State Managers\r
notifyNoKAAllReqStateMan();\r
_startTime = (int) (_lastSendKa.getTime());\r
cTime = (int) (new Date().getTime());\r
\r
- if ((int)(cTime - _startTime) > ((_kaTimer*3/4)*1000)) {\r
+ if ((cTime - _startTime) > ((_kaTimer * 3/4) * 1000)) {\r
COPSHeader hdr = new COPSHeader(COPSHeader.COPS_OP_KA);\r
COPSKAMsg msg = new COPSKAMsg();\r
\r
\r
try {\r
Thread.sleep(500);\r
- } catch (Exception e) {};\r
+ } catch (Exception e) {\r
+ logger.error("Exception thrown while sleeping", e);\r
+ }\r
\r
}\r
} catch (Exception e) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_SOCKET, e);\r
+ logger.error("Error while processing socket messages", e);\r
}\r
\r
// connection closed by server\r
// COPSDebug.out(getClass().getName(),"Connection closed by client");\r
try {\r
_sock.close();\r
- } catch (IOException e) {};\r
+ } catch (IOException e) {\r
+ logger.error("Error closing socket", e);\r
+ }\r
\r
// Notify all Request State Managers\r
try {\r
notifyCloseAllReqStateMan();\r
- } catch (COPSPdpException e) {};\r
+ } catch (COPSPdpException e) {\r
+ logger.error("Error closing state managers");\r
+ }\r
}\r
\r
/**\r
try {\r
// Support\r
if (cMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
\r
conn.close();\r
- } catch (Exception unae) { };\r
+ } catch (Exception unae) {\r
+ logger.error("Unexpected exception closing connection", unae);\r
+ }\r
}\r
\r
/**\r
try {\r
// Support\r
if (cMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
-\r
kaMsg.writeData(conn);\r
- } catch (Exception unae) { };\r
+ } catch (Exception unae) {\r
+ logger.error("Unexpected exception while writing COPS data", unae);\r
+ }\r
}\r
\r
/**\r
\r
// Support\r
if (cMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
\r
// Delete clientHandler\r
// cMsg.getClientHandle().getId().getData());\r
}\r
\r
- COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(cMsg.getClientHandle().getId().str());\r
+ COPSPdpReqStateMan man = _managerMap.get(cMsg.getClientHandle().getId().str());\r
if (man == null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOEXPECTEDMSG);\r
+ logger.warn("No state manager found with ID - " + cMsg.getClientHandle().getId().str());\r
} else {\r
man.processDeleteRequestState(cMsg);\r
}\r
\r
// Support\r
if (reqMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
\r
COPSPdpReqStateMan man;\r
\r
// Support\r
if (repMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
\r
COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(repMsg.getClientHandle().getId().str());\r
if (man == null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOEXPECTEDMSG);\r
+ logger.warn("No state manager found with ID - " + repMsg.getClientHandle().getId().str());\r
} else {\r
man.processReport(repMsg);\r
}\r
\r
// Support\r
if (cMsg.getIntegrity() != null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED,\r
- "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+ logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
}\r
\r
COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(cMsg.getClientHandle().getId().str());\r
if (man == null) {\r
- COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOEXPECTEDMSG);\r
+ logger.warn("No state manager found with ID - " + cMsg.getClientHandle().getId().str());\r
} else {\r
man.processSyncComplete(cMsg);\r
}\r
* @throws COPSException\r
* @throws COPSPdpException\r
*/\r
- protected void syncAllRequestState()\r
- throws COPSException, COPSPdpException {\r
- if (_managerMap.size() > 0) {\r
- for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
- String handle = (String) e.nextElement();\r
- COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(handle);\r
-\r
- man.syncRequestState();\r
- }\r
+ protected void syncAllRequestState() throws COPSException, COPSPdpException {\r
+ for (final COPSPdpReqStateMan man : _managerMap.values()) {\r
+ man.syncRequestState();\r
}\r
}\r
\r
- private void notifyCloseAllReqStateMan()\r
- throws COPSPdpException {\r
- if (_managerMap.size() > 0) {\r
- for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
- String handle = (String) e.nextElement();\r
- COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(handle);\r
-\r
- man.processClosedConnection(_error);\r
- }\r
+ private void notifyCloseAllReqStateMan() throws COPSPdpException {\r
+ for (final COPSPdpReqStateMan man : _managerMap.values()) {\r
+ man.processClosedConnection(_error);\r
}\r
}\r
\r
- private void notifyNoKAAllReqStateMan()\r
- throws COPSPdpException {\r
- if (_managerMap.size() > 0) {\r
- for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
- String handle = (String) e.nextElement();\r
- COPSPdpReqStateMan man = (COPSPdpReqStateMan) _managerMap.get(handle);\r
-\r
- man.processNoKAConnection();\r
- }\r
+ private void notifyNoKAAllReqStateMan() throws COPSPdpException {\r
+ for (final COPSPdpReqStateMan man : _managerMap.values()) {\r
+ man.processNoKAConnection();\r
}\r
}\r
\r