Package software.amazon.awssdk.crt
Class CRT
- java.lang.Object
-
- software.amazon.awssdk.crt.CRT
-
public final class CRT extends Object
This class is responsible for loading the aws-crt-jni shared lib for the current platform out of aws-crt-java.jar. One instance of this class has to be created somewhere to invoke the static initialization block which will load the shared lib
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCRT.UnknownPlatformExceptionException thrown when we can't detect what platform we're running on and thus can't figure out the native library name/path to load.
-
Field Summary
Fields Modifier and Type Field Description static intAWS_CRT_SUCCESSstatic StringCRT_LIB_NAME
-
Constructor Summary
Constructors Constructor Description CRT()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidacquireShutdownRef()Public API that allows a user to indicate interest in controlling the CRT's time of shutdown.static StringawsErrorName(int errorCode)Given an integer error code from an internal operation, get a corresponding string identifier for it.static StringawsErrorString(int errorCode)Given an integer error code from an internal operation, get a corresponding description for it.static intawsLastError()Returns the last error on the current thread.static voidcheckJniExceptionContract(boolean clearException)static voiddumpNativeMemory()Dump info to logs about all memory currently allocated by native resources.static StringgetArchIdentifier()static StringgetCRuntime(String osIdentifier)static StringgetOSIdentifier()static CrtPlatformgetPlatformImpl()static booleanisFIPS()static longnativeMemory()static voidreleaseShutdownRef()Public API to release a shutdown reference that blocks CRT shutdown from proceeding.
-
-
-
Field Detail
-
CRT_LIB_NAME
public static final String CRT_LIB_NAME
- See Also:
- Constant Field Values
-
AWS_CRT_SUCCESS
public static final int AWS_CRT_SUCCESS
- See Also:
- Constant Field Values
-
-
Method Detail
-
getOSIdentifier
public static String getOSIdentifier() throws CRT.UnknownPlatformException
- Returns:
- a string describing the detected platform the CRT is executing on
- Throws:
CRT.UnknownPlatformException
-
getArchIdentifier
public static String getArchIdentifier() throws CRT.UnknownPlatformException
- Returns:
- a string describing the detected architecture the CRT is executing on
- Throws:
CRT.UnknownPlatformException
-
getPlatformImpl
public static CrtPlatform getPlatformImpl()
-
acquireShutdownRef
public static void acquireShutdownRef()
Public API that allows a user to indicate interest in controlling the CRT's time of shutdown. The shutdown process works via ref-counting, with a default starting count of 1 which is decremented by a JVM shutdown hook. Each external call to `acquireShutdownRef()` requires a corresponding call to `releaseShutdownRef()` when the caller is ready for the CRT to be shut down. Once all shutdown references have been released, the CRT will be shut down. If the ref count is not properly driven to zero (and thus leaving the CRT active), the JVM may crash if unmanaged native code in the CRT is still busy and attempts to call back into the JVM after the JVM cleans up JNI.
-
releaseShutdownRef
public static void releaseShutdownRef()
Public API to release a shutdown reference that blocks CRT shutdown from proceeding. Must be called once, and only once, for each call to `acquireShutdownRef()`. Once all shutdown references have been released (including the initial reference that is managed by a JVM shutdown hook), the CRT will begin its shutdown process which permanently severs all native-JVM interactions.
-
awsLastError
public static int awsLastError()
Returns the last error on the current thread.- Returns:
- Last error code recorded in this thread
-
awsErrorString
public static String awsErrorString(int errorCode)
Given an integer error code from an internal operation, get a corresponding description for it.- Parameters:
errorCode- An error code returned from an exception or other native function call- Returns:
- A user-friendly description of the error
-
awsErrorName
public static String awsErrorName(int errorCode)
Given an integer error code from an internal operation, get a corresponding string identifier for it.- Parameters:
errorCode- An error code returned from an exception or other native function call- Returns:
- A string identifier for the error
-
nativeMemory
public static long nativeMemory()
- Returns:
- The number of bytes allocated in native resources. If aws.crt.memory.tracing is 1 or 2, this will be a non-zero value. Otherwise, no tracing will be done, and the value will always be 0
-
dumpNativeMemory
public static void dumpNativeMemory()
Dump info to logs about all memory currently allocated by native resources. The following system properties must be set to see a dump: aws.crt.memory.tracing must be 1 or 2 aws.crt.log.level must be "Trace"
-
checkJniExceptionContract
public static void checkJniExceptionContract(boolean clearException)
-
isFIPS
public static boolean isFIPS()
-
-