BUG-54 : switched channel pipeline to be protocol specific.
[bgpcep.git] / framework / src / test / java / org / opendaylight / protocol / framework / SimpleDispatcher.java
1 package org.opendaylight.protocol.framework;
2
3 import io.netty.channel.socket.SocketChannel;
4 import io.netty.util.concurrent.Promise;
5
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8
9 import com.google.common.base.Preconditions;
10
11 public class SimpleDispatcher<M extends ProtocolMessage, S extends ProtocolSession<M>, L extends SessionListener<M, ?, ?>> extends
12                 AbstractDispatcher<S, L> {
13
14         private static final Logger logger = LoggerFactory.getLogger(SimpleDispatcher.class);
15
16         private final SessionNegotiatorFactory<M, S, L> negotiatorFactory;
17         private final ProtocolHandlerFactory<?> factory;
18
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);
23         }
24
25         @Override
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);
31         }
32 }