event.complete();
return event;
}
public MessageTree next() throws InterruptedException {
MessageTree tree = null;
List<String> list = new ArrayList<String>(16);
StringBuilder sb = new StringBuilder(1024);
String childId = null;
int step = 0;
while (true) {
sb.setLength(0);
readLine(sb);
if (sb.length() == 0) {
break;
}
String line = sb.toString();
list.clear();
Splitters.by('\t').split(line, list);
int size = list.size();
int index = 0;
switch (step) {
case 0:
if (size >= 3) {
String id = list.get(index++);
String parentId = list.get(index++);
String rootId = list.get(index++);
childId = id;
tree = m_messageManager.getThreadLocalMessageTree().copy();
tree.setMessageId(parentId);
tree.setParentMessageId(rootId);
tree.setRootMessageId(rootId);
tree.setDomain(getDomainByMessageId(id, tree.getDomain()));
step++;
}
break;
case 1:
if (size >= 13) {
String name = list.get(index++);
String status = list.get(index++);
String url = list.get(index++);
String requestHeaderLen = list.get(index++);
String upstreamUrl = list.get(index++);
String responseHeaderLen = list.get(index++);
String responseBodyLen = list.get(index++);
String responseBodyBlocks = list.get(index++);
long t0 = toLong(list.get(index++));
long t1 = toLong(list.get(index++));
long t2 = toLong(list.get(index++));
long t3 = toLong(list.get(index++));
long t4 = toLong(list.get(index++));
DefaultTransaction t = new DefaultTransaction(name, url, m_messageManager);
t.addChild(newEvent(name + ".Status", status, null));
t.addChild(newEvent("RemoteCall", upstreamUrl, childId));
t.addData("_m", (t1 - t0) + "," + (t2 - t1) + "," + (t3 - t2) + "," + (t4 - t3));
t.addData("in", requestHeaderLen);
t.addData("out", responseHeaderLen + "," + responseBodyLen);
t.addData("blocks", responseBodyBlocks);
t.addData("url", upstreamUrl);
if ("200".equals(status)) {
t.setStatus(Message.SUCCESS);
} else {
t.setStatus(status);
}
t.setDurationInMillis(t4 - t0);
t.setCompleted(true);
tree.setMessage(t);
step++;
}
break;
default: