Java tutorial
/* * Copyright 2014 shevek. * * 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 com.turn.ttorrent.client.io; import com.turn.ttorrent.client.peer.PeerMessageListener; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import javax.annotation.Nonnull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author shevek */ public class PeerMessageHandler extends ChannelInboundHandlerAdapter { private static final Logger LOG = LoggerFactory.getLogger(PeerMessageHandler.class); private final PeerMessageListener listener; public PeerMessageHandler(@Nonnull PeerMessageListener listener) { this.listener = listener; } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // LOG.info("Received " + msg + " for " + listener); PeerMessage message = (PeerMessage) msg; listener.handleMessage(message); } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { if (ctx.channel().isOpen()) listener.handleReadComplete(); } @Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { if (ctx.channel().isWritable()) listener.handleWritable(); } @Override public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { listener.handleDisconnect(); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { // TODO: Pass this to the application: An incoming message threw an exception. listener.handleException(cause); } }