From c25f0b14a9f2c1da0f6515b1bfb18af31af19acc Mon Sep 17 00:00:00 2001 From: muneebkq Date: Wed, 24 Jul 2024 17:02:59 +0530 Subject: [PATCH 1/3] feat: Update pom.xml and add HostConfig class --- pom.xml | 5 ++ .../cryptlex/lexfloatclient/HostConfig.java | 5 ++ .../lexfloatclient/LexFloatClient.java | 48 +++++++++++++++++++ .../lexfloatclient/LexFloatClientNative.java | 4 ++ 4 files changed, 62 insertions(+) create mode 100644 src/main/java/com/cryptlex/lexfloatclient/HostConfig.java diff --git a/pom.xml b/pom.xml index 16e96fd..9c6cea4 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,11 @@ jna 5.10.0 + + com.fasterxml.jackson.core + jackson-databind + 2.14.2 + diff --git a/src/main/java/com/cryptlex/lexfloatclient/HostConfig.java b/src/main/java/com/cryptlex/lexfloatclient/HostConfig.java new file mode 100644 index 0000000..10f210d --- /dev/null +++ b/src/main/java/com/cryptlex/lexfloatclient/HostConfig.java @@ -0,0 +1,5 @@ +package com.cryptlex.lexfloatclient; + +public class HostConfig { + public String maxOfflineLeaseDuration; +} diff --git a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java index db09553..feeef53 100644 --- a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java +++ b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java @@ -6,6 +6,8 @@ import java.nio.CharBuffer; import java.io.UnsupportedEncodingException; import com.sun.jna.ptr.IntByReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.core.JsonProcessingException; import java.util.ArrayList; import java.util.List; @@ -138,6 +140,52 @@ public static String GetFloatingClientLibraryVersion() throws LexFloatClientExce throw new LexFloatClientException(status); } + /** + * Gets the host configuration. + * + * @return Returns host configuration. + * @throws LexFloatClientException + * @throws UnsupportedEncodingException + */ + public static HostConfig GetHostConfig() throws LexFloatClientException, UnsupportedEncodingException { + int status; + int bufferSize = 4096; + if (Platform.isWindows()) { + CharBuffer buffer = CharBuffer.allocate(bufferSize); + status = LexFloatClientNative.GetHostConfigInternal(buffer, bufferSize); + if (LF_OK == status) { + String hostConfigJson = buffer.toString().trim(); + if (!hostConfigJson.isEmpty()) { + HostConfig hostConfig = null; + ObjectMapper objectMapper = new ObjectMapper(); + try { + hostConfig = objectMapper.readValue(hostConfigJson, HostConfig.class); + } catch (JsonProcessingException e) {} + return hostConfig; + } else { + return null; + } + } + } else { + ByteBuffer buffer = ByteBuffer.allocate(bufferSize); + status = LexFloatClientNative.GetHostConfigInternal(buffer, bufferSize); + if (LF_OK == status) { + String hostConfigJson = new String(buffer.array(), "UTF-8").trim(); + if (!hostConfigJson.isEmpty()) { + HostConfig hostConfig = null; + ObjectMapper objectMapper = new ObjectMapper(); + try { + hostConfig = objectMapper.readValue(hostConfigJson, HostConfig.class); + } catch (JsonProcessingException e) {} + return hostConfig; + } else { + return null; + } + } + } + throw new LexFloatClientException(status); + } + /** * Gets the product version name. * diff --git a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClientNative.java b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClientNative.java index 90cd0e3..b1760ca 100644 --- a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClientNative.java +++ b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClientNative.java @@ -35,6 +35,10 @@ public interface CallbackType extends Callback { public static native int SetFloatingClientMetadata(WString key, WString value); + public static native int GetHostConfigInternal(ByteBuffer hostConfig, int length); + + public static native int GetHostConfigInternal(CharBuffer hostConfig, int length); + public static native int GetFloatingClientLibraryVersion(ByteBuffer libraryVersion, int length); public static native int GetFloatingClientLibraryVersion(CharBuffer libraryVersion, int length); From be591de83c16a0c1ded2b822fdac990ebf212299 Mon Sep 17 00:00:00 2001 From: muneebkq Date: Fri, 2 Aug 2024 18:25:59 +0530 Subject: [PATCH 2/3] refactor: jsdoc --- src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java index feeef53..14c8801 100644 --- a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java +++ b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java @@ -142,7 +142,8 @@ public static String GetFloatingClientLibraryVersion() throws LexFloatClientExce /** * Gets the host configuration. - * + * This function sends a network request to LexFloatServer to get the configuration details. + * @return Returns host configuration. * @throws LexFloatClientException * @throws UnsupportedEncodingException From 71c898de96c0f9c0aa124523f2a306195f351da5 Mon Sep 17 00:00:00 2001 From: muneebkq Date: Tue, 6 Aug 2024 11:40:37 +0530 Subject: [PATCH 3/3] fix: change buffer size from 4096->1024 --- src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java index 95e52a4..be75929 100644 --- a/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java +++ b/src/main/java/com/cryptlex/lexfloatclient/LexFloatClient.java @@ -168,7 +168,7 @@ public static String GetFloatingClientLibraryVersion() throws LexFloatClientExce */ public static HostConfig GetHostConfig() throws LexFloatClientException, UnsupportedEncodingException { int status; - int bufferSize = 4096; + int bufferSize = 1024; if (Platform.isWindows()) { CharBuffer buffer = CharBuffer.allocate(bufferSize); status = LexFloatClientNative.GetHostConfigInternal(buffer, bufferSize);