66378e75d6e2937bc447e8dabe32bd643f757584
[controller.git] / opendaylight / commons / protocol-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 /**
19  * @deprecated This is an adaptor class for turning ProtocolMessageFactory into Netty encoder. Use Netty-provided
20  *             classes directly, by subclassing {@link io.netty.handler.codec.MessageToByteDecoder} or similar instead.
21  */
22 @Deprecated
23 @Sharable
24 public final class ProtocolMessageEncoder<T> extends MessageToByteEncoder<Object> {
25
26     private static final Logger LOG = LoggerFactory.getLogger(ProtocolMessageEncoder.class);
27
28     private final ProtocolMessageFactory<T> factory;
29
30     public ProtocolMessageEncoder(final ProtocolMessageFactory<T> factory) {
31         this.factory = factory;
32     }
33
34     @Override
35     protected void encode(final ChannelHandlerContext ctx, final Object msg, final ByteBuf out) throws Exception {
36         LOG.debug("Sent to encode : {}", msg);
37         final byte[] bytes = this.factory.put((T) msg);
38         out.writeBytes(bytes);
39     }
40 }