public void register(RemoteControlProxy newRemoteControl) { final RemoteControlProvisioner provisioner; synchronized(provisionersByEnvironment) { if (null == getProvisioner(newRemoteControl.environment())) { createNewProvisionerForEnvironment(newRemoteControl.environment()); } provisioner = getProvisioner(newRemoteControl.environment()); provisioner.add(newRemoteControl); } }
protected RemoteControlProxy getRemoteControlForSession(String sessionId) { final RemoteControlSession session; session = getRemoteControlSession(sessionId); return (null == session)? null : session.remoteControl(); }
public void release(RemoteControlProxy remoteControl) { getProvisioner(remoteControl.environment()).release(remoteControl); }
public boolean unregister(RemoteControlProxy remoteControl) { final boolean status; synchronized(provisionersByEnvironment) { synchronized (remoteControlsBySessionIds) { status = getProvisioner(remoteControl.environment()).remove(remoteControl); for (RemoteControlSession session : remoteControlsBySessionIds.values()) { if (session.remoteControl().equals(remoteControl)) { removeFromSessionMap(session); } } } } return status; }
public void releaseForSession(String sessionId) { LOGGER.info("Releasing pool for session id='" + sessionId + "'"); final RemoteControlProxy remoteControl; remoteControl = getRemoteControlForSession(sessionId); synchronized (remoteControlsBySessionIds) { remoteControlsBySessionIds.remove(sessionId); } getProvisioner(remoteControl.environment()).release(remoteControl); }
public void garbageCollectRemoteControls() { sleepForALittleWhile(); LOGGER.info("Garbage collecting unavailable RCs and stale sessions..."); pool.unregisterAllUnresponsiveRemoteControls(); pool.recycleAllSessionsIdleForTooLong(sessionMaxIdleTimeInSeconds); }
public void updateSessionLastActiveAt(String sessionId) { getRemoteControlSession(sessionId).updateLastActiveAt(); }
public void recycleAllSessionsIdleForTooLong(double maxIdleTimeInSeconds) { for (RemoteControlSession session : iteratorSafeRemoteControlSessions()) { recycleSessionIfIdleForTooLong(session, maxIdleTimeInSeconds); } }
public void unregisterAllUnresponsiveRemoteControls() { for (RemoteControlProxy rc : allRegisteredRemoteControls()) { unregisterRemoteControlIfUnreliable(rc); } }
protected void unregisterRemoteControlIfUnreliable(RemoteControlProxy rc) { if (rc.unreliable()) { LOGGER.warn("Unregistering unreliable RC " + rc); unregister(rc); } }
public RemoteControlSession(String sessionId, RemoteControlProxy remoteControl) { this.sessionId = sessionId; this.remoteControl = remoteControl; updateLastActiveAt(); }
public synchronized DynamicRemoteControlPool remoteControlPool() { if (null == pool) { pool = new GlobalRemoteControlPool(); } return pool; }
public void run() { while (active) { garbageCollectRemoteControls(); } }
public void register(RemoteControlProxy newRemoteControl) { final RemoteControlProvisioner provisioner; synchronized(provisionersByEnvironment) { if (null == getProvisioner(newRemoteControl.environment())) { createNewProvisionerForEnvironment(newRemoteControl.environment()); } provisioner = getProvisioner(newRemoteControl.environment()); provisioner.add(newRemoteControl); } }
public void release(RemoteControlProxy remoteControl) { getProvisioner(remoteControl.environment()).release(remoteControl); }
public void updateSessionLastActiveAt(String sessionId) { getRemoteControlSession(sessionId).updateLastActiveAt(); }
public void recycleAllSessionsIdleForTooLong(double maxIdleTimeInSeconds) { for (RemoteControlSession session : iteratorSafeRemoteControlSessions()) { recycleSessionIfIdleForTooLong(session, maxIdleTimeInSeconds); } }
public void unregisterAllUnresponsiveRemoteControls() { for (RemoteControlProxy rc : allRegisteredRemoteControls()) { unregisterRemoteControlIfUnreliable(rc); } }
public RemoteControlSession(String sessionId, RemoteControlProxy remoteControl) { this.sessionId = sessionId; this.remoteControl = remoteControl; updateLastActiveAt(); }
public synchronized DynamicRemoteControlPool remoteControlPool() { if (null == pool) { pool = new GlobalRemoteControlPool(); } return pool; }