io.grapebaba.vineyard.grape.heartbeat.HeartbeatClientHandler.java Source code

Java tutorial

Introduction

Here is the source code for io.grapebaba.vineyard.grape.heartbeat.HeartbeatClientHandler.java

Source

/*
 * Copyright 2015 281165273grape@gmail.com
 *
 * 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 io.grapebaba.vineyard.grape.heartbeat;

import io.grapebaba.vineyard.grape.protocol.grape.HeartbeatRequestMessage;
import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.timeout.IdleStateEvent;

/**
 * Client side heartbeat handler.
 */
public class HeartbeatClientHandler extends ChannelDuplexHandler {
    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent) {
            IdleStateEvent event = (IdleStateEvent) evt;
            if (event == IdleStateEvent.WRITER_IDLE_STATE_EVENT) {
                ctx.writeAndFlush(new HeartbeatRequestMessage());
            }
        } else {
            ctx.fireUserEventTriggered(evt);
        }
    }
}