org.aotorrent.client.InboundChannelInitializer.java Source code

Java tutorial

Introduction

Here is the source code for org.aotorrent.client.InboundChannelInitializer.java

Source

/*
 * Copyright 2014 Napolov Dmitry
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.aotorrent.client;

import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
import io.netty.handler.codec.bytes.ByteArrayEncoder;
import io.netty.handler.timeout.ReadTimeoutHandler;

import java.util.concurrent.TimeUnit;

/**
 * @author dmitry 16.07.14 1:06
 */
class InboundChannelInitializer extends ChannelInitializer<SocketChannel> {

    private final TorrentClient client;

    public InboundChannelInitializer(TorrentClient client) {
        this.client = client;
    }

    @Override
    public void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline p = ch.pipeline();
        //p.addLast(new LoggingHandler(LogLevel.INFO));
        p.addLast("timeoutHandler", new ReadTimeoutHandler(60, TimeUnit.SECONDS));
        p.addLast("bytesEncoder", new ByteArrayEncoder());
        p.addLast("handshakeHandler", new InboundHandshakeHandler(client));
        p.addLast("lengthFrameDecoder", new LengthFieldBasedFrameDecoder(65535, 0, 4));
        p.addLast("peerRequestDecoder", new PeerRequestDecoder());
    }
}