@Override public void connect(SocketAddress endpoint, Integer timeout) throws IOException { this.inetSocketAddress = (InetSocketAddress) endpoint; super.connect(new UnixSocketAddress(path), timeout); }
@Override protected SocketAddress createSocketAddress(String path) { return new UnixSocketAddress(new File(path)); }
/** * @return the SocketAddress for the MongoD unix domain socket. */ public SocketAddress getUnixSocketAddress() { return new UnixSocketAddress(getHost()); }
public UnixDomainSocket(String ipcSocketPath, int bufferSize) { this.bufferSize = bufferSize; try { UnixSocketAddress address = new UnixSocketAddress(ipcSocketPath); channel = UnixSocketChannel.open(address); reader = new InputStreamReader(Channels.newInputStream(channel)); writer = new PrintWriter(Channels.newOutputStream(channel)); } catch (IOException e) { throw new RuntimeException( "Provided file socket cannot be opened: " + ipcSocketPath, e); } }
@Override public void bind(SocketAddress endpoint, int backlog) throws IOException { this.endpoint = (InetSocketAddress) endpoint; UnixSocketAddress address = new UnixSocketAddress(path); serverSocketChannel = UnixServerSocketChannel.open(); serverSocketChannel.configureBlocking(true); serverSocketChannel.socket().bind(address); }
@Override public Socket connectSocket(final int connectTimeout, final Socket socket, final HttpHost host, final InetSocketAddress remoteAddress, final InetSocketAddress localAddress, final HttpContext context) throws IOException { if (!(socket instanceof UnixSocket)) { throw new AssertionError("Unexpected socket: " + socket); } socket.setSoTimeout(connectTimeout); try { socket.getChannel().connect(new UnixSocketAddress(socketFile)); } catch (SocketTimeoutException e) { throw new ConnectTimeoutException(e, null, remoteAddress.getAddress()); } return socket; } }
/** * Check whether we can connect to a local Unix socket * */ public static boolean canConnectUnixSocket(File path) { try (UnixSocketChannel channel = UnixSocketChannel.open()) { return channel.connect(new UnixSocketAddress(path)); } catch (IOException e) { return false; } } }
@Override public SocketAddress call() throws UnknownHostException { if (port == 0) { // Hostname is a file path to the socket return new UnixSocketAddress(hostname); } else { return new InetSocketAddress(InetAddress.getByName(hostname), port); } } };
@Override public SocketAddress call() throws UnknownHostException { if (port == 0) { // Hostname is a file path to the socket return new UnixSocketAddress(hostname); } else { return new InetSocketAddress(InetAddress.getByName(hostname), port); } } };
/** * @return the SocketAddress for the MongoD unix domain socket. */ public SocketAddress getUnixSocketAddress() { return new UnixSocketAddress(getHost()); }
public UnixDomainSocket(String ipcSocketPath, int bufferSize) { this.bufferSize = bufferSize; try { UnixSocketAddress address = new UnixSocketAddress(ipcSocketPath); UnixSocketChannel channel = UnixSocketChannel.open(address); reader = new InputStreamReader(Channels.newInputStream(channel)); writer = new PrintWriter(Channels.newOutputStream(channel)); } catch (IOException e) { throw new RuntimeException( "Provided file socket cannot be opened: " + ipcSocketPath, e); } }
public UnixDomainSocket(String ipcSocketPath, int bufferSize) { this.bufferSize = bufferSize; try { UnixSocketAddress address = new UnixSocketAddress(ipcSocketPath); channel = UnixSocketChannel.open(address); reader = new InputStreamReader(Channels.newInputStream(channel)); writer = new PrintWriter(Channels.newOutputStream(channel)); } catch (IOException e) { throw new RuntimeException( "Provided file socket cannot be opened: " + ipcSocketPath, e); } }
public static UnixSocketAddress addressFromSockaddr_un(ThreadContext context, IRubyObject arg) { ByteList bl = arg.convertToString().getByteList(); byte[] raw = bl.bytes(); int end = 2; for (; end < raw.length; end++) { if (raw[end] == 0) break; } ByteList path = new ByteList(raw, 2, end, false); String pathStr = Helpers.decodeByteList(context.runtime, path); return new UnixSocketAddress(new File(pathStr)); }
@JRubyMethod(meta = true) public static IRubyObject unix(ThreadContext context, IRubyObject recv, IRubyObject path) { Addrinfo addrinfo = new Addrinfo(context.runtime, (RubyClass) recv); addrinfo.socketAddress = new UnixSocketAddress(new File(path.convertToString().toString())); addrinfo.sock = Sock.SOCK_STREAM; addrinfo.socketType = SocketType.UNIX; addrinfo.pfamily = PF_UNIX; addrinfo.protocol = Protocol.getProtocolByName("ip"); return addrinfo; }
@Override public UnixSocketAddress receive(ByteBuffer src) throws IOException { UnixSocketAddress remote = new UnixSocketAddress(); int n = Native.recvfrom(getFD(), src, remote.getStruct()); if (n < 0) { throw new IOException(Native.getLastErrorString()); } return remote; }
@JRubyMethod(meta = true) public static IRubyObject unix(ThreadContext context, IRubyObject recv, IRubyObject path, IRubyObject type) { Addrinfo addrinfo = new Addrinfo(context.runtime, (RubyClass) recv); addrinfo.socketAddress = new UnixSocketAddress(new File(path.convertToString().toString())); addrinfo.sock = SocketUtils.sockFromArg(type); addrinfo.socketType = SocketType.UNIX; addrinfo.pfamily = PF_UNIX; addrinfo.protocol = Protocol.getProtocolByName("ip"); return addrinfo; }
static UnixSocketAddress getpeername(int sockfd) { UnixSocketAddress remote = new UnixSocketAddress(); IntByReference len = new IntByReference(remote.getStruct().getMaximumLength()); if (Native.libc().getpeername(sockfd, remote.getStruct(), len) < 0) { throw new Error(Native.getLastErrorString()); } return remote; }
static UnixSocketAddress getsockname(int sockfd) { UnixSocketAddress remote = new UnixSocketAddress(); IntByReference len = new IntByReference(remote.getStruct().getMaximumLength()); if (Native.libc().getsockname(sockfd, remote.getStruct(), len) < 0) { throw new Error(Native.getLastErrorString()); } return remote; } }
static UnixSocketAddress getpeername(int sockfd) { UnixSocketAddress remote = new UnixSocketAddress(); SockAddrUnix addr = remote.getStruct(); IntByReference len = new IntByReference(addr.getMaximumLength()); if (Native.libc().getpeername(sockfd, addr, len) < 0) { throw new Error(Native.getLastErrorString()); } addr.updatePath(len.getValue()); return remote; }
static UnixSocketAddress getsockname(int sockfd) { UnixSocketAddress local = new UnixSocketAddress(); SockAddrUnix addr = local.getStruct(); IntByReference len = new IntByReference(addr.getMaximumLength()); if (Native.libc().getsockname(sockfd, addr, len) < 0) { throw new Error(Native.getLastErrorString()); } addr.updatePath(len.getValue()); return local; }