Class AFTIPCSocket
- All Implemented Interfaces:
Closeable, AutoCloseable, AFSocketExtensions, AFSomeSocket, AFSomeSocketThing, FileDescriptorAccess, AFTIPCSocketExtensions
public final class AFTIPCSocket
extends AFSocket<AFTIPCSocketAddress>
implements AFTIPCSocketExtensions
Implementation of an
AF_TIPC socket.- Author:
- Christian Kohlschütter
-
Nested Class Summary
Nested classes/interfaces inherited from class AFSocket
AFSocket.Constructor<A>Modifier and TypeClassDescriptionstatic interfaceAFSocket.Constructor<A extends AFSocketAddress>The reference to the constructor of anAFSocketsubclass. -
Method Summary
Modifier and TypeMethodDescriptionstatic AFTIPCSocketconnectTo(AFTIPCSocketAddress addr) Creates a newAFSocketand connects it to the givenAFTIPCSocketAddress.Returns the TIPC "DestName" information from the ancillary receive buffer (if any was set), ornullif no DestName was retrieved.Returns the TIPC "ErrInfo" information from the ancillary receive buffer (if any was set), ornullif no error was retrieved.static StringgetLinkName(int peerId, int bearerId) Retrieves the link name given a node hash and a bearer ID.static byte[]getNodeIdentity(int peerId) Retrieves the 16-byte node ID given a node hash.byte[]getNodeIdentity(AFTIPCSocketAddress address) Retrieves the TIPC node identity given the node hash of the given address.static StringgetNodeIdHexString(int peerId) Retrieves the node ID given a node hash, as a hexadecimal string.static booleanReturnstrueiffAFTIPCSockets (sockets of type "AF_TIPC") are supported by the current Java VM and the kernel.static voidVery basic self-test function.protected AFTIPCSocketChannelCreates a newAFSocketChannelfor this socket.static AFTIPCSocketCreates a new, unboundAFSocket.static AFTIPCSocketCreates a new, unbound, "strict"AFSocket.Methods inherited from class AFSocket
addCloseable, bind, checkConnectionClosed, close, connect, connect, connectHook, connectTo, connectTo, ensureAncillaryReceiveBufferSize, ensureSupported, ensureUnsafeSupported, forceConnectAddress, getAncillaryReceiveBufferSize, getFileDescriptor, getImplExtensions, getInputStream, getLoadedLibrary, getLocalSocketAddress, getOutputStream, getRemoteSocketAddress, getVersion, isBound, isClosed, isConnected, isRunningOnAndroid, newInstance, removeCloseable, setAncillaryReceiveBufferSize, setShutdownOnClose, socketAddressClass, supports, supports, toStringModifier and TypeMethodDescriptionfinal voidaddCloseable(Closeable closeable) Registers aCloseablethat should be closed when this socket is closed.final voidbind(SocketAddress bindpoint) Not fully supported, since it's not necessary for client sockets.booleanProbes the status of the socket connection.final voidclose()final voidconnect(SocketAddress endpoint) final voidconnect(SocketAddress endpoint, int timeout) final AFSocket<AFTIPCSocketAddress> Sets the hook for any subsequent call toAFSocket.connect(SocketAddress)orAFSocket.connect(SocketAddress, int)to be the given function.static final <A extends AFSocketAddress>
AFSocket<?> connectTo(@NonNull A addr) Creates a newAFSocketand connects it to the givenAFSocketAddressusing the default implementation suited for that address type.protected static final <A extends AFSocketAddress>
@NonNull AFSocket<A> connectTo(AFSocket.Constructor<A> constr, A addr) Creates a newAFSocketand connects it to the givenAFSocketAddress.final voidensureAncillaryReceiveBufferSize(int minSize) Ensures a minimum ancillary receive buffer size.static voidChecks ifAFSockets are supported by the current Java VM.static final voidChecks if the current environment (system platform, native library, etc.) supports "unsafe" operations (as controlled via theAFSocketCapability.CAPABILITY_UNSAFEcapability).final AFSocket<AFTIPCSocketAddress> forceConnectAddress(SocketAddress endpoint) Forces the address to be used for any subsequent call toAFSocket.connect(SocketAddress)to be the given one, regardless of what'll be passed there.final intReturns the size of the receive buffer for ancillary messages (in bytes).final FileDescriptorReturns the correspondingFileDescriptor.protected final AFSocketImplExtensions<AFTIPCSocketAddress> Returns the internal helper instance for address-specific extensions.final AFInputStreamstatic final StringReturns an identifier of the loaded native library, ornullif the library hasn't been loaded yet.final AFTIPCSocketAddressReturns the socket's local socket address, ornullif unavailable or if there was a problem retrieving it.final AFOutputStreamfinal AFTIPCSocketAddressReturns the socket's remote socket address, ornullif unavailable/not connected, or if there was a problem retrieving it.static final StringReturns the version of the junixsocket library, as a string, for debugging purposes.final booleanisBound()final booleanisClosed()final booleanstatic booleanChecks if we're running on Android (as far as junixsocket is concerned).protected static final <A extends AFSocketAddress>
AFSocket<A> newInstance(AFSocket.Constructor<A> constr, AFSocketFactory<A> factory) Creates a new, unboundAFSocket.final voidremoveCloseable(Closeable closeable) Unregisters a previously registeredCloseable.final voidsetAncillaryReceiveBufferSize(int size) Sets the size of the receive buffer for ancillary messages (in bytes).voidsetShutdownOnClose(boolean enabled) Configures whether the socket should be shutdown uponCloseable.close(), which is the default.protected final Class<? extends AFSocketAddress> Returns theAFSocketAddresstype supported by this socket.static final booleansupports(AFSocketCapability capability) Checks if the current environment (system platform, native library, etc.) supports a given junixsocket capability.static final booleansupports(AFUNIXSocketCapability capability) Deprecated.final StringtoString()Methods inherited from class Socket
getInetAddress, getKeepAlive, getLocalAddress, getLocalPort, getOOBInline, getOption, getPort, getReceiveBufferSize, getReuseAddress, getSendBufferSize, getSoLinger, getSoTimeout, getTcpNoDelay, getTrafficClass, isInputShutdown, isOutputShutdown, sendUrgentData, setKeepAlive, setOOBInline, setOption, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSocketImplFactory, setSoLinger, setSoTimeout, setTcpNoDelay, setTrafficClass, shutdownInput, shutdownOutput, supportedOptions
-
Method Details
-
isSupported
public static boolean isSupported()ReturnstrueiffAFTIPCSockets (sockets of type "AF_TIPC") are supported by the current Java VM and the kernel. To supportAFTIPCSockets, a custom JNI library must be loaded that is supplied with junixsocket, and the system must support AF_TIPC sockets. This call is equivalent to checkingAFSocket.isSupported()andAFSocket.supports(AFSocketCapability)withAFSocketCapability.CAPABILITY_TIPC.- Returns:
trueiff supported.
-
newChannel
Description copied from class:AFSocketCreates a newAFSocketChannelfor this socket.- Specified by:
newChannelin classAFSocket<AFTIPCSocketAddress>- Returns:
- The new instance.
-
newInstance
Creates a new, unboundAFSocket. This "default" implementation is a bit "lenient" with respect to the specification. In particular, we ignore calls toSocket.getTcpNoDelay()andSocket.setTcpNoDelay(boolean).- Returns:
- A new, unbound socket.
- Throws:
IOException- if the operation fails.
-
newStrictInstance
Creates a new, unbound, "strict"AFSocket. This call uses an implementation that tries to be closer to the specification thannewInstance(), at least for some cases.- Returns:
- A new, unbound socket.
- Throws:
IOException- if the operation fails.
-
connectTo
Creates a newAFSocketand connects it to the givenAFTIPCSocketAddress.- Parameters:
addr- The address to connect to.- Returns:
- A new, connected socket.
- Throws:
IOException- if the operation fails.
-
getChannel
- Overrides:
getChannelin classAFSocket<AFTIPCSocketAddress>
-
main
Very basic self-test function. Prints "supported" and "capabilities" status to System.out.- Parameters:
args- ignored.
-
getErrInfo
Description copied from interface:AFTIPCSocketExtensionsReturns the TIPC "ErrInfo" information from the ancillary receive buffer (if any was set), ornullif no error was retrieved.- Specified by:
getErrInfoin interfaceAFTIPCSocketExtensions- Returns:
- The ErrInfo.
-
getDestName
Description copied from interface:AFTIPCSocketExtensionsReturns the TIPC "DestName" information from the ancillary receive buffer (if any was set), ornullif no DestName was retrieved.- Specified by:
getDestNamein interfaceAFTIPCSocketExtensions- Returns:
- The service address or range (without scope) that was specified by the sender of the message.
-
getNodeIdentity
Retrieves the 16-byte node ID given a node hash.- Parameters:
peerId- The node hash.- Returns:
- The node ID, or
nullif unsupported. - Throws:
IOException- on error.
-
getNodeIdentity
Retrieves the TIPC node identity given the node hash of the given address.- Parameters:
address- The address.- Returns:
- The node identity, or
nullif unsupported. - Throws:
IOException- on error.
-
getNodeIdHexString
Retrieves the node ID given a node hash, as a hexadecimal string.- Parameters:
peerId- The node hash.- Returns:
- The node ID, or
nullif unsupported. - Throws:
IOException- on error.
-
getLinkName
Retrieves the link name given a node hash and a bearer ID.- Parameters:
peerId- The node hash.bearerId- The bearer Id.- Returns:
- The link name, or
nullif unsupported. - Throws:
IOException- on error.
-