Skip to content

Commit

Permalink
try100
Browse files Browse the repository at this point in the history
  • Loading branch information
thomvet committed Nov 20, 2024
1 parent 86a5d7a commit dcb89ac
Showing 1 changed file with 77 additions and 76 deletions.
153 changes: 77 additions & 76 deletions test/client_callmethod.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Check whether calling method nodes via the client works.

using Distributed
using Distributed, Open62541
Distributed.addprocs(1) # Add a single worker process to run the server

Distributed.@everywhere begin
Expand Down Expand Up @@ -39,6 +39,82 @@ function simple_two_in_two_out_mixed_type(name, number)
return (out1, out2)
end

function c1(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_one_in_one_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c2(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_one_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c3(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_one_in_two_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c4(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_two_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c5(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_two_out_mixed_type(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end

#prepare method callbacks
@static if !Sys.isapple() || platform_key_abi().tags["arch"] != "aarch64"
w1 = UA_MethodCallback_wrap(simple_one_in_one_out)
Expand All @@ -52,81 +128,6 @@ end
m4 = UA_MethodCallback_generate(w4)
m5 = UA_MethodCallback_generate(w5)
else #we are on Apple Silicon and can't use a closure in @cfunction, have to do MUCH more work.
function c1(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_one_in_one_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c2(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_one_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c3(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_one_in_two_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c4(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_two_out(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
function c5(server, sessionId, sessionHandle, methodId, methodContext, objectId,
objectContext, inputSize, input, outputSize, output)
arr_input = UA_Array(input, Int64(inputSize))
arr_output = UA_Array(output, Int64(outputSize))
input_julia = __get_juliavalues_from_variant.(arr_input, Any)
output_julia = simple_two_in_two_out_mixed_type(input_julia...)
if !isa(output_julia, Tuple)
output_julia = (output_julia,)
end
for i in 1:outputSize
j = JUA_Variant(output_julia[i])
UA_Variant_copy(Open62541.Jpointer(j), arr_output[i])
end
return UA_STATUSCODE_GOOD
end
m1 = @cfunction(c1, UA_StatusCode,
(Ptr{UA_Server}, Ptr{UA_NodeId}, Ptr{Cvoid},
Ptr{UA_NodeId}, Ptr{Cvoid}, Ptr{UA_NodeId}, Ptr{Cvoid},
Expand Down

0 comments on commit dcb89ac

Please sign in to comment.