Skip to content

Commit 8b970a9

Browse files
committed
Working on MutateProxy
1 parent cdcb5f2 commit 8b970a9

1 file changed

Lines changed: 73 additions & 2 deletions

File tree

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,83 @@
11
package io.socket.testutils;
22

3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.io.OutputStreamWriter;
6+
import java.net.ServerSocket;
7+
import java.net.Socket;
8+
import java.net.UnknownHostException;
9+
import java.nio.CharBuffer;
10+
311
public class MutateProxy extends Thread {
4-
public MutateProxy() {
12+
int listenPort;
13+
int socketPort;
14+
private Forwarder serverToClient;
15+
private Forwarder clientToServer;
16+
17+
public MutateProxy(int listenPort, int socketPort) {
518
super("MutateProxy");
19+
this.listenPort = listenPort;
20+
this.socketPort = socketPort;
621
}
722

823
@Override
924
public void run() {
10-
super.run();
25+
try {
26+
server();
27+
} catch (IOException e) {
28+
e.printStackTrace();
29+
}
30+
}
31+
32+
void server() throws IOException {
33+
ServerSocket server = new ServerSocket(listenPort);
34+
Socket connection;
35+
while ((connection = server.accept()) != null) {
36+
InputStreamReader reader = new InputStreamReader(
37+
connection.getInputStream());
38+
OutputStreamWriter writer = new OutputStreamWriter(
39+
connection.getOutputStream());
40+
client(reader, writer);
41+
}
42+
}
43+
44+
private void client(final InputStreamReader clientReader,
45+
final OutputStreamWriter clientWriter) throws UnknownHostException,
46+
IOException {
47+
Socket socket = new Socket("127.0.0.1", socketPort);
48+
final InputStreamReader serverReader = new InputStreamReader(
49+
socket.getInputStream());
50+
final OutputStreamWriter serverWriter = new OutputStreamWriter(
51+
socket.getOutputStream());
52+
serverToClient = new Forwarder("serverToClient", serverReader,
53+
clientWriter);
54+
clientToServer = new Forwarder("clientToServer", clientReader,
55+
serverWriter);
56+
serverToClient.start();
57+
clientToServer.start();
58+
}
59+
60+
private static class Forwarder extends Thread {
61+
private OutputStreamWriter output;
62+
private InputStreamReader input;
63+
64+
public Forwarder(String name, InputStreamReader input,
65+
OutputStreamWriter output) {
66+
super(name);
67+
this.output = output;
68+
this.input = input;
69+
}
70+
71+
@Override
72+
public void run() {
73+
CharBuffer buffer = CharBuffer.allocate(1024);
74+
try {
75+
while(input.read(buffer) != 0) {
76+
output.append(buffer.toString());
77+
}
78+
} catch (IOException e) {
79+
e.printStackTrace();
80+
}
81+
}
1182
}
1283
}

0 commit comments

Comments
 (0)