com.netflix.eureka2.server.service.ReplicationChannelImpl Maven / Gradle / Ivy
package com.netflix.eureka2.server.service;
import com.netflix.eureka2.protocol.EurekaProtocolError;
import com.netflix.eureka2.protocol.replication.RegisterCopy;
import com.netflix.eureka2.protocol.replication.UnregisterCopy;
import com.netflix.eureka2.protocol.replication.UpdateCopy;
import com.netflix.eureka2.registry.Delta;
import com.netflix.eureka2.registry.InstanceInfo;
import com.netflix.eureka2.server.registry.EurekaServerRegistry;
import com.netflix.eureka2.server.registry.EurekaServerRegistry.Status;
import com.netflix.eureka2.server.registry.EvictionQueue;
import com.netflix.eureka2.server.registry.Source;
import com.netflix.eureka2.transport.MessageConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rx.Observable;
import rx.Subscriber;
import rx.functions.Action1;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
/**
*
* @author Nitesh Kant
*/
public class ReplicationChannelImpl extends AbstractChannel implements ReplicationChannel {
private static final Logger logger = LoggerFactory.getLogger(ReplicationChannelImpl.class);
private final Source replicationSource;
private final ReplicationChannelMetrics metrics;
private long currentVersion;
protected enum STATES {Opened, Closed}
private final Map instanceInfoById = new HashMap<>();
public ReplicationChannelImpl(MessageConnection transport,
EurekaServerRegistry registry,
final EvictionQueue evictionQueue,
ReplicationChannelMetrics metrics) {
super(STATES.Opened, transport, registry);
this.replicationSource = Source.replicationSource(UUID.randomUUID().toString()); // FIXME use the sent over replication source id
this.metrics = metrics;
this.metrics.incrementStateCounter(STATES.Opened);
currentVersion = System.currentTimeMillis();
subscribeToTransportInput(new Action1 © 2015 - 2025 Weber Informatics LLC | Privacy Policy