异步线程修改,任务线程新增

lvxinran 2019-11-20 14:26:50 +08:00
parent 516002defb
commit 25a0c84064
8 changed files with 53 additions and 26 deletions

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.arena;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
@ -26,6 +27,7 @@ import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.ArenaInfoProto;
import com.ljsd.jieling.protocols.CommonProto;
@ -220,10 +222,11 @@ public class ArenaLogic {
.setFightResult(fightResult)
.build();
user.getUserMissionManager().onGameEvent(user, GameEvent.ARENA_CHALLENGE,fightResult, myscore + myscoreChange);
if(defUser!=null){
user.getUserMissionManager().onGameEvent(defUser, GameEvent.ARENA_CHALLENGE,fightResult,defScore+defScoreChange);
if(defUser!=null) {
// user.getUserMissionManager().onGameEvent(defUser, GameEvent.ARENA_CHALLENGE,fightResult,defScore + defScoreChange);
AyyncWorker ayyncWorker = new AyyncWorker(defUser, true, new AynMissionWorker(GameEvent.ARENA_CHALLENGE, fightResult, defScore + defScoreChange));
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
Poster.getPoster().dispatchEvent(new ArenaChallengeEvent(user.getId()));
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true);
KtEventUtils.onKtEvent(user, ParamEventBean.UserGameType,KTGameType.ARENA.getIndex(),challengeUid);

View File

@ -369,20 +369,8 @@ public class FriendLogic {
}
private void updateFriendUserInfo(User friendUser){
AyyncWorker ayyncWorker = new AyyncWorker(friendUser, true, (user) ->
{
boolean isOnline = OnlineUserManager.checkUidOnline(user.getId());
MissionEventDistributor.requestStart();
user.getUserMissionManager().onGameEvent(user, GameEvent.FRIEND_NUMS, 1);
if (isOnline) {
ISession session = OnlineUserManager.getSessionByUid(user.getId());
MissionEventDistributor.requestEnd(session, true);
}
MongoUtil.getInstence().lastUpdate();
}) ;
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[friendUser.getId() % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
AyyncWorker ayyncWorker = new AyyncWorker(friendUser, true, new AynMissionWorker(GameEvent.FRIEND_NUMS,1)) ;
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
private int allApplyFriend(int uid, FriendManager friendManager, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {

View File

@ -1128,9 +1128,7 @@ public class HeroLogic {
}
}
});
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
//天赋异妖加成
Map<Integer, Pokemon> ringFireMap = pokemonManager.getRingFireMap();

View File

@ -136,9 +136,7 @@ public class StoreLogic {
private static void updateUsersStoreAyync(User user, AyncWorkerRunnable ayncWorkerRunnable){
AyyncWorker ayyncWorker = new AyyncWorker(user,true,ayncWorkerRunnable);
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
public static void getAllStoreInfo(ISession iSession) throws Exception {

View File

@ -25,6 +25,7 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocol.ProtocolsAbstract;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.session.GameSession;
import com.ljsd.jieling.util.AyyncWorker;
import util.MathUtils;
import com.ljsd.jieling.util.MessageUtil;
import util.StringUtil;
@ -557,5 +558,10 @@ public class ProtocolsManager implements ProtocolsAbstract {
{
}
}
public void updateAyncWorker(AyyncWorker worker){
HandlerLogicThread handlerThread = instance.handlerThreads[worker.getUser().getId() % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(worker);
}
}

View File

@ -36,9 +36,7 @@ public class FetchBloodyEndDataThread extends Thread{
AyyncWorker ayyncWorker = new AyyncWorker(user, true,(user1) ->
BloodLogic.getInstance().calBloodyMissionInfo(user1,sortDataBean)
);
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[uid % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
RedisUtil.getInstence().removeMapEntrys(RedisKey.BLOODY_PERSON_BATTLE_INFO, Integer.toString(GameApplication.serverId),Integer.toString(uid));
}

View File

@ -0,0 +1,32 @@
package com.ljsd.jieling.util;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.network.session.ISession;
/**
* @author lvxinran
* @date 2019/11/20
* @discribe 线
*/
public class AynMissionWorker implements AyncWorkerRunnable {
GameEvent event;
Object[] param;
public void work(User user) throws Exception {
boolean isOnline = OnlineUserManager.checkUidOnline(user.getId());
MissionEventDistributor.requestStart();
user.getUserMissionManager().onGameEvent(user, event, param);
if (isOnline) {
ISession session = OnlineUserManager.getSessionByUid(user.getId());
MissionEventDistributor.requestEnd(session, true);
}
MongoUtil.getInstence().lastUpdate();
}
public AynMissionWorker(GameEvent event,Object... param){
this.event = event;
this.param = param;
}
}

View File

@ -28,4 +28,8 @@ public class AyyncWorker{
public void setTask(boolean task) {
isTask = task;
}
public User getUser() {
return user;
}
}