Java tutorial
/** * The MIT License (MIT) * * Copyright (c) 2016 Kyle Fricilone * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package com.friz.owari.network.client; import com.friz.owari.network.SessionContext; import com.friz.owari.network.event.Event; import com.friz.owari.network.event.EventLink; import com.friz.owari.network.event.impl.HandshakeEvent; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; /** * @author Kyle Fricilone * @date Jun 12, 2016 */ public class ClientChannelHandler extends SimpleChannelInboundHandler<Event> { private final Client client; public ClientChannelHandler(Client c) { this.client = c; } /* (non-Javadoc) * @see io.netty.channel.ChannelInboundHandler#channelActive(io.netty.channel.ChannelHandlerContext) */ @Override public void channelActive(ChannelHandlerContext ctx) { System.out.println("[Client] Channel Connected to: " + ctx.channel().remoteAddress().toString()); ctx.channel().attr(client.getAttr()).set(new SessionContext<Client>(ctx.channel(), client)); ctx.channel().writeAndFlush(new HandshakeEvent(72)); ctx.flush(); } /* (non-Javadoc) * @see io.netty.channel.SimpleChannelInboundHandler#channelRead0(io.netty.channel.ChannelHandlerContext, java.lang.Object) */ @Override protected void channelRead0(ChannelHandlerContext ctx, Event msg) throws Exception { client.getHub().onLink(new EventLink(msg, ctx.channel().attr(client.getAttr()).get())); } public void exceptionCaught(ChannelHandlerContext ctx, Throwable tr) { tr.printStackTrace(); System.exit(0); } }