com.lb.mysession.client.SessionClientHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.lb.mysession.client.SessionClientHandler.java

Source

/*
 * Copyright 2012 The Netty Project
 *
 * The Netty Project licenses this file to you 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.lb.mysession.client;

import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Formatter;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;

import com.lb.mysession.handler.Command;
import com.lb.mysession.model.User;
import com.lb.mysession.proto.ResultProto;
import com.lb.mysession.proto.ResultProto.Result;
import com.lb.mysession.util.ObjectUtil;
import com.lb.mysession.util.StringUtil;

/**
 * 
 * @author libin
 * ?
 */

public class SessionClientHandler extends SimpleChannelInboundHandler<Result> {

    private static final Logger logger = Logger.getLogger(SessionClientHandler.class.getName());

    private static final Pattern DELIM = Pattern.compile("/");

    // Stateful properties
    private volatile Channel channel;

    public SessionClientHandler() {
        super(false);
    }

    @Override
    public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
        channel = ctx.channel();
    }

    @Override
    public void channelRead0(ChannelHandlerContext ctx, Result result) throws Exception {

        String key = result.getSessionId() + result.getToken();
        //System.out.println("?result---------------"+result.getKey()+" --- "+result.getStatus());
        Command cmd = ModSessionNodeConnector.commandMap.get(key);
        if (cmd != null) {
            cmd.setStatus(result.getStatus());
            if (result.getValue() == null) {
                System.out.println("result.getValue() == null");
            }
            cmd.setResult(ObjectUtil.ByteStringToObject(result.getValue()));
            cmd.countDown();
            key = null;
        } else {
            System.out.println("jies-- " + key + "  " + result.getToken());

        }

    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        logger.log(Level.WARNING, "Unexpected exception from downstream.", cause);
        ctx.close();
    }

}