协议推送

back_recharge
zhangshanxue 2019-08-27 16:07:10 +08:00
parent 3bb041a711
commit 6f1b0dcbf9
3 changed files with 33 additions and 8 deletions

View File

@ -149,6 +149,7 @@ public class HandlerLogicThread extends Thread{
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;

View File

@ -68,7 +68,7 @@ public class SimpleTransaction {
}
void commit() {
public void commit() {
doAddSendCache();
for (TransTask transTask : tasks) {
if (!transTask.isCallback())
@ -84,11 +84,27 @@ public class SimpleTransaction {
}
}
public static class SendTask extends TransTask {
public static class SendTask extends SendResponseTask {
public SendTask(GeneratedMessage proto, int msgId) {
super(proto, msgId);
}
@Override
public void run() {
if (null != HandlerLogicThread.current() && null != HandlerLogicThread.current().getSession())
MessageUtil.sendIndicationMessage(HandlerLogicThread.current().getSession(), 1, getMsgId(), getProto(), true);
}
}
public static class SendResponseTask extends TransTask{
private GeneratedMessage proto;
private int msgId;
public SendTask(GeneratedMessage proto, int msgId) {
public SendResponseTask(GeneratedMessage proto, int msgId) {
this.proto = proto;
this.msgId = msgId;
}
@ -96,9 +112,8 @@ public class SimpleTransaction {
@Override
public void run() {
if (null != HandlerLogicThread.current() && null != HandlerLogicThread.current().getSession())
MessageUtil.sendIndicationMessage(HandlerLogicThread.current().getSession(), 1, msgId, proto, true);
MessageUtil.sendMessage(HandlerLogicThread.current().getSession(), 1, getMsgId(), getProto());
}
public int getMsgId() {
return msgId;
}
@ -122,7 +137,7 @@ public class SimpleTransaction {
if (sendCacheMap.containsKey(entry.getKey())) {
List<GeneratedMessage> combineList = entry.getValue().combine(sendCacheMap.get(entry.getKey()));
for (GeneratedMessage generatedMessage : combineList) {
tasks.add(new SimpleTransaction.SendTask(generatedMessage, entry.getKey()));
tasks.add(0,new SimpleTransaction.SendTask(generatedMessage, entry.getKey()));
}
}
}

View File

@ -97,8 +97,10 @@ public class MessageUtil {
}
public static void sendMessage(ISession session, int result, int msgId, GeneratedMessage generatedMessage, boolean flush) {
if( null!=HandlerLogicThread.current()){
HandlerLogicThread.current().commit();
if(null!= HandlerLogicThread.current()){
HandlerLogicThread.current().dealWhileCommit(new SimpleTransaction.SendResponseTask(generatedMessage,msgId));
return;
}
byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(), result, msgId, generatedMessage);
@ -110,6 +112,13 @@ public class MessageUtil {
session.putBackMassageToMap(byteBuf);
}
public static void sendMessage(ISession session, int result, int msgId, GeneratedMessage generatedMessage) {
byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(), result, msgId, generatedMessage);
session.writeAndFlush(byteBuf);
session.putBackMassageToMap(byteBuf);
}
public static void sendMessageWithoutBack(ISession session, int result, int msgId, GeneratedMessage generatedMessage, boolean flush) {
byte[] byteBuf = wrappedBuffer(session.getUid(), session.getToken(), session.getIndex(), result, msgId, generatedMessage);
if (flush) {