From 2aee6cab20c22b20c72339190ba02a8caef560af Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Tue, 12 Jan 2021 20:54:23 +0800 Subject: [PATCH] --- src/org/redkale/mq/SncpMessageRequest.java | 12 ++++++++++++ src/org/redkale/net/sncp/SncpAsyncHandler.java | 7 ++++++- src/org/redkale/net/sncp/SncpDynServlet.java | 10 +++++++--- src/org/redkale/net/sncp/SncpRequest.java | 5 +++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/org/redkale/mq/SncpMessageRequest.java b/src/org/redkale/mq/SncpMessageRequest.java index 81c173958..8cbe80a3c 100644 --- a/src/org/redkale/mq/SncpMessageRequest.java +++ b/src/org/redkale/mq/SncpMessageRequest.java @@ -6,7 +6,10 @@ package org.redkale.mq; import java.nio.ByteBuffer; +import java.util.logging.Level; +import java.util.logging.Logger; import org.redkale.net.sncp.*; +import org.redkale.util.Utility; /** * @@ -28,4 +31,13 @@ public class SncpMessageRequest extends SncpRequest { readHeader(ByteBuffer.wrap(message.getContent())); } + @Override //被SncpAsyncHandler.sncp_setParams调用 + protected void sncp_setParams(SncpDynServlet.SncpServletAction action, Logger logger, Object... params) { + if (message.localattach != null) return; + if (logger.isLoggable(Level.FINER)) { + message.attach(Utility.append(new Object[]{action.actionName()}, params)); + } else { + message.attach(params); + } + } } diff --git a/src/org/redkale/net/sncp/SncpAsyncHandler.java b/src/org/redkale/net/sncp/SncpAsyncHandler.java index 43050dabd..c80d1d3f0 100644 --- a/src/org/redkale/net/sncp/SncpAsyncHandler.java +++ b/src/org/redkale/net/sncp/SncpAsyncHandler.java @@ -8,6 +8,7 @@ package org.redkale.net.sncp; import org.redkale.asm.MethodDebugVisitor; import java.nio.channels.CompletionHandler; import java.util.concurrent.CompletableFuture; +import java.util.logging.Logger; import java.util.logging.Level; import org.redkale.asm.*; import static org.redkale.asm.Opcodes.*; @@ -258,7 +259,10 @@ public interface SncpAsyncHandler extends CompletionHandler { protected CompletableFuture future; - public DefaultSncpAsyncHandler(SncpServletAction action, BsonReader in, BsonWriter out, SncpRequest request, SncpResponse response) { + protected Logger logger; + + public DefaultSncpAsyncHandler(Logger logger, SncpServletAction action, BsonReader in, BsonWriter out, SncpRequest request, SncpResponse response) { + this.logger = logger; this.action = action; this.in = in; this.out = out; @@ -294,6 +298,7 @@ public interface SncpAsyncHandler extends CompletionHandler { @Override public void sncp_setParams(Object... params) { this.params = params; + this.request.sncp_setParams(this.action, this.logger, params); } @Override diff --git a/src/org/redkale/net/sncp/SncpDynServlet.java b/src/org/redkale/net/sncp/SncpDynServlet.java index 5c3d97629..3c178cd44 100644 --- a/src/org/redkale/net/sncp/SncpDynServlet.java +++ b/src/org/redkale/net/sncp/SncpDynServlet.java @@ -128,17 +128,17 @@ public final class SncpDynServlet extends SncpServlet { try { if (action.handlerFuncParamIndex >= 0) { if (action.handlerFuncParamClass == CompletionHandler.class) { - handler = new DefaultSncpAsyncHandler(action, in, out, request, response); + handler = new DefaultSncpAsyncHandler(logger, action, in, out, request, response); } else { Creator creator = action.handlerCreator; if (creator == null) { creator = SncpAsyncHandler.Factory.createCreator(action.handlerFuncParamClass); action.handlerCreator = creator; } - handler = creator.create(new DefaultSncpAsyncHandler(action, in, out, request, response)); + handler = creator.create(new DefaultSncpAsyncHandler(logger, action, in, out, request, response)); } } else if (action.boolReturnTypeFuture) { - handler = new DefaultSncpAsyncHandler(action, in, out, request, response); + handler = new DefaultSncpAsyncHandler(logger, action, in, out, request, response); } in.setBytes(request.getBody()); action.action(in, out, handler); @@ -208,6 +208,10 @@ public final class SncpDynServlet extends SncpServlet { out.writeByte((byte) 0); } + public String actionName() { + return method.getDeclaringClass().getSimpleName() + "." + method.getName(); + } + /** *
          *  public class TestService implements Service {
diff --git a/src/org/redkale/net/sncp/SncpRequest.java b/src/org/redkale/net/sncp/SncpRequest.java
index 375a5fc96..72374f691 100644
--- a/src/org/redkale/net/sncp/SncpRequest.java
+++ b/src/org/redkale/net/sncp/SncpRequest.java
@@ -8,6 +8,7 @@ package org.redkale.net.sncp;
 import java.net.*;
 import java.nio.*;
 import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.redkale.convert.bson.*;
 import org.redkale.net.*;
 import org.redkale.util.*;
@@ -98,6 +99,10 @@ public class SncpRequest extends Request {
         this.keepAlive = true;
     }
 
+    //被SncpAsyncHandler.sncp_setParams调用
+    protected void sncp_setParams(SncpDynServlet.SncpServletAction action, Logger logger, Object... params) {
+    }
+
     @Override
     public String toString() {
         return SncpRequest.class.getSimpleName() + "{seqid=" + this.seqid