package de.tudarmstadt.informatik.hostage; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; /** * Saves the amount of active connections and limits them to a specific number. * * @author Wulf Pfeiffer */ public class ConnectionRegister { /** Active connections . **/ private static int openConnections = 0; /** Context in which ConnectionRegister is created. **/ private Context context; /** * Constructor sets context. * * @param context * Context in which ConnectionRegister is created. */ public ConnectionRegister(Context context) { this.context = context; } /** * Deregisters a active connection if at least one active connection is * registered. * * @return true if the connection has been successfully unregistered, else * false. */ public boolean closeConnection() { if (openConnections > 0) { openConnections--; return true; } else { return false; } } /** * Returns the maximum number of active connections. * * @return maximum number of active connections. */ public int getMaxConnections() { SharedPreferences defaultPref = PreferenceManager .getDefaultSharedPreferences(context); return defaultPref.getInt("max_connections", 5); } /** * Returns the number of active connections. * * @return number of active connections. */ public int getOpenConnections() { return openConnections; } /** * Returns if there are new connections allowed or not. * * @return true if a new connection is allowed, else false. */ public boolean isConnectionFree() { return getMaxConnections() == 0 || openConnections < getMaxConnections(); } /** * Registers a new active connection if there are connections allowed. * * @return true if a new connection has been successfully registered, else * false. */ public boolean newOpenConnection() { if (isConnectionFree()) { openConnections++; return true; } else { return false; } } }