You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by mj...@apache.org on 2017/06/07 00:32:31 UTC

[11/28] incubator-guacamole-client git commit: GUACAMOLE-102: Deal with weights of 0, and properly dispose of connections with negative weights.

GUACAMOLE-102: Deal with weights of 0, and properly dispose of connections with negative weights.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/075e880a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/075e880a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/075e880a

Branch: refs/heads/master
Commit: 075e880acc7aa115f0a4b27fed3f182f8108affa
Parents: 2363c63
Author: Nick Couchman <vn...@apache.org>
Authored: Wed May 31 15:22:31 2017 -0400
Committer: Nick Couchman <ni...@yahoo.com>
Committed: Mon Jun 5 15:34:21 2017 -0400

----------------------------------------------------------------------
 .../auth/jdbc/connection/ModeledConnection.java |  3 +-
 .../RestrictedGuacamoleTunnelService.java       | 45 +++++++++++---------
 2 files changed, 26 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/075e880a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
index 1044a62..414a8a4 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
@@ -409,6 +409,7 @@ public class ModeledConnection extends ModeledChildDirectoryObject<ConnectionMod
             port             != null ? port             : defaultConfig.getPort(),
             encryptionMethod != null ? encryptionMethod : defaultConfig.getEncryptionMethod()
         );
+    }
 
     /** 
      * Returns the weight of the connection, or the default.
@@ -417,7 +418,7 @@ public class ModeledConnection extends ModeledChildDirectoryObject<ConnectionMod
      *     The weight of the connection.
      *  
      */
-    public int getConnectionWeight() {
+    public Integer getConnectionWeight() {
 
         // Return the connection weight
         return getModel().getConnectionWeight();

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/075e880a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java
index b41ec91..49af081 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/RestrictedGuacamoleTunnelService.java
@@ -23,6 +23,7 @@ import com.google.common.collect.ConcurrentHashMultiset;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import java.util.Arrays;
+import java.util.Iterator;
 import java.util.Comparator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -47,11 +48,6 @@ public class RestrictedGuacamoleTunnelService
     extends AbstractGuacamoleTunnelService {
 
     /**
-     * Logger for this class.
-     */
-    private static final Logger logger = LoggerFactory.getLogger(RestrictedGuacamoleTunnelService.class);
-
-    /**
      * The environment of the Guacamole server.
      */
     @Inject
@@ -180,6 +176,14 @@ public class RestrictedGuacamoleTunnelService
         // Get username
         String username = user.getIdentifier();
 
+        // Remove connections where weight < 0
+        Iterator<ModeledConnection> i = connections.iterator();
+        while(i.hasNext()) {
+            Integer weight = i.next().getConnectionWeight();
+            if (weight != null && weight.intValue() < 0)
+                i.remove();
+        }
+
         // Sort connections in ascending order of usage
         ModeledConnection[] sortedConnections = connections.toArray(new ModeledConnection[connections.size()]);
         Arrays.sort(sortedConnections, new Comparator<ModeledConnection>() {
@@ -187,22 +191,21 @@ public class RestrictedGuacamoleTunnelService
             @Override
             public int compare(ModeledConnection a, ModeledConnection b) {
                 
-                logger.debug("Calculating weights for connections {} and {}.", a.getName(), b.getName());
-                int cw = 0;
-                int weightA = a.getConnectionWeight();
-                // If the weight is null, we go ahead and sort, anyway
-                if (weightA == null)
-                    weightA = 0;
-
-                // If the weight is null, we go ahead and sort, anyway
-                int weightB = b.getConnectionWeight();
-                if (weightB == null)
-                    weightB = 0;
-
-                int connsA = getActiveConnections(a).size();
-                int connsB = getActiveConnections(b).size();
-                logger.debug("Connection {} has computed weight of {}.", a.getName(), connsA * 10000 / weightA);
-                logger.debug("Connection {} has computed weight of {}.", b.getName(), connsB * 10000 / weightB);
+                int weightA, weightB;
+                // Check if weight of a is null, assign 1 if it is.
+                if (a.getConnectionWeight() == null)
+                    weightA = 1;
+                else
+                    weightA = a.getConnectionWeight().intValue() + 1;
+
+                // Check if weight of b is null, assign 1 if it is.
+                if (b.getConnectionWeight() == null)
+                    weightB = 1;
+                else
+                    weightB = b.getConnectionWeight().intValue() + 1;
+
+                int connsA = getActiveConnections(a).size() + 1;
+                int connsB = getActiveConnections(b).size() + 1;
 
                 return (connsA * 10000 / weightA) - (connsB * 10000 / weightB);