diff --git a/src/main/java/com/profiler/context/HippoAnnotation.java b/src/main/java/com/profiler/context/HippoAnnotation.java index 5eaad220d..c67beddaf 100644 --- a/src/main/java/com/profiler/context/HippoAnnotation.java +++ b/src/main/java/com/profiler/context/HippoAnnotation.java @@ -36,6 +36,10 @@ public class HippoAnnotation { return this.key; } + public long getTimestamp() { + return this.timestamp; + } + @Override public String toString() { return "HippoAnnotation [timestamp=" + timestamp + ", duration=" + duration + ", key=" + key + ", valueTypeCode=" + valueTypeCode + ", value=" + value + ", threadname=" + threadname + "]"; diff --git a/src/main/java/com/profiler/context/Span.java b/src/main/java/com/profiler/context/Span.java index 22b712be4..24d3c81fd 100644 --- a/src/main/java/com/profiler/context/Span.java +++ b/src/main/java/com/profiler/context/Span.java @@ -27,6 +27,9 @@ public class Span { private final List annotations = new ArrayList(5); private final Set annotationKeys = new HashSet(5); + private long rpcStartTime; + private long rpcEndTime; + /** * Cancel timer logic. * TODO: refactor this. @@ -50,6 +53,12 @@ public class Span { public boolean addAnnotation(HippoAnnotation annotation) { annotationKeys.add(annotation.getKey()); + if (annotation.getKey().equals(Annotation.ClientSend.getCode()) || annotation.getKey().equals(Annotation.ServerRecv.getCode())) { + rpcStartTime = annotation.getTimestamp(); + } + if (annotation.getKey().equals(Annotation.ClientRecv.getCode()) || annotation.getKey().equals(Annotation.ServerSend.getCode())) { + rpcEndTime = annotation.getTimestamp(); + } return annotations.add(annotation); } @@ -99,6 +108,14 @@ public class Span { this.isTerminal = isTerminal; } + public long getRpcStartTime() { + return rpcStartTime; + } + + public long getRpcEndTime() { + return rpcEndTime; + } + public String toString() { StringBuilder sb = new StringBuilder(); @@ -134,6 +151,8 @@ public class Span { span.setEndPoint(endPoint); span.setTerminal(isTerminal); + // TODO: set duration. + List annotationList = new ArrayList(annotations.size()); for (HippoAnnotation a : annotations) { annotationList.add(a.toThrift());