|
@@ -4,12 +4,9 @@
|
|
|
|
|
|
#include "ua_server_internal.h"
|
|
#include "ua_server_internal.h"
|
|
#include "ua_services.h"
|
|
#include "ua_services.h"
|
|
-#ifdef UA_ENABLE_NONSTANDARD_STATELESS
|
|
|
|
-#include "ua_types_encoding_binary.h"
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
|
|
|
|
- nodelete. So the value is not deleted. Use with care! */
|
|
+ * nodelete. So the value is not deleted. Use with care! */
|
|
static void
|
|
static void
|
|
forceVariantSetScalar(UA_Variant *v, const void *p, const UA_DataType *t) {
|
|
forceVariantSetScalar(UA_Variant *v, const void *p, const UA_DataType *t) {
|
|
UA_Variant_init(v);
|
|
UA_Variant_init(v);
|
|
@@ -948,47 +945,6 @@ void Service_Read(UA_Server *server, UA_Session *session,
|
|
(UA_ServiceOperation)Operation_Read,
|
|
(UA_ServiceOperation)Operation_Read,
|
|
&request->nodesToReadSize, &UA_TYPES[UA_TYPES_READVALUEID],
|
|
&request->nodesToReadSize, &UA_TYPES[UA_TYPES_READVALUEID],
|
|
&response->resultsSize, &UA_TYPES[UA_TYPES_DATAVALUE]);
|
|
&response->resultsSize, &UA_TYPES[UA_TYPES_DATAVALUE]);
|
|
-
|
|
|
|
-#ifdef UA_ENABLE_NONSTANDARD_STATELESS
|
|
|
|
-
|
|
|
|
- if(session->sessionId.namespaceIndex == 0 &&
|
|
|
|
- session->sessionId.identifierType == UA_NODEIDTYPE_NUMERIC &&
|
|
|
|
- session->sessionId.identifier.numeric == 0) {
|
|
|
|
- UA_ExtensionObject additionalHeader;
|
|
|
|
- UA_ExtensionObject_init(&additionalHeader);
|
|
|
|
- additionalHeader.encoding = UA_EXTENSIONOBJECT_ENCODED_BYTESTRING;
|
|
|
|
- additionalHeader.content.encoded.typeId =UA_TYPES[UA_TYPES_VARIANT].typeId;
|
|
|
|
-
|
|
|
|
- UA_Variant variant;
|
|
|
|
- UA_Variant_init(&variant);
|
|
|
|
-
|
|
|
|
- UA_DateTime* expireArray = NULL;
|
|
|
|
- expireArray = UA_Array_new(request->nodesToReadSize,
|
|
|
|
- &UA_TYPES[UA_TYPES_DATETIME]);
|
|
|
|
- variant.data = expireArray;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- for(UA_UInt32 i = 0;i < response->resultsSize;++i) {
|
|
|
|
- expireArray[i] = UA_DateTime_now() + 20 * 100 * 1000 * 1000;
|
|
|
|
- }
|
|
|
|
- UA_Variant_setArray(&variant, expireArray, request->nodesToReadSize,
|
|
|
|
- &UA_TYPES[UA_TYPES_DATETIME]);
|
|
|
|
-
|
|
|
|
- size_t offset = 0;
|
|
|
|
- UA_ByteString str;
|
|
|
|
- size_t strlength = UA_calcSizeBinary(&variant, &UA_TYPES[UA_TYPES_VARIANT]);
|
|
|
|
- UA_ByteString_allocBuffer(&str, strlength);
|
|
|
|
-
|
|
|
|
- UA_StatusCode retval = UA_encodeBinary(&variant, &UA_TYPES[UA_TYPES_VARIANT],
|
|
|
|
- NULL, NULL, &str, &offset);
|
|
|
|
- UA_Array_delete(expireArray, request->nodesToReadSize, &UA_TYPES[UA_TYPES_DATETIME]);
|
|
|
|
- if(retval == UA_STATUSCODE_GOOD){
|
|
|
|
- additionalHeader.content.encoded.body.data = str.data;
|
|
|
|
- additionalHeader.content.encoded.body.length = offset;
|
|
|
|
- response->responseHeader.additionalHeader = additionalHeader;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
}
|
|
}
|
|
|
|
|
|
UA_DataValue
|
|
UA_DataValue
|