From d6fb4028a6f5aab4a4a3b89fd3b6871e856d732d Mon Sep 17 00:00:00 2001 From: georgweiss Date: Thu, 8 Feb 2024 09:05:33 +0100 Subject: [PATCH] PutRequest update to handle NTTable --- .../java/org/epics/pva/client/PutRequest.java | 19 +++++-------------- .../java/org/epics/pva/data/PVABitSet.java | 3 +-- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/core/pva/src/main/java/org/epics/pva/client/PutRequest.java b/core/pva/src/main/java/org/epics/pva/client/PutRequest.java index 23ee9d4149..cf49e800bb 100644 --- a/core/pva/src/main/java/org/epics/pva/client/PutRequest.java +++ b/core/pva/src/main/java/org/epics/pva/client/PutRequest.java @@ -158,22 +158,13 @@ public void encodeRequest(final byte version, final ByteBuffer buffer) throws Ex } } } - // Set bit for the field to write - changed.set(data.getIndex(field)); - - // Bitset to describe which field we're about to write - //final BitSet changed = new BitSet(); - changed.set(data.getIndex(field)); - if (field instanceof PVAStructure) { - final PVAStructure struct = (PVAStructure) field; - List elements = struct.get(); - if(elements != null){ - for(int i = 0; i < elements.size(); i++){ - changed.set(data.getIndex(elements.get(i))); - } - } + else{ + // Set bit for the field to write + changed.set(data.getIndex(field)); } + logger.log(Level.FINE, () -> "Updated structure elements: " + changed); + PVABitSet.encodeBitSet(changed, buffer); // Write the updated field diff --git a/core/pva/src/main/java/org/epics/pva/data/PVABitSet.java b/core/pva/src/main/java/org/epics/pva/data/PVABitSet.java index 64f2ee6206..28e17094ef 100644 --- a/core/pva/src/main/java/org/epics/pva/data/PVABitSet.java +++ b/core/pva/src/main/java/org/epics/pva/data/PVABitSet.java @@ -22,8 +22,7 @@ public static void encodeBitSet(final BitSet bits, final ByteBuffer buffer) { final byte[] bytes = bits.toByteArray(); PVASize.encodeSize(bytes.length, buffer); - byte[] b = bits.toByteArray(); - buffer.put(b); + buffer.put(bytes); } /** @param buffer Source buffer