package auth.handler; import auth.utils.Common; import com.google.protobuf.Message; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import auth.IMHandler; import auth.Worker; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import protobuf.ParseRegistryMap; import protobuf.Utils; import protobuf.generate.cli2srv.chat.Chat; import protobuf.generate.internal.Internal; /** * Created by win7 on 2016/3/5. */ public class CPrivateChatHandler extends IMHandler{ private static final Logger logger = LoggerFactory.getLogger(CPrivateChatHandler.class); public CPrivateChatHandler(String userid, long netid, Message msg, ChannelHandlerContext ctx) { super(userid, netid, msg, ctx); } @Override protected void excute(Worker worker) throws TException { Chat.CPrivateChat msg = (Chat.CPrivateChat) _msg; ByteBuf byteBuf; String dest = msg.getDest(); Long netid = AuthServerHandler.getNetidByUserid(dest); if(netid == null) { logger.error("Dest User not online"); return; } Chat.SPrivateChat.Builder sp = Chat.SPrivateChat.newBuilder(); sp.setContent(msg.getContent()); byteBuf = Utils.pack2Server(sp.build(), ParseRegistryMap.SPRIVATECHAT, netid, Internal.Dest.Gate, dest); _ctx.writeAndFlush(byteBuf); logger.info("message has send from {} to {}", msg.getSelf(), msg.getDest()); } }