package org.opennaas.core.protocols.sessionmanager.shell; import org.apache.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; import org.opennaas.core.protocols.sessionmanager.ProtocolSessionManager; import org.opennaas.core.resources.IResourceIdentifier; import org.opennaas.core.resources.IResourceManager; import org.opennaas.core.resources.protocol.IProtocolManager; import org.opennaas.core.resources.shell.GenericKarafCommand; /** * List the device ids registered to the protocol manager * * @author Pau Minoves * */ @Command(scope = "protocols", name = "purge", description = "Destroys unused sessions from the pool") public class PurgeCommand extends GenericKarafCommand { @Argument(name = "resourceType:resourceName", index = 0, required = true, description = "The resource owning sessions to destroy.") String resourceId; @Argument(name = "seconds", index = 1, required = false, description = "Seconds of inactivity required for a session to be destroyed.") int seconds = 0; @Override protected Object doExecute() throws Exception { IResourceManager manager = getResourceManager(); printInitCommand("purge protocol"); String[] argsRouterName = new String[2]; try { argsRouterName = splitResourceName(resourceId); } catch (Exception e) { printError(e.getMessage()); printEndCommand(); return -1; } IResourceIdentifier resourceIdentifier = manager.getIdentifierFromResourceName(argsRouterName[0], argsRouterName[1]); IProtocolManager protocolManager = getProtocolManager(); ProtocolSessionManager sessionManager = (ProtocolSessionManager) protocolManager.getProtocolSessionManager(resourceIdentifier.getId()); if (seconds > 0) sessionManager.purgeOldSessions(seconds * 1000); else sessionManager.purgeOldSessions(); printEndCommand(); return null; } }