From c650902fef0ac1c117037f05b44f76db8c8d11fe Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 2 Sep 2019 11:30:26 +0800 Subject: [PATCH] =?UTF-8?q?bug=E5=92=8C=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/core/HandlerLogicThread.java | 54 ++++++++++++++-- .../ljsd/jieling/core/SimpleTransaction.java | 64 +++++++++++++++++++ .../java/com/ljsd/jieling/core/TransTask.java | 16 +++++ .../jieling/exception/LogicException.java | 17 +++++ .../com/ljsd/jieling/handler/BaseHandler.java | 21 +++--- .../mapHandler/StartFightRequestHandler.java | 42 ++++++++++-- .../mission/TakeMissionRewardHandler.java | 13 ++-- .../GetMonsterAttackRankHandler.java | 3 +- .../ljsd/jieling/logic/item/ItemLogic.java | 19 ++++-- .../jieling/network/session/ISession.java | 9 +++ .../com/ljsd/jieling/util/MessageUtil.java | 11 ++-- 11 files changed, 233 insertions(+), 36 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/core/SimpleTransaction.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/core/TransTask.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/exception/LogicException.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index b828c05e8..88699a2f3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -2,7 +2,7 @@ package com.ljsd.jieling.core; import com.ljsd.GameApplication; import com.ljsd.jieling.config.SChallengeConfig; -import com.ljsd.jieling.config.SChallengeMapConfig; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.config.SGlobalSystemConfig; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.Global; @@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; public class HandlerLogicThread extends Thread{ private static final Logger LOGGER = LoggerFactory.getLogger(HandlerLogicThread.class); private static Set whiteMsg = new HashSet<>(); + private static ThreadLocal threadlocal = new ThreadLocal(); static { whiteMsg.add(MessageTypeProto.MessageType.MAP_ENTER_REQUEST_VALUE); whiteMsg.add(MessageTypeProto.MessageType.MAP_START_EXPLORE_REQUEST_VALUE); @@ -109,11 +110,14 @@ public class HandlerLogicThread extends Thread{ } int userId = packetNetData.getUserId(); int msgId = packetNetData.getMsgId(); + ISession session = OnlineUserManager.getSessionByUid(userId); if(session == null){ LOGGER.info("request uid=>{} , msgId=>{}, session is null",userId,msgId); return; } + session.setLastMsgId(msgId); + setTransaction(session); BaseHandler baseHandler = ProtocolsManager.getInstance().getHandler(msgId); if(baseHandler == null){ LOGGER.info("request uid=>{} , msgId=>{}, not find the baseHandler",userId,msgId); @@ -136,10 +140,11 @@ public class HandlerLogicThread extends Thread{ LOGGER.info("doWork->uid={},mType={};start", userId, MessageTypeProto.MessageType.valueOf(msgId)); } +// throw new NullPointerException(); MissionEventDistributor.requestStart(); baseHandler.execute(session, packetNetData); MissionEventDistributor.requestEnd(session,true); - + current().commit(); MongoUtil.getInstence().lastUpdate(); if(msgId != MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE){ long useTime = System.currentTimeMillis() - curTimeMillis; @@ -147,13 +152,35 @@ public class HandlerLogicThread extends Thread{ } }catch (Exception e){ - LOGGER.error("",e); + SimpleTransaction transaction = current(); + if(null!=transaction){ + ISession session = transaction.getSession(); + try { + current().callback(); + LOGGER.error("\nuser:"+ session.getUid(),e); + User user = UserManager.getUser(session.getUid()); + if (null != user) { + UserManager.removeUser(session.getUid()); + } + user = MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), session.getUid(), User.class); + if (user == null) { + return; + } + UserManager.addUser(user); + MessageUtil.sendErrorCode(session,session.getLastMsgId()+1, SErrorCodeEerverConfig.getI18NMessage("bug_unify_txt")); + }catch (Exception e1){} + + }else { + LOGGER.error("",e); + } + }finally { + destroyISession(); } } - private boolean checkIsPermit(int msgId,ISession session) throws Exception { + private boolean checkIsPermit(int msgId, ISession session) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); int curMapId = user.getMapManager().getCurMapId(); @@ -171,7 +198,7 @@ public class HandlerLogicThread extends Thread{ } - private boolean checkFunctionIsOpen(int msgId,ISession session ) { + private boolean checkFunctionIsOpen(int msgId, ISession session ) { int uid = session.getUid(); try { User user = UserManager.getUser(uid); @@ -280,4 +307,21 @@ public class HandlerLogicThread extends Thread{ public void addAyyncWorker(AyyncWorker ayyncWorker){ ayyncWorkerConcurrentLinkedQueue.offer(ayyncWorker); } + + public static SimpleTransaction current() { + return threadlocal.get(); + } + private static void destroyISession() { + threadlocal.set(null); + } + + private static SimpleTransaction setTransaction(ISession session) { + SimpleTransaction var0 = threadlocal.get(); + if (var0 != null && var0.getSession() != null && var0.getSession().getId() == session.getId()) { + return var0; + } else { + threadlocal.set(new SimpleTransaction(session)); + } + return threadlocal.get(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/SimpleTransaction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/SimpleTransaction.java new file mode 100644 index 000000000..1059d73d2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/SimpleTransaction.java @@ -0,0 +1,64 @@ +package com.ljsd.jieling.core; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; + +import java.util.ArrayList; + +/** + * 伪事务 + */ +public class SimpleTransaction { + //当前过程的session + private ISession session; + private ArrayList tasks = new ArrayList(); + + public SimpleTransaction(ISession session) { + this.session = session; + } + + public ISession getSession() { + return session; + } + + public void dealWhileCommit(TransTask transTask) { + tasks.add(transTask); + } + + public void dealWhileCallback(TransTask transTask) { + transTask.setCallback(true); + tasks.add(transTask); + } + + public void commit() { + for (TransTask transTask : tasks) { + if (!transTask.isCallback()) + transTask.run(); + } + } + + public void callback() { + for (TransTask transTask : tasks) { + if (transTask.isCallback()) + transTask.run(); + } + } + + public static class SendTask extends TransTask { + private GeneratedMessage proto; + private int msgId; + + public SendTask(GeneratedMessage proto, int msgId) { + this.proto = proto; + this.msgId = msgId; + } + + @Override + public void run() { + if (null != HandlerLogicThread.current() && null != HandlerLogicThread.current().getSession()) + MessageUtil.sendIndicationMessage(HandlerLogicThread.current().getSession(), 1, msgId, proto, true); + } + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/TransTask.java b/serverlogic/src/main/java/com/ljsd/jieling/core/TransTask.java new file mode 100644 index 000000000..7882b8114 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/TransTask.java @@ -0,0 +1,16 @@ +package com.ljsd.jieling.core; + +/** + * 过程结束发协议等任务 + */ +public abstract class TransTask implements Runnable{ + boolean callback = false; //是否失败处理 + + public boolean isCallback() { + return callback; + } + + public void setCallback(boolean callback) { + this.callback = callback; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/exception/LogicException.java b/serverlogic/src/main/java/com/ljsd/jieling/exception/LogicException.java new file mode 100644 index 000000000..145ff0ab7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/exception/LogicException.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.exception; + +public class LogicException extends Exception { + + public LogicException(String s) { + super(s); + } + + public LogicException(String s, Throwable throwable) { + super(s, throwable); + } + + public String getMessage() { + return "" + super.getMessage(); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/BaseHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/BaseHandler.java index ea626b9e9..4ea1ab5ff 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/BaseHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/BaseHandler.java @@ -1,12 +1,13 @@ package com.ljsd.jieling.handler; -import com.google.protobuf.*; +import com.google.protobuf.GeneratedMessage; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.Parser; +import com.ljsd.jieling.exception.LogicException; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.MessageTypeProto; -import com.ljsd.jieling.protocols.PlayerInfoProto; -import javax.swing.plaf.basic.BasicEditorPaneUI; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -31,14 +32,18 @@ public abstract class BaseHandler { } @SuppressWarnings("unchecked") - private void processWithProto(ISession iSession, PacketNetData netData) { + private void processWithProto(ISession iSession, PacketNetData netData)throws Exception { + T proto = null; try { Field field = protoClazz.getField("PARSER"); Parser parser = (Parser) field.get(protoClazz); - processWithProto(iSession, parser.parseFrom(netData.parseClientProtoNetData())); - } catch (Exception var4) { - System.out.print("解析协议失败" + var4); - var4.printStackTrace(); + proto=parser.parseFrom(netData.parseClientProtoNetData()); + processWithProto(iSession,proto); + } catch(NoSuchFieldException|SecurityException|IllegalAccessException|IllegalArgumentException|ExceptionInInitializerError|InvalidProtocolBufferException var5){ + throw new LogicException("解析协议失败",var5); + }catch (Exception var4) { + if(null !=proto) + throw new LogicException("processWithProtoException\r\nprotoID:"+netData.getMsgId()+"\r\n"+proto.toString(),var4); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/StartFightRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/StartFightRequestHandler.java index b6c369ae0..b2e54b596 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/StartFightRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/StartFightRequestHandler.java @@ -7,23 +7,53 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.FightInfoProto; -import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.MessageUtil; import org.springframework.stereotype.Component; @Component -public class StartFightRequestHandler extends BaseHandler{ +public class StartFightRequestHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.FIGHT_START_REQUEST; } + + @Override public void process(ISession iSession, PacketNetData netData) throws Exception { - byte[] message = netData.parseClientProtoNetData(); -// FightInfoProto.FightStartRequest fightEndRequest = FightInfoProto.FightStartRequest.parseFrom(message); - FightInfoProto.FightStartRequest fightStartRequest = FightInfoProto.FightStartRequest.parseFrom(message); +// byte[] message = netData.parseClientProtoNetData(); +//// FightInfoProto.FightStartRequest fightEndRequest = FightInfoProto.FightStartRequest.parseFrom(message); +// FightInfoProto.FightStartRequest fightStartRequest = FightInfoProto.FightStartRequest.parseFrom(message); +// int type = fightStartRequest.getType(); +// int fightId = fightStartRequest.getFightId(); +// int teamId = fightStartRequest.getTeamId(); +// +// +// if (type ==1){ +// User user = UserManager.getUser(iSession.getUid()); +// int curMapId = user.getMapManager().getCurMapId(); +// if(curMapId>0){ +// MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.FIGHT_START_RESPONSE.getNumber(),"在地图探索中,不可以操作"); +// return; +// } +// MapLogic.getInstance().startLevelDifficultyFight(iSession,fightId,teamId,type,MessageTypeProto.MessageType.FIGHT_START_RESPONSE); +// }else if(type == 2){ +// MapLogic.getInstance().startFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE); +// +// }else if(type == 3){ +// MapLogic.getInstance().startSuddlenlyFight(iSession,teamId, MessageTypeProto.MessageType.FIGHT_START_RESPONSE); +// }else if(type == 5){ +// MapLogic.getInstance().startMonsterAttackFight(iSession,fightId,teamId, MessageTypeProto.MessageType.FIGHT_START_RESPONSE); +// } else { +//// MapLogic.getInstance().startLevelDifficultyFight(iSession,fightId,teamId,type,MessageTypeProto.MessageType.FIGHT_START_RESPONSE); +// +// MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.FIGHT_START_RESPONSE.getNumber(),"type is wrong:" + type); +// } + } + + @Override + public void processWithProto(ISession iSession, FightInfoProto.FightStartRequest fightStartRequest) throws Exception { int type = fightStartRequest.getType(); int fightId = fightStartRequest.getFightId(); int teamId = fightStartRequest.getTeamId(); @@ -36,7 +66,7 @@ public class StartFightRequestHandler extends BaseHandler{ MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.FIGHT_START_RESPONSE.getNumber(),"在地图探索中,不可以操作"); return; } - MapLogic.getInstance().startLevelDifficultyFight(iSession,fightId,teamId,type,MessageTypeProto.MessageType.FIGHT_START_RESPONSE); + MapLogic.getInstance().startLevelDifficultyFight(iSession,fightId,teamId,type, MessageTypeProto.MessageType.FIGHT_START_RESPONSE); }else if(type == 2){ MapLogic.getInstance().startFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java index e2044ead3..0a3024d1b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/mission/TakeMissionRewardHandler.java @@ -9,7 +9,7 @@ import com.ljsd.jieling.protocols.PlayerInfoProto; import org.springframework.stereotype.Component; @Component -public class TakeMissionRewardHandler extends BaseHandler { +public class TakeMissionRewardHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.TAKE_MISSION_REWARD_REQUEST; @@ -17,8 +17,13 @@ public class TakeMissionRewardHandler extends BaseHandler { @Override public void process(ISession iSession, PacketNetData netData) throws Exception { - byte[] bytes = netData.parseClientProtoNetData(); - PlayerInfoProto.TakeMissionRewardRequest takeMissionRewardRequest = PlayerInfoProto.TakeMissionRewardRequest.parseFrom(bytes); - MissionLoigc.takeMissionReward(iSession,takeMissionRewardRequest.getType(),takeMissionRewardRequest.getMissionId()); +// byte[] bytes = netData.parseClientProtoNetData(); +// PlayerInfoProto.TakeMissionRewardRequest takeMissionRewardRequest = PlayerInfoProto.TakeMissionRewardRequest.parseFrom(bytes); +// MissionLoigc.takeMissionReward(iSession,takeMissionRewardRequest.getType(),takeMissionRewardRequest.getMissionId()); + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.TakeMissionRewardRequest proto) throws Exception { + MissionLoigc.takeMissionReward(iSession,proto.getType(),proto.getMissionId()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java index a85301aad..cf0a6b734 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java @@ -53,8 +53,7 @@ public class GetMonsterAttackRankHandler extends BaseHandler 800) { //删除多余数据 预留一些 长度maxSize String key = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK, "", false); - int size = RedisUtil.getInstence().getZsetSize(key); - RedisUtil.getInstence().removeZSetRangeByRank(key, 300, size); + RedisUtil.getInstence().removeZSetRangeByRank(key, 0, 500); } int uid = iSession.getUid(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index d18a0c902..c5aa717df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -1,6 +1,9 @@ package com.ljsd.jieling.logic.item; -import com.ljsd.jieling.config.*; +import com.ljsd.jieling.config.SCHeroRankUpConfig; +import com.ljsd.jieling.config.SGameSetting; +import com.ljsd.jieling.config.SHeroLevlConfig; +import com.ljsd.jieling.config.SItem; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.MapManager; @@ -11,7 +14,10 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; -import com.ljsd.jieling.util.*; +import com.ljsd.jieling.util.CBean2Proto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -245,19 +251,18 @@ public class ItemLogic { reward.append("#").append(sItem.getResolveReward()); } } - int reson =BIReason.DECOMPOS_HERO_REWARD; + + ItemUtil.combineReward(user, StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap); + + int reson = BIReason.DECOMPOS_HERO_REWARD; if(null!=filterItem){ reson= BIReason.UPHERO_DECOMPOS_HERO_REWARD; - for (Integer id:filterItem){ if(baseItemMap.containsKey(id)){ baseItemMap.remove(id); } } -// filterItem.retainAll(baseItemMap.keySet()); -// filterItem.forEach(baseItemMap::remove); } - ItemUtil.combineReward(user,StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap); ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, reson); return baseBuilder; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/session/ISession.java b/serverlogic/src/main/java/com/ljsd/jieling/network/session/ISession.java index a79b8f3ff..e917388f6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/session/ISession.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/session/ISession.java @@ -17,6 +17,7 @@ public class ISession extends NettyGameSession { private int fiveReady; //客户端可以接受服务器5点刷新 private byte[] fiveByteBuf; //五点推送数据缓存 private long loginTime;//BI用 + private int lastMsgId;//最后客户端请求协议 private ConcurrentHashMap indexToMessage = new ConcurrentHashMap(); @@ -154,6 +155,14 @@ public class ISession extends NettyGameSession { this.fiveByteBuf = fiveByteBuf; } + public int getLastMsgId() { + return lastMsgId; + } + + public void setLastMsgId(int lastMsgId) { + this.lastMsgId = lastMsgId; + } + public static void main(String[] args) { AtomicInteger a= new AtomicInteger(1); System.out.println(a.incrementAndGet()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index 995413708..27113ddda 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -1,17 +1,16 @@ package com.ljsd.jieling.util; import com.google.protobuf.GeneratedMessage; -import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.jieling.battle.actor.ActorType; import com.ljsd.jieling.battle.actor.Scene; import com.ljsd.jieling.battle.actor.SceneActor; import com.ljsd.jieling.battle.room.BeanToProto; import com.ljsd.jieling.core.GlobalsDef; -import com.ljsd.jieling.db.mongo.MongoUtil; +import com.ljsd.jieling.core.HandlerLogicThread; +import com.ljsd.jieling.core.SimpleTransaction; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.room.Room; import com.ljsd.jieling.netty.PackageConstant; import com.ljsd.jieling.netty.cocdex.Tea; import com.ljsd.jieling.network.session.ISession; @@ -19,7 +18,6 @@ import com.ljsd.jieling.protocols.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.nio.ByteBuffer; import java.util.List; import java.util.Set; @@ -86,6 +84,11 @@ public class MessageUtil { } public static void sendBagIndication(int sendUid,int type, List sendToFront) { + if(null!= HandlerLogicThread.current()){ + PlayerInfoProto.UpdateBagIndication build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type).build(); + HandlerLogicThread.current().dealWhileCommit(new SimpleTransaction.SendTask(build, MessageTypeProto.MessageType.UPDATE_BAG_INDICATION_VALUE)); + return; + } ISession session = OnlineUserManager.sessionMap.get(sendUid); if(session!=null){ PlayerInfoProto.UpdateBagIndication build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type).build();