Package com.torrent4j.net.peerwire.codec

Source Code of com.torrent4j.net.peerwire.codec.PeerWireMessageEncoder

package com.torrent4j.net.peerwire.codec;

import io.netty.buffer.ChannelBuffer;
import io.netty.buffer.ChannelBuffers;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.oneone.OneToOneEncoder;

import com.torrent4j.net.peerwire.PeerWireMessage;
import com.torrent4j.net.peerwire.messages.KeepAliveMessage;

public class PeerWireMessageEncoder extends OneToOneEncoder {
  private boolean handshaked = false;

  @Override
  protected Object encode(ChannelHandlerContext ctx, Channel channel,
      Object msg) throws Exception {
    if (!(msg instanceof PeerWireMessage))
      return msg;
    final PeerWireMessage message = (PeerWireMessage) msg;
    final ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();

    if (handshaked && !(message instanceof KeepAliveMessage))
      buffer.writeInt(0x00);
    message.write(buffer);

    return buffer;
  }

  public void setHandshaked(boolean handshaked) {
    this.handshaked = handshaked;
  }
}
TOP

Related Classes of com.torrent4j.net.peerwire.codec.PeerWireMessageEncoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.