From e59c0a0d71dd905460e9b43e87f28243e7ee37ff Mon Sep 17 00:00:00 2001 From: Jonathan Hollocombe Date: Fri, 13 Dec 2024 15:08:18 +0000 Subject: [PATCH] Making sending BYTES plugin using xdr_opaque an option so that it works with old client. --- source/plugins/bytes/bytesPlugin.cpp | 4 +++- source/plugins/bytes/readBytesNonOptimally.cpp | 8 ++++++-- source/plugins/bytes/readBytesNonOptimally.h | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/plugins/bytes/bytesPlugin.cpp b/source/plugins/bytes/bytesPlugin.cpp index ea83983a..baba5516 100644 --- a/source/plugins/bytes/bytesPlugin.cpp +++ b/source/plugins/bytes/bytesPlugin.cpp @@ -245,6 +245,8 @@ int BytesPlugin::read(IDAM_PLUGIN_INTERFACE* plugin_interface) const char* checksum = nullptr; FIND_STRING_VALUE(plugin_interface->request_data->nameValueList, checksum); + bool opaque = findValue(&plugin_interface->request_data->nameValueList, "opaque"); + char tmp_path[MAXPATH]; StringCopy(tmp_path, path, MAXPATH); UDA_LOG(UDA_LOG_DEBUG, "expand_environment_variables! \n"); @@ -287,7 +289,7 @@ int BytesPlugin::read(IDAM_PLUGIN_INTERFACE* plugin_interface) return err; } - return readBytes(file, data_block, offset, max_bytes, checksum); + return readBytes(file, data_block, offset, max_bytes, checksum, opaque); } int BytesPlugin::size(IDAM_PLUGIN_INTERFACE* plugin_interface) diff --git a/source/plugins/bytes/readBytesNonOptimally.cpp b/source/plugins/bytes/readBytesNonOptimally.cpp index 0c8e64c1..11ff9b90 100755 --- a/source/plugins/bytes/readBytesNonOptimally.cpp +++ b/source/plugins/bytes/readBytesNonOptimally.cpp @@ -40,7 +40,7 @@ #define BYTE_FILE_MD5DIFF 100007 #define BYTE_FILE_READ_ERROR 100008 -int readBytes(FILE* fh, DATA_BLOCK* data_block, int offset, int max_bytes, const std::string& checksum) +int readBytes(FILE* fh, DATA_BLOCK* data_block, int offset, int max_bytes, const std::string& checksum, bool opaque) { int err = 0; @@ -125,7 +125,11 @@ int readBytes(FILE* fh, DATA_BLOCK* data_block, int offset, int max_bytes, const data_block->dims[0].method = 0; data_block->order = -1; // No Dimensions - data_block->data_type = UDA_TYPE_OPAQUE; // pass as raw unmodified bytes + if (opaque) { + data_block->data_type = UDA_TYPE_OPAQUE; // pass as raw unmodified bytes + } else { + data_block->data_type = UDA_TYPE_CHAR; + } return err; } diff --git a/source/plugins/bytes/readBytesNonOptimally.h b/source/plugins/bytes/readBytesNonOptimally.h index ad051702..402fccf6 100755 --- a/source/plugins/bytes/readBytesNonOptimally.h +++ b/source/plugins/bytes/readBytesNonOptimally.h @@ -4,5 +4,5 @@ #include -int readBytes(FILE* file, DATA_BLOCK* data_block, int offset, int max_bytes, const std::string& checksum); +int readBytes(FILE* file, DATA_BLOCK* data_block, int offset, int max_bytes, const std::string& checksum, bool opaque);