X Tutup
Skip to content

Commit a19aa43

Browse files
committed
Added experiment with jnr-unixsocket.
1 parent 8466344 commit a19aa43

File tree

4 files changed

+74
-2
lines changed

4 files changed

+74
-2
lines changed

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<commons-lang.version>2.6</commons-lang.version>
5858
<slf4j-api.version>1.7.5</slf4j-api.version>
5959
<jsr305.version>1.3.9</jsr305.version>
60+
<jnr.unixsocket.version>0.3</jnr.unixsocket.version>
6061

6162
<!--test dependencies -->
6263
<version.logback>1.0.1</version.logback>
@@ -123,6 +124,12 @@
123124
<version>${commons-io.version}</version>
124125
</dependency>
125126

127+
<dependency>
128+
<groupId>com.github.jnr</groupId>
129+
<artifactId>jnr-unixsocket</artifactId>
130+
<version>${jnr.unixsocket.version}</version>
131+
</dependency>
132+
126133
<dependency>
127134
<groupId>org.slf4j</groupId>
128135
<artifactId>slf4j-api</artifactId>

src/main/java/com/kpelykh/docker/client/DockerClient.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.apache.commons.io.FileUtils;
1616
import org.apache.commons.lang.StringUtils;
1717
import org.apache.http.client.HttpClient;
18+
import org.apache.http.conn.ClientConnectionManager;
1819
import org.apache.http.conn.scheme.PlainSocketFactory;
1920
import org.apache.http.conn.scheme.Scheme;
2021
import org.apache.http.conn.scheme.SchemeRegistry;
@@ -60,8 +61,9 @@ public DockerClient(String serverUrl) {
6061
// Increase default max connection per route
6162
cm.setDefaultMaxPerRoute(1000);
6263

63-
HttpClient httpClient = new DefaultHttpClient(cm);
64-
client = new ApacheHttpClient4(new ApacheHttpClient4Handler(httpClient, null, false), clientConfig);
64+
// HttpClient httpClient = new DefaultHttpClient(cm);
65+
// client = new ApacheHttpClient4(new ApacheHttpClient4Handler(httpClient, null, false), clientConfig);
66+
client = new UnixSocketClient();
6567

6668
client.addFilter(new JsonClientFilter());
6769
//client.addFilter(new LoggingFilter());
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.kpelykh.docker.client;
2+
3+
import com.sun.jersey.api.client.Client;
4+
5+
6+
public class UnixSocketClient extends Client {
7+
8+
public UnixSocketClient() {
9+
super(new UnixSocketClientHandler());
10+
}
11+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.kpelykh.docker.client;
2+
3+
import com.sun.jersey.api.client.ClientHandler;
4+
import com.sun.jersey.api.client.ClientHandlerException;
5+
import com.sun.jersey.api.client.ClientRequest;
6+
import com.sun.jersey.api.client.ClientResponse;
7+
import jnr.unixsocket.UnixSocketAddress;
8+
import jnr.unixsocket.UnixSocketChannel;
9+
10+
import java.io.File;
11+
import java.io.IOException;
12+
import java.io.InputStreamReader;
13+
import java.io.PrintWriter;
14+
import java.nio.CharBuffer;
15+
import java.nio.channels.Channels;
16+
17+
public class UnixSocketClientHandler implements ClientHandler {
18+
19+
@Override
20+
public ClientResponse handle(ClientRequest cr) throws ClientHandlerException {
21+
System.out.println("UnixSocketClientHandler.handle " + cr);
22+
23+
File path = new File("/var/run/docker.sock");
24+
25+
String data = "GET /images/json?all=0 HTTP/1.1\n\n";
26+
27+
UnixSocketAddress address = new UnixSocketAddress(path);
28+
UnixSocketChannel channel = null;
29+
try {
30+
channel = UnixSocketChannel.open(address);
31+
} catch (IOException e) {
32+
e.printStackTrace();
33+
}
34+
System.out.println("connected to " + channel.getRemoteSocketAddress());
35+
PrintWriter w = new PrintWriter(Channels.newOutputStream(channel));
36+
w.print(data);
37+
w.flush();
38+
39+
InputStreamReader r = new InputStreamReader(Channels.newInputStream(channel));
40+
41+
CharBuffer result = CharBuffer.allocate(1024);
42+
try {
43+
r.read(result);
44+
} catch (IOException e) {
45+
e.printStackTrace();
46+
}
47+
result.flip();
48+
System.out.println("read from server: " + result.toString());
49+
50+
return null;
51+
}
52+
}

0 commit comments

Comments
 (0)
X Tutup