1 package org.opendaylight.protocol.framework;
3 import io.netty.channel.socket.SocketChannel;
4 import io.netty.util.concurrent.Promise;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
9 import com.google.common.base.Preconditions;
11 public class SimpleDispatcher<M extends ProtocolMessage, S extends ProtocolSession<M>, L extends SessionListener<M, ?, ?>> extends
12 AbstractDispatcher<S, L> {
14 private static final Logger logger = LoggerFactory.getLogger(SimpleDispatcher.class);
16 private final SessionNegotiatorFactory<M, S, L> negotiatorFactory;
17 private final ProtocolHandlerFactory<?> factory;
19 public SimpleDispatcher(final SessionNegotiatorFactory<M, S, L> negotiatorFactory, final ProtocolHandlerFactory<?> factory,
20 final Promise<S> promise) {
21 this.negotiatorFactory = Preconditions.checkNotNull(negotiatorFactory);
22 this.factory = Preconditions.checkNotNull(factory);
26 public void initializeChannel(final SocketChannel ch, final Promise<S> promise, final SessionListenerFactory<L> lfactory) {
27 ch.pipeline().addLast(this.factory.getDecoders());
28 ch.pipeline().addLast("negotiator", this.negotiatorFactory.getSessionNegotiator(lfactory, ch, promise));
29 ch.pipeline().addLast(this.factory.getEncoders());
30 logger.debug("initialization completed for channel {}", ch);