Revision history for Perl extension OPCUA::Open62541.
0.014
- Server build info is copied to return value and uses regular
typemap clear.
- The NULL string and NULL byte string is unpacked from undef.
Perl undef has a meaning different from "" and is represented
in the open62541 objects.
- Use Test::Strict to check all Perl source files. This is a
new test dependency.
- Generate all client read XS wrapper functions with a script.
This includes the regular and async methods and the callback
with the matching return value for each type. The
readDataTypeAttribute functions are implemented manually as
they have to convert NodeId to DataType before providing the
output value.
- Memory management for all input and output parameter is done
in the typemap. Except for DESTROY destructors the XS functions
do not call clear() or delete() anymore.
- Better error message for missing mandatory parameter.
- The typemap identifies the reqId parameter as optional
output parameter by its new name outoptReqId.
- Implement client sendAsyncBrowseNextRequest().
- Code scanner cppcheck passes with C code generated from XS.
- Test server setup_complex_objects() method can handle name
space, access level, and got various other improvements.
- An empty UA_Variant is now represented as an empty Perl hash.
- The open62541 parameters of the XS functions are allocated
in the typemap and stored as mortal Perl objects. Now Perl
is responsible to free them. The open62541 objects are deleted
in the Perl destructor. The XS wrapper functions do not have
to care about calling clear() or delete() anymore.
- Server add node functions fill output parameter outNewNodeId
as hash.
- Parameter passing to XS functions is stricter. The typemap
does all the checks at a central place.
- Add more than 100 test cases for all possible typemap
conversions of the input paramteter.
- Test Unicode conversions in XS packed functions, Perl hashes,
and YAML output. YAML::Tiny is a new test dependency.
- In the XS functions the open62541 output value has to be
cleared after converting it to an SV. This fixes a memory
leak.
- In the XS functions the temporary open62541 parameter objects
have to be cleared before return. This fixes a memory leak.
- Setting scalars or arrays in a variant passes the reponsibility
for memory lifetime to the open62541 library.
- Memory for strings and byte strings is allocated dynamically.
Reusing the Perl data does not allow sane lifetime management.
- The unpack conversions use UA_Array_new() instead of calloc(3)
to construct arrays.
- Remove LocalizedText new() constructor, it was never used.
0.013 2020-05-01
- Remove Makefile from MANIFEST and skip it.
[rt.cpan.org #132463] No rule to make target
0.012 2020-04-30
- Fix signal race in test server.
- Use test server planning_nofork() to compute test numbers
of non-forking server tests.
- Implement server browse(), deleteNode(), addReference(),
deleteReference().
- Improve test client usability.
- Use the github continuous integration framework to build the
module and run tests on a Ubuntu VM.
- In client-connect-async test, skip the subtests that trigger
an freeaddrinfo bug of open62541. The bug is fixed in the
OpenBSD port, the test is skipped elsewhere.
- Implement server getBuildInfo().
- Implement server addNamespace().
- Plug memleak in variant setScalar() and setArray().
- Make error messages in croak consistent.
- The type constants depend on the compile options of open62541.
Do not check in these numbers in Perl files, but generate C
functions that evaluate them during Open62541.xs compile time.
Table with type conversion must not assume that the type
numbers are continuous. This makes the module work with
precompiled open62541 library on GNU/Linux.
- Avoid compiler warnings with GCC.
- Fix test races seen on GNU/Linux.
- Improve test logger diagnostic output.
0.011 2020-04-24
- Test client and server can use a custom log file.
- Improve signal handling in test server.
- Implement test server runtime actions.
- Implement server functions to read and write values:
readValue(), writeValue()
- Implement more server functions to add nodes:
addVariableTypeNode(), addObjectNode(), addObjectTypeNode(),
addViewNode(), addReferenceTypeNode(), addDataTypeNode()
- Implement client function Service_browse().
- Add prefix to QualifiedName hash keys.
0.010 2020-04-20
- Make single stepping the test server actually work.
0.009 2020-04-17
- Embed config and logger struct into client or server. This
avoids malloc() and free() races. The config and logger may
extend the lifetime of client or server.
- No stand alone logger is possible anymore. The Logger->new()
method has been removed from the API.
- After connect_async() the client needs 100 miliseconds before
client run_iterate() may be called. Add some sleeps to test.
- Move C declarations to PREINIT section.
- The test server can single step iterations to trigger timing
races in client tests.
0.008 2020-04-14
- Fix double free in set variant.
- Test cleanup.
- Variant can get and set array type.
- Generate correct version number in OPCUA::Open62541::Constant.
- Add NODECLASS constant.
0.007 2020-04-06
- Fix memory leak in callback_async() and extend leak tests.
The API does not invoke the connect callback in case of error.
This requires special code to track the call data and to free
it during destroy.
- Implement UA_Client_readValueAttribute_async().
- Implement client disconnect_async().
- Add missing functions to pod documentation.
- Test request id of async browse request.
0.006 2020-03-27
- Remove server config clean() function from Perl API.
- To run a test server manually, the timeout can be disabled.
- Use Test::EOL to find trailing whitespace.
- Generate constants from defines and enum in C header file.
- Export constants from OPCUA::Open62541 into namespace.
This breaks the existing API how modules are used and imported.
Especially NS0ID uses underscore and new names are incompatible.
- Place all generated constants into a single Perl module
OPCUA::Open62541::Constant.
0.005 2020-03-12
- Plug memory leaks in connect_async() in sendAsyncBrowseRequest(),
which were found by the tests.
- Allow to iterate client from test framework.
- Croak if wrong output variable type, make API stricter.
- Print log level and category as string with magic variables.
- Write client log files to debug tests.
- Improve leak ckecks in tests.
- Refactor client and server tests.
- Avoid posix signal handler in test server.
- Grep for server startup in server log to avoid races in tests.
- Test server writes log file.
- Implement Logger class.
- Refactor client callback.
- In XS croak() print function name and errno strings.
0.004 2020-02-27
- Use perlcritic and perltidy.
- Test that adding a node in the server and reading its value
from the client works.
- Use an efficient way to export constants in Perl namespace.
- Implement UA_Client_readValueAttribute().
- Use a function jump table for packing all variant types.
- Make this module run on multi threaded Perl by sprinkling dTHX
into the XS file.
- UA_DiscoveryConfiguration and UA_FilterOperand croak when
trying to pack them.
- Implement all missing packed functions for builtin types.
- To test client and server easily, implement
OPCUA::Open62541::Test::Server and OPCUA::Open62541::Test::Client
to handle the other end.
0.003 2020-02-21
- OPCUA::Open62541::sendAsyncBrowseRequest() uses optional output
variable for request id.
- Run static code analyse with cppcheck, remove false positives.
The C code generated by XS is clean.
- Use the generated VariableAttributes packed functions.
- Implement sendAsyncBrowseRequest for client.
- Implement OPCUA::Open62541::Variant->setScalar() and ->getScalar().
- Make status code magic like $! containing number and string.
- Test code with Perl::Critic.
- Auto generate data conversion functions.
- Support optional output parameter for addVariableNode().
- Implement conversion functions for builtin data types.
- Convert Perl hashes to NodeId, QualifiedName, and VariableAttributes.
- Implement asynchronous connections for clients.
0.002 2020-02-14
- Use Devel::CheckLib to ensure open62541 library is available.
- Implement type conversions for setting scalars in variant type.
- Connect client to server.
- Implement client and its config.
0.001 2020-02-12
- Implement basic functions needed to build a simple OPC UA server.
That is "4.2 Building a Simple Server" and "11.2 Server Lifecycle"
from the open62541 1.0.1 library documentation.
- original version; created by h2xs 1.23 with -A -n OPCUA::Open62541