Class AFVSOCKSocket

java.lang.Object
java.net.Socket
org.newsclub.net.unix.AFSocket<org.newsclub.net.unix.AFVSOCKSocketAddress>
org.newsclub.net.unix.vsock.AFVSOCKSocket
All Implemented Interfaces:
Closeable, AutoCloseable, org.newsclub.net.unix.AFSocketExtensions, org.newsclub.net.unix.AFSomeSocket, org.newsclub.net.unix.FileDescriptorAccess, AFVSOCKSocketExtensions

public final class AFVSOCKSocket extends org.newsclub.net.unix.AFSocket<org.newsclub.net.unix.AFVSOCKSocketAddress> implements AFVSOCKSocketExtensions
Implementation of an AF_VSOCK socket.
Author:
Christian Kohlschütter
  • Method Details

    • isSupported

      public static boolean isSupported()
      Returns true iff AFVSOCKSockets (sockets of type "AF_VSOCK") are supported by the current Java VM and the kernel. To support AFVSOCKSockets, a custom JNI library must be loaded that is supplied with junixsocket, and the system must support AF_VSOCK sockets. This call is equivalent to checking AFSocket.isSupported() and AFSocket.supports(AFSocketCapability) with AFSocketCapability.CAPABILITY_VSOCK.
      Returns:
      true iff supported.
    • newChannel

      protected AFVSOCKSocketChannel newChannel()
      Specified by:
      newChannel in class org.newsclub.net.unix.AFSocket<org.newsclub.net.unix.AFVSOCKSocketAddress>
    • newInstance

      public static AFVSOCKSocket newInstance() throws IOException
      Creates a new, unbound AFSocket. This "default" implementation is a bit "lenient" with respect to the specification. In particular, we ignore calls to Socket.getTcpNoDelay() and Socket.setTcpNoDelay(boolean).
      Returns:
      A new, unbound socket.
      Throws:
      IOException - if the operation fails.
    • newStrictInstance

      public static AFVSOCKSocket newStrictInstance() throws IOException
      Creates a new, unbound, "strict" AFSocket. This call uses an implementation that tries to be closer to the specification than newInstance(), at least for some cases.
      Returns:
      A new, unbound socket.
      Throws:
      IOException - if the operation fails.
    • connectTo

      public static AFVSOCKSocket connectTo(org.newsclub.net.unix.AFVSOCKSocketAddress addr) throws IOException
      Creates a new AFSocket and connects it to the given AFVSOCKSocketAddress.
      Parameters:
      addr - The address to connect to.
      Returns:
      A new, connected socket.
      Throws:
      IOException - if the operation fails.
    • getChannel

      public AFVSOCKSocketChannel getChannel()
      Overrides:
      getChannel in class org.newsclub.net.unix.AFSocket<org.newsclub.net.unix.AFVSOCKSocketAddress>
    • getLocalCID

      public static int getLocalCID() throws IOException
      Returns the local CID. If the system does not support vsock, or status about support cannot be retrieved, -1 (AFVSOCKSocketAddress.VMADDR_CID_ANY) is returned. The value may be cached upon initialization of the library.
      Returns:
      The CID, or -1.
      Throws:
      IOException - on error.
    • main

      public static void main(String[] args)
      Very basic self-test function. Prints "supported" and "capabilities" status to System.out.
      Parameters:
      args - ignored.