From 01d0993aa195fbdc2a01591ffb059d8e6917ba68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 1 May 2012 11:10:06 +0200 Subject: Add support for RPC logging. --- src/main/java/com/orbekk/protobuf/RequestDispatcher.java | 14 +++++++++++++- src/main/java/com/orbekk/protobuf/RpcChannel.java | 10 ++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/orbekk/protobuf/RequestDispatcher.java b/src/main/java/com/orbekk/protobuf/RequestDispatcher.java index 3076d7e..b0a4600 100644 --- a/src/main/java/com/orbekk/protobuf/RequestDispatcher.java +++ b/src/main/java/com/orbekk/protobuf/RequestDispatcher.java @@ -1,8 +1,9 @@ package com.orbekk.protobuf; -import java.io.IOException; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; +import java.util.logging.Level; +import java.util.logging.Logger; import com.google.protobuf.Descriptors; import com.google.protobuf.InvalidProtocolBufferException; @@ -11,6 +12,7 @@ import com.google.protobuf.RpcCallback; import com.google.protobuf.Service; public class RequestDispatcher extends Thread { + private static final Logger logger = Logger.getLogger(RequestDispatcher.class.getName()); public static int DEFAULT_QUEUE_SIZE = 5; private volatile boolean isStopped = false; private final BlockingQueue output; @@ -33,6 +35,10 @@ public class RequestDispatcher extends Thread { if (responseMessage != null) { response.setResponseProto(responseMessage.toByteString()); } + if (logger.isLoggable(Level.FINER)) { + logger.finer(String.format("I(%d): %s <= ", + request.getRequestId(), responseMessage)); + } rpc.writeTo(response); try { output.put(response.build()); @@ -78,6 +84,12 @@ public class RequestDispatcher extends Thread { return; } + if (logger.isLoggable(Level.FINER)) { + logger.fine(String.format("I(%d) => %s(%s)", + request.getRequestId(), + method.getFullName(), + requestMessage)); + } response.setRequestId(request.getRequestId()); service.callMethod(method, rpc, requestMessage, callback); } diff --git a/src/main/java/com/orbekk/protobuf/RpcChannel.java b/src/main/java/com/orbekk/protobuf/RpcChannel.java index 594cff8..c30254b 100644 --- a/src/main/java/com/orbekk/protobuf/RpcChannel.java +++ b/src/main/java/com/orbekk/protobuf/RpcChannel.java @@ -238,6 +238,11 @@ public class RpcChannel implements com.google.protobuf.RpcChannel { addTimeoutHandler(request_); ongoingRequests.put(id, request_); + if (logger.isLoggable(Level.FINER)) { + logger.finer(String.format("O(%d) => %s(%s)", + id, method.getFullName(), requestMessage)); + } + Data.Request requestData = Data.Request.newBuilder() .setRequestId(id) .setFullServiceName(method.getService().getFullName()) @@ -275,6 +280,11 @@ public class RpcChannel implements com.google.protobuf.RpcChannel { try { Message responsePb = request.responsePrototype.toBuilder() .mergeFrom(response.getResponseProto()).build(); + if (logger.isLoggable(Level.FINER)) { + logger.finer(String.format("O(%d) <= %s", + response.getRequestId(), + responsePb)); + } request.rpc.readFrom(response); request.done.run(responsePb); request.rpc.complete(); -- cgit v1.2.3