package me.dinowernli.grpc.polyglot.io;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.protobuf.DynamicMessage;
import io.grpc.stub.StreamObserver;
/**
* A {@link StreamObserver} which logs the progress of the rpc and some stats about the results
* once the rpc has completed. Note that this does *not* log the contents of the response.
*/
public class LoggingStatsWriter implements StreamObserver<DynamicMessage> {
private static final Logger logger = LoggerFactory.getLogger(LoggingStatsWriter.class);
private int numResponses;
public LoggingStatsWriter() {
numResponses = 0;
}
@Override
public void onCompleted() {
logger.info("Completed rpc with " + numResponses + " response(s)");
}
@Override
public void onError(Throwable t) {
logger.error("Aborted rpc due to error", t);
}
@Override
public void onNext(DynamicMessage message) {
logger.info("Got response message");
++numResponses;
}
}