package cz.cuni.mff.d3s.been.node;
import java.util.Collection;
import com.hazelcast.core.MembershipEvent;
import com.hazelcast.core.MembershipListener;
import com.hazelcast.query.SqlPredicate;
import cz.cuni.mff.d3s.been.cluster.context.ClusterContext;
import cz.cuni.mff.d3s.been.core.service.ServiceInfo;
/**
* @author donarus
*/
final class ServiceCleaner implements MembershipListener {
private ClusterContext clusterContext;
public ServiceCleaner(ClusterContext clusterContext) {
this.clusterContext = clusterContext;
}
@Override
public void memberAdded(MembershipEvent membershipEvent) {
// IGNORE
}
@Override
public void memberRemoved(MembershipEvent membershipEvent) {
String memberUuid = membershipEvent.getMember().getUuid();
final SqlPredicate predicate = new SqlPredicate(String.format("hazelcastUuid = '%s'", memberUuid));
Collection<ServiceInfo> infos = clusterContext.getServices().getServicesMap().values(predicate);
for (ServiceInfo info : infos) {
clusterContext.removeServiceInfo(info);
}
}
}