BUG-58: refactor to take advantage of netty
[bgpcep.git] / framework / src / main / java / org / opendaylight / protocol / framework / ProtocolMessageEncoder.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.framework;
9
10 import io.netty.buffer.ByteBuf;
11 import io.netty.channel.ChannelHandler.Sharable;
12 import io.netty.channel.ChannelHandlerContext;
13 import io.netty.handler.codec.MessageToByteEncoder;
14
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17
18 @Sharable
19 final class ProtocolMessageEncoder<T extends ProtocolMessage> extends MessageToByteEncoder<Object> {
20
21         private final static Logger logger = LoggerFactory.getLogger(ProtocolMessageEncoder.class);
22
23         private final ProtocolMessageFactory<T> factory;
24
25         public ProtocolMessageEncoder(final ProtocolMessageFactory<T> factory) {
26                 this.factory = factory;
27         }
28
29         @Override
30         protected void encode(final ChannelHandlerContext ctx, final Object msg, final ByteBuf out) throws Exception {
31                 logger.debug("Sent to encode : {}", msg);
32                 out.writeBytes(this.factory.put((T)msg));
33         }
34 }