Replaced use of logger abstraction COPSDebug.java to having this class log directly... 85/18485/1
authorSteven Pisarski <s.pisarski@cablelabs.com>
Thu, 16 Apr 2015 20:57:28 +0000 (14:57 -0600)
committerSteven Pisarski <s.pisarski@cablelabs.com>
Thu, 16 Apr 2015 20:57:28 +0000 (14:57 -0600)
Change-Id: I0e870ba11017fc8270ac056814fe7046fc6db04a
Signed-off-by: Steven Pisarski <s.pisarski@cablelabs.com>
packetcable-driver/src/main/java/org/umu/cops/ospep/COPSPepOSConnection.java

index 31a0b64febbe49c4be2bb86c209821b6e1ae76b3..96bfa8e43f3171ef2c8d4673145a22bcc2f5a206 100644 (file)
@@ -1,47 +1,40 @@
 package org.umu.cops.ospep;\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
-import java.util.Vector;\r
-\r
-import org.umu.cops.common.COPSDebug;\r
-import org.umu.cops.stack.COPSClientCloseMsg;\r
-import org.umu.cops.stack.COPSDecisionMsg;\r
-import org.umu.cops.stack.COPSError;\r
-import org.umu.cops.stack.COPSException;\r
-import org.umu.cops.stack.COPSHandle;\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.COPSSyncStateMsg;\r
-import org.umu.cops.stack.COPSTransceiver;\r
+import java.util.*;\r
+import java.util.concurrent.ConcurrentHashMap;\r
 \r
 /**\r
  * COPSPepConnection represents a PEP-PDP Connection Manager.\r
  * Responsible for processing messages received from PDP.\r
  */\r
 public class COPSPepOSConnection implements Runnable {\r
+\r
+    public final static Logger logger = LoggerFactory.getLogger(COPSPepOSConnection.class);\r
+\r
     /** Socket connected to PDP */\r
     protected Socket _sock;\r
 \r
     /** Time to wait responses (milliseconds), default is 10 seconds */\r
-    protected int _responseTime;\r
+    protected final int _responseTime;\r
 \r
     /** COPS Client-type */\r
-    protected short _clientType;\r
+    protected final short _clientType;\r
 \r
     /**\r
         Accounting timer value (secs)\r
      */\r
-    protected short _acctTimer;\r
+    protected transient short _acctTimer;\r
 \r
     /**\r
         Keep-alive timer value (secs)\r
      */\r
-    protected short _kaTimer;\r
+    protected transient short _kaTimer;\r
 \r
     /**\r
      *  Time of the latest keep-alive received\r
@@ -56,7 +49,7 @@ public class COPSPepOSConnection implements Runnable {
     /**\r
         Maps a COPS Client Handle to a Request State Manager\r
      */\r
-    protected Hashtable _managerMap;\r
+    protected final Map<String, COPSPepOSReqStateMan> _managerMap;\r
     // map < String(COPSHandle), COPSPepOSReqStateMan>;\r
 \r
     /**\r
@@ -79,7 +72,7 @@ public class COPSPepOSConnection implements Runnable {
         _responseTime = 10000;\r
         _lastmessage = COPSHeader.COPS_OP_CAT;\r
 \r
-        _managerMap = new Hashtable(20);\r
+        _managerMap = new ConcurrentHashMap<>();\r
     }\r
 \r
     /**\r
@@ -114,20 +107,13 @@ public class COPSPepOSConnection implements Runnable {
         return _acctTimer;\r
     }\r
 \r
-    /**\r
-     * Gets active COPS handles\r
-     * @return  An <tt>Enumeration</tt> holding all active handles\r
-     */\r
-    protected Enumeration getHandles() {\r
-        return _managerMap.keys();\r
-    }\r
-\r
     /**\r
      * Gets all request state managers\r
      * @return  A <tt>Hashatable</tt> holding all request state managers\r
+     * TODO - change the return to Map\r
      */\r
     protected Hashtable getReqStateMans() {\r
-        return _managerMap;\r
+        return new Hashtable(_managerMap);\r
     }\r
 \r
     /**\r
@@ -155,14 +141,6 @@ public class COPSPepOSConnection implements Runnable {
         return _lastmessage;\r
     }\r
 \r
-    /**\r
-     * Sets response time\r
-     * @param respTime  Response time value (msecs)\r
-     */\r
-    public void setResponseTime(int respTime) {\r
-        _responseTime = respTime;\r
-    };\r
-\r
     /**\r
      * Sets keep-alive timer\r
      * @param kaTimer   Keep-alive timer value (secs)\r
@@ -200,7 +178,7 @@ public class COPSPepOSConnection implements Runnable {
                     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
@@ -210,7 +188,7 @@ public class COPSPepOSConnection implements Runnable {
                     _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
@@ -226,7 +204,7 @@ public class COPSPepOSConnection implements Runnable {
                     int _startTime = (int) (_lastSendAcc.getTime());\r
                     int cTime = (int) (new Date().getTime());\r
 \r
-                    if ((int)(cTime - _startTime) > ((_acctTimer*3/4)*1000)) {\r
+                    if ((cTime - _startTime) > ((_acctTimer*3/4)*1000)) {\r
                         // Notify all Request State Managers\r
                         notifyAcctAllReqStateMan();\r
                         _lastSendAcc = new Date();\r
@@ -235,23 +213,28 @@ public class COPSPepOSConnection implements Runnable {
 \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
         } catch (Exception e) {\r
-            e.printStackTrace();\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 server");\r
         try {\r
             _sock.close();\r
-        } catch (IOException e) {};\r
+        } catch (IOException e) {\r
+            logger.error("Unexpected exception closing the socket", e);\r
+        }\r
 \r
         // Notify all Request State Managers\r
         try {\r
             notifyCloseAllReqStateMan();\r
-        } catch (COPSPepException e) {};\r
+        } catch (COPSPepException e) {\r
+            logger.error("Error closing state managers", e);\r
+        }\r
     }\r
 \r
     /**\r
@@ -306,10 +289,12 @@ public class COPSPepOSConnection implements Runnable {
         try {\r
             // Support\r
             if (cMsg.getIntegrity() != null)\r
-                COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED, "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
+                logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\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
@@ -337,14 +322,11 @@ public class COPSPepOSConnection implements Runnable {
 \r
         // COPSDebug.out(getClass().getName(),"Get KAlive Msg");\r
 \r
-        try {\r
-            // Support\r
-            if (cMsg.getIntegrity() != null)\r
-                COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOSUPPORTED, "Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
-\r
-            // must we do anything else?\r
+        // Support\r
+        if (cMsg.getIntegrity() != null)\r
+            logger.warn("Unsupported objects (Integrity) to connection " + conn.getInetAddress());\r
 \r
-        } catch (Exception unae) { };\r
+        // must we do anything else?\r
     }\r
 \r
     /**\r
@@ -391,13 +373,12 @@ public class COPSPepOSConnection implements Runnable {
 \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
-        COPSPepOSReqStateMan manager = (COPSPepOSReqStateMan) _managerMap.get(cMsg.getClientHandle().getId().str());\r
+        COPSPepOSReqStateMan manager = _managerMap.get(cMsg.getClientHandle().getId().str());\r
 \r
         if (manager == null)\r
-            COPSDebug.err(getClass().getName(), COPSDebug.ERROR_NOEXPECTEDMSG);\r
+            logger.warn("Unable to find state manager with ID - " + cMsg.getClientHandle().getId().str());\r
         else\r
             manager.processSyncStateRequest(cMsg);\r
     }\r
@@ -434,35 +415,20 @@ public class COPSPepOSConnection implements Runnable {
     }\r
 \r
     private void notifyCloseAllReqStateMan() throws COPSPepException {\r
-        if (_managerMap.size() > 0) {\r
-            for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
-                String handle = (String) e.nextElement();\r
-                COPSPepOSReqStateMan man = (COPSPepOSReqStateMan) _managerMap.get(handle);\r
-\r
+        for (final COPSPepOSReqStateMan man : _managerMap.values()) {\r
                 man.processClosedConnection(_error);\r
-            }\r
         }\r
     }\r
 \r
     private void notifyNoKAAllReqStateMan() throws COPSPepException {\r
-        if (_managerMap.size() > 0) {\r
-            for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
-                String handle = (String) e.nextElement();\r
-                COPSPepOSReqStateMan man = (COPSPepOSReqStateMan) _managerMap.get(handle);\r
-\r
-                man.processNoKAConnection();\r
-            }\r
+        for (final COPSPepOSReqStateMan man : _managerMap.values()) {\r
+            man.processNoKAConnection();\r
         }\r
     }\r
 \r
     private void notifyAcctAllReqStateMan() throws COPSPepException {\r
-        if (_managerMap.size() > 0) {\r
-            for (Enumeration e = _managerMap.keys() ; e.hasMoreElements() ;) {\r
-                String handle = (String) e.nextElement();\r
-                COPSPepOSReqStateMan man = (COPSPepOSReqStateMan) _managerMap.get(handle);\r
-\r
-                man.processAcctReport();\r
-            }\r
+        for (final COPSPepOSReqStateMan man : _managerMap.values()) {\r
+            man.processAcctReport();\r
         }\r
     }\r
 \r