org.betawares.jorre.handlers.PingMessageHandler.java Source code

Java tutorial

Introduction

Here is the source code for org.betawares.jorre.handlers.PingMessageHandler.java

Source

/*
 * ISC License
 *
 * Copyright (c) 2016, Betawares
 *
 * Permission to use, copy, modify, and/or distribute this software for any 
 * purpose with or without fee is hereby granted, provided that the above 
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
 * PERFORMANCE OF THIS SOFTWARE.
 */

package org.betawares.jorre.handlers;

import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import org.apache.log4j.Logger;
import org.betawares.jorre.messages.PingMessage;
import org.betawares.jorre.messages.PongMessage;

/**
 * Handle ping requests by responding with a pong.
 */
@Sharable
public class PingMessageHandler extends SimpleChannelInboundHandler<PingMessage> {

    private static final Logger logger = Logger.getLogger(PingMessageHandler.class);
    private static final PongMessage PONG = new PongMessage();

    @Override
    protected void channelRead0(ChannelHandlerContext ctx, PingMessage msg) {
        //always respond to a ping with a pong
        ctx.writeAndFlush(PONG).addListener((ChannelFutureListener) (ChannelFuture future) -> {
            if (!future.isSuccess()) {
                logger.error("Communication error", future.cause());
            }
        });
        logger.debug("Received ping.  Sending pong.");
    }

}