protected boolean unregisterHost(final String hostName, HostConnectionInfo.Event event) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); final List<HostConnectionInfo.Event> events; if (registration == null) { return false; } else { events = registration.events; } events.add(event); registration = new DomainHostConnection(hostName, events); registrations.put(hostName, registration); } return true; }
@Override boolean evictEntry(DomainHostConnection entry) { final long expired = System.currentTimeMillis() - TTL; final List<HostConnectionInfo.Event> events = entry.events; final List<HostConnectionInfo.Event> newEvents = new ArrayList<>(); for (final HostConnectionInfo.Event event : events) { if (event.getTimestamp() >= expired) { newEvents.add(event); } } entry.events = newEvents; if (! newEvents.isEmpty()) { return false; } else { return ! entry.isConnected(); } } };
@Override public void unregisterRemoteHost(String id, Long remoteConnectionId, boolean cleanShutdown) { DomainSlaveHostRegistrations.DomainHostConnection hostRegistration = slaveHostRegistrations.getRegistration(id); if (hostRegistration != null) { if ((remoteConnectionId == null || remoteConnectionId.equals(hostRegistration.getRemoteConnectionId()))) { final SlaveHostPinger pinger = hostRegistration.getPinger(); if (pinger != null) { pinger.cancel(); } boolean registered = hostProxies.remove(id) != null; modelNodeRegistration.unregisterProxyController(PathElement.pathElement(HOST, id)); if (registered) { final String address = hostRegistration.getAddress(); final Event event = cleanShutdown ? create(HostConnectionInfo.EventType.UNREGISTERED, address) : create(HostConnectionInfo.EventType.UNCLEAN_UNREGISTRATION, address); slaveHostRegistrations.unregisterHost(id, event); if (!cleanShutdown) { DOMAIN_LOGGER.lostConnectionToRemoteHost(id); } else { DOMAIN_LOGGER.unregisteredRemoteSlaveHost(id); } } } } }
@Override public void unregisterRemoteHost(String id, Long remoteConnectionId, boolean cleanShutdown) { DomainSlaveHostRegistrations.DomainHostConnection hostRegistration = slaveHostRegistrations.getRegistration(id); if (hostRegistration != null) { if ((remoteConnectionId == null || remoteConnectionId.equals(hostRegistration.getRemoteConnectionId()))) { final SlaveHostPinger pinger = hostRegistration.getPinger(); if (pinger != null) { pinger.cancel(); } boolean registered = hostProxies.remove(id) != null; modelNodeRegistration.unregisterProxyController(PathElement.pathElement(HOST, id)); if (registered) { final String address = hostRegistration.getAddress(); final Event event = cleanShutdown ? create(HostConnectionInfo.EventType.UNREGISTERED, address) : create(HostConnectionInfo.EventType.UNCLEAN_UNREGISTRATION, address); slaveHostRegistrations.unregisterHost(id, event); if (!cleanShutdown) { DOMAIN_LOGGER.lostConnectionToRemoteHost(id); } else { DOMAIN_LOGGER.unregisteredRemoteSlaveHost(id); } } } } }
@Override boolean evictEntry(DomainHostConnection entry) { final long expired = System.currentTimeMillis() - TTL; final List<HostConnectionInfo.Event> events = entry.events; final List<HostConnectionInfo.Event> newEvents = new ArrayList<>(); for (final HostConnectionInfo.Event event : events) { if (event.getTimestamp() >= expired) { newEvents.add(event); } } entry.events = newEvents; if (! newEvents.isEmpty()) { return false; } else { return ! entry.isConnected(); } } };
protected boolean unregisterHost(final String hostName, HostConnectionInfo.Event event) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); final List<HostConnectionInfo.Event> events; if (registration == null) { return false; } else { events = registration.events; } events.add(event); registration = new DomainHostConnection(hostName, events); registrations.put(hostName, registration); } return true; }
protected void registerHost(final String hostName, SlaveHostPinger pinger, String address) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); final List<HostConnectionInfo.Event> events; if (registration == null) { events = new ArrayList<>(); } else { events = registration.events; } events.add(HostConnectionInfo.Events.create(HostConnectionInfo.EventType.REGISTERED, address)); registration = new DomainHostConnection(hostName, pinger, address, events); registrations.put(hostName, registration); } }
protected void registerHost(final String hostName, SlaveHostPinger pinger, String address) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); final List<HostConnectionInfo.Event> events; if (registration == null) { events = new ArrayList<>(); } else { events = registration.events; } events.add(HostConnectionInfo.Events.create(HostConnectionInfo.EventType.REGISTERED, address)); registration = new DomainHostConnection(hostName, pinger, address, events); registrations.put(hostName, registration); } }
@Override public boolean isHostRegistered(String id) { final DomainSlaveHostRegistrations.DomainHostConnection registration = slaveHostRegistrations.getRegistration(id); return registration != null && registration.isConnected(); }
protected void addEvent(String hostName, HostConnectionInfo.Event event) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); if (registration == null) { registration = new DomainHostConnection(hostName); registrations.put(hostName, registration); } final List<HostConnectionInfo.Event> events = new ArrayList<>(registration.events); events.add(event); registration.events = events; } }
@Override boolean evictEntry(DomainHostConnection entry) { return ! entry.isConnected(); } };
protected void addEvent(String hostName, HostConnectionInfo.Event event) { synchronized (this) { DomainHostConnection registration = registrations.get(hostName); if (registration == null) { registration = new DomainHostConnection(hostName); registrations.put(hostName, registration); } final List<HostConnectionInfo.Event> events = new ArrayList<>(registration.events); events.add(event); registration.events = events; } }
@Override boolean evictEntry(DomainHostConnection entry) { return ! entry.isConnected(); } };
@Override public boolean isHostRegistered(String id) { final DomainSlaveHostRegistrations.DomainHostConnection registration = slaveHostRegistrations.getRegistration(id); return registration != null && registration.isConnected(); }