Skip to content

Commit 16f7b7b

Browse files
author
Steve Powell
committed
Externalise interface for Tracer constructor *Logger parameter.
1 parent 1c510c2 commit 16f7b7b

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

src/com/rabbitmq/tools/Tracer.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,18 @@
1717

1818
package com.rabbitmq.tools;
1919

20-
import java.io.*;
20+
import java.io.BufferedOutputStream;
21+
import java.io.DataInputStream;
22+
import java.io.DataOutputStream;
23+
import java.io.EOFException;
24+
import java.io.IOException;
25+
import java.io.OutputStream;
26+
import java.io.PrintStream;
2127
import java.net.ServerSocket;
2228
import java.net.Socket;
2329
import java.util.HashMap;
24-
import java.util.concurrent.*;
30+
import java.util.concurrent.ArrayBlockingQueue;
31+
import java.util.concurrent.BlockingQueue;
2532

2633
import com.rabbitmq.client.AMQP;
2734
import com.rabbitmq.client.impl.AMQCommand;
@@ -62,11 +69,15 @@ private static boolean property(String property) {
6269
final static int MAX_TIME_BETWEEN_FLUSHES = 1000;
6370
final static Object FLUSH = new Object();
6471

65-
private static class AsyncLogger extends Thread {
72+
public interface Logger {
73+
void log(String msg);
74+
}
75+
76+
private static class AsyncLogger extends Thread implements Logger{
6677
final PrintStream ps;
6778
final BlockingQueue<Object> queue = new ArrayBlockingQueue<Object>(LOG_QUEUE_SIZE, true);
68-
AsyncLogger(PrintStream ps) {
69-
this.ps = new PrintStream(new BufferedOutputStream(ps, BUFFER_SIZE), false);
79+
AsyncLogger(OutputStream os) {
80+
this.ps = new PrintStream(new BufferedOutputStream(os, BUFFER_SIZE), false);
7081
start();
7182

7283
new Thread() {
@@ -82,7 +93,8 @@ private static class AsyncLogger extends Thread {
8293
}.start();
8394
}
8495

85-
@Override public void run() {
96+
@Override
97+
public void run() {
8698
try {
8799
while(true) {
88100
Object message = queue.take();
@@ -93,7 +105,8 @@ private static class AsyncLogger extends Thread {
93105
}
94106
}
95107

96-
void log(String message) {
108+
@Override
109+
public void log(String message) {
97110
try {
98111
queue.put(message);
99112
} catch(InterruptedException ex) {
@@ -123,7 +136,7 @@ public static void main(String[] args) {
123136
try {
124137
ServerSocket server = new ServerSocket(listenPort);
125138
int counter = 0;
126-
AsyncLogger logger = new AsyncLogger(System.out);
139+
Logger logger = new AsyncLogger(System.out);
127140
while (true) {
128141
Socket conn = server.accept();
129142
new Tracer(conn, counter++, connectHost, connectPort, logger);
@@ -148,9 +161,9 @@ public static void main(String[] args) {
148161

149162
public DataOutputStream oos;
150163

151-
public AsyncLogger logger;
164+
public Logger logger;
152165

153-
public Tracer(Socket sock, int id, String host, int port, AsyncLogger logger) throws IOException {
166+
public Tracer(Socket sock, int id, String host, int port, Logger logger) throws IOException {
154167
this.inSock = sock;
155168
this.outSock = new Socket(host, port);
156169
this.id = id;
@@ -194,8 +207,8 @@ public void run() {
194207
}
195208

196209
public void log(String message) {
197-
logger.log("" + System.currentTimeMillis() + ": conn#"
198-
+ id + " " + message);
210+
StringBuilder sb = new StringBuilder();
211+
logger.log(sb.append(System.currentTimeMillis()).append(": conn#").append(id).append(' ').append(message).toString());
199212
}
200213

201214
public void logException(Exception e) {

0 commit comments

Comments
 (0)