1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.predicates;
20
21 import java.io.IOException;
22 import java.net.InetSocketAddress;
23 import java.net.Socket;
24
25 import javax.annotation.Resource;
26 import javax.inject.Named;
27 import javax.inject.Singleton;
28
29 import org.jclouds.logging.Logger;
30 import org.jclouds.net.IPSocket;
31
32 import com.google.inject.Inject;
33
34
35
36
37
38
39
40 @Singleton
41 public class InetSocketAddressConnect implements SocketOpen {
42
43 @Resource
44 protected Logger logger = Logger.NULL;
45
46 @Inject(optional = true)
47 @Named("org.jclouds.socket_timeout")
48 private int timeout = 2000;
49
50 @Override
51 public boolean apply(IPSocket socketA) {
52 InetSocketAddress socketAddress = new InetSocketAddress(socketA.getAddress(), socketA
53 .getPort());
54 Socket socket = null;
55 try {
56 logger.trace("testing socket %s", socketAddress);
57 socket = new Socket();
58 socket.setReuseAddress(false);
59 socket.setSoLinger(false, 1);
60 socket.setSoTimeout(timeout);
61 socket.connect(socketAddress, timeout);
62 } catch (IOException e) {
63 return false;
64 } finally {
65 if (socket != null) {
66 try {
67 socket.close();
68 } catch (IOException ioe) {
69
70 }
71 }
72 }
73 return true;
74 }
75
76 }