Browse Source

Started work on architecture-specific lite wallet library loading. Paths are not yet correct.

pirate-chain
CalDescent 2 years ago
parent
commit
5203742b05
  1. 46
      src/main/java/com/rust/litewalletjni/LiteWalletJni.java
  2. 6
      src/main/java/org/qortal/controller/PirateChainWalletController.java

46
src/main/java/com/rust/litewalletjni/LiteWalletJni.java

@ -42,8 +42,12 @@
package com.rust.litewalletjni;
public class LiteWalletJni
{
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LiteWalletJni {
protected static final Logger LOGGER = LogManager.getLogger(LiteWalletJni.class);
public static native String initlogging();
public static native String initnew(final String serveruri, final String params, final String saplingOutputb64, final String saplingSpendb64);
@ -57,8 +61,42 @@ public class LiteWalletJni
public static native String checkseedphrase(final String input);
static {
System.loadLibrary("litewallet-jni");
private static boolean loaded = false;
public static void loadLibrary() {
if (loaded) {
return;
}
String osName = System.getProperty("os.name");
String osArchitecture = System.getProperty("os.arch");
LOGGER.info("OS Name: {}", osName);
LOGGER.info("OS Architecture: {}", osArchitecture);
try {
String libPath;
if (osName.equals("Mac OS X") && osArchitecture.equals("x86_64")) {
libPath = "librust.dylib";
}
else if (osName.equals("Linux") && osArchitecture.equals("arm")) {
libPath = "/home/pi/librust.so";
}
else {
LOGGER.info("Library not found for OS: {}, arch: {}", osName, osArchitecture);
return;
}
System.load(libPath);
loaded = true;
}
catch (UnsatisfiedLinkError e) {
LOGGER.info("Unable to load library");
}
}
public static boolean isLoaded() {
return loaded;
}
}

6
src/main/java/org/qortal/controller/PirateChainWalletController.java

@ -40,6 +40,8 @@ public class PirateChainWalletController extends Thread {
public void run() {
Thread.currentThread().setName("Pirate Chain Wallet Controller");
LiteWalletJni.loadLibrary();
try {
while (running && !Controller.isStopping()) {
Thread.sleep(1000);
@ -155,8 +157,8 @@ public class PirateChainWalletController extends Thread {
}
public void ensureInitialized() throws ForeignBlockchainException {
if (this.currentWallet == null || !this.currentWallet.isInitialized()) {
throw new ForeignBlockchainException("Unable to initialize Pirate wallet");
if (!LiteWalletJni.isLoaded() || this.currentWallet == null || !this.currentWallet.isInitialized()) {
throw new ForeignBlockchainException("Pirate wallet isn't initialized yet");
}
}

Loading…
Cancel
Save