com.netflix.eureka2.server.service.ChannelFactoryImpl Maven / Gradle / Ivy
package com.netflix.eureka2.server.service;
import com.netflix.eureka2.registry.InstanceInfo;
import com.netflix.eureka2.server.metric.EurekaServerMetricFactory;
import com.netflix.eureka2.server.registry.EurekaServerRegistry;
import com.netflix.eureka2.server.registry.eviction.EvictionQueue;
import com.netflix.eureka2.service.InterestChannel;
import com.netflix.eureka2.service.RegistrationChannel;
import com.netflix.eureka2.transport.MessageConnection;
/**
* An implementation of {@link ServerChannelFactory} associated with strictly one {@link MessageConnection}
*
* Thread safety
*
* See {@link ServerChannelFactory} for details. This service assumes sequential (single threaded) invocations.
*
* @author Nitesh Kant
*/
public class ChannelFactoryImpl implements ServerChannelFactory {
private final EurekaServerRegistry registry;
private final EvictionQueue evictionQueue;
private final MessageConnection connection;
private final EurekaServerMetricFactory metricFactory;
public ChannelFactoryImpl(EurekaServerRegistry registry,
EvictionQueue evictionQueue,
MessageConnection connection,
EurekaServerMetricFactory metricFactory) {
this.registry = registry;
this.evictionQueue = evictionQueue;
this.connection = connection;
this.metricFactory = metricFactory;
}
@Override
public InterestChannel newInterestChannel() {
return new InterestChannelImpl(registry, connection, metricFactory.getInterestChannelMetrics());
}
@Override
public RegistrationChannel newRegistrationChannel() {
return new RegistrationChannelImpl(registry, evictionQueue, connection, metricFactory.getRegistrationChannelMetrics());
}
@Override
public ReplicationChannel newReplicationChannel() {
return new ReplicationChannelImpl(connection, registry, evictionQueue, metricFactory.getReplicationChannelMetrics());
}
@Override
public void shutdown() {
connection.shutdown();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy