open62541 / open62541

Open source implementation of OPC UA (OPC Unified Architecture) aka IEC 62541 licensed under Mozilla Public License v2.0
http://open62541.org
Mozilla Public License 2.0
2.57k stars 1.23k forks source link

OPCUA PubSub over AMQP #3849

Open waheedejaz opened 4 years ago

waheedejaz commented 4 years ago

Description

Add support for AMQP transport

Background Information / Reproduction Steps

Using Qpid Proton lib c https://github.com/apache/qpid-proton/tree/master/c

Used CMake options:

cmake -DUA_NAMESPACE_ZERO=<YOUR_OPTION> <ANY_OTHER_OPTIONS> ..

Checklist

Please provide the following information:

waheedejaz commented 4 years ago

Please give an early review. The AMQP publish example works with broker example in qpid proton lib proton/c/examples/broker.

The build system is temporarily modified to link the proton lib as it doesn't build successfully as an object library owing to all the warnings enabled in the open62541 build system.

jackybek commented 3 years ago

Hi, I am trying to evaluate .. but when i download the qpid-proton-cpp tar file, there are only 2 files. a. libqpid-proton-cpp.so.12.0.0 b. libqpid-proton-cpp.so.12

Seemed that libqpid-proton-cpp.a is missing. I am getting the following link errors:

... /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference to pn_data_get_binary' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference topni_message_get_extra' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference to pn_condition_copy' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference topn_message_set_content_type' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference to pn_message_is_durable' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference topn_message_get_correlation_id' /usr/bin/ld: //usr/local/lib/libqpid-proton-cpp.so: undefined reference to `pn_ssl_domain_free' ...

Seemed that it is looking for proton lib functions..

During the installation process, i already did the following:

  1. sudo ldconfig -v
  2. update /etc/environment to include the path
  3. source /etc/environment and confirm that the libraries are loaded

The only thing i suspect is the missing <.a> file that normally comes together with the <.so> file ... can you advise? Thanks.

jackybek commented 3 years ago

solve partially by indicating -Lqpid-proton-cpp in gcc the errors are reduced to :

/usr/bin/ld: /tmp/ccXTNbuu.o: in function _write': /home/pi/OPCUAProject/ua_amqp_adaptor.c:32: undefined reference topn_connection_driver_write_buffer' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:42: undefined reference to pn_connection_driver_write_done' /usr/bin/ld: /tmp/ccXTNbuu.o: in function_read': /home/pi/OPCUAProject/ua_amqp_adaptor.c:59: undefined reference to pn_connection_driver_read_buffer' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:67: undefined reference topn_connection_driver_read_done' /usr/bin/ld: /tmp/ccXTNbuu.o: in function UA_AmqpDisconnect': /home/pi/OPCUAProject/ua_amqp_adaptor.c:81: undefined reference topn_connection_close' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:84: undefined reference to pn_message_error' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:84: undefined reference topn_error_text' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:87: undefined reference to pn_collector_free' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:88: undefined reference topn_connection_driver_close' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:89: undefined reference to pn_connection_driver_destroy' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:92: undefined reference topn_message_free' /usr/bin/ld: /tmp/ccXTNbuu.o: in function UA_AmqpConnect': /home/pi/OPCUAProject/ua_amqp_adaptor.c:107: undefined reference topn_connection_driver_init' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:112: undefined reference to pn_connection_open' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:115: undefined reference topn_session' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:116: undefined reference to pn_session_open' /usr/bin/ld: /tmp/ccXTNbuu.o: in functionpublishAmqp': /home/pi/OPCUAProject/ua_amqp_adaptor.c:168: undefined reference to pn_sender' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:172: undefined reference topn_link_target' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:172: undefined reference to pn_terminus_set_address' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:173: undefined reference topn_link_open' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:175: undefined reference to pn_message' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:192: undefined reference topn_link_credit' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:199: undefined reference to pn_dtag' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:199: undefined reference topn_delivery' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:204: undefined reference to pn_message_clear' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:205: undefined reference topn_message_body' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:207: undefined reference to pn_message_id' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:207: undefined reference topn_data_put_int' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:208: undefined reference to pn_data_put_map' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:209: undefined reference topn_data_enter' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:210: undefined reference to pn_bytes' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:210: undefined reference topn_data_put_string' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:211: undefined reference to pn_data_put_int' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:212: undefined reference topn_data_exit' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:213: undefined reference to pn_message_send' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:216: undefined reference topn_message_error' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:216: undefined reference to pn_error_text' /usr/bin/ld: /tmp/ccXTNbuu.o: in function__handle': /home/pi/OPCUAProject/ua_amqp_adaptor.c:251: undefined reference to pn_event_type' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:258: undefined reference topn_event_link' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:260: undefined reference to pn_link_is_sender' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:262: undefined reference topn_event_delivery' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:263: undefined reference to pn_delivery_remote_state' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:267: undefined reference topn_event_delivery' /usr/bin/ld: /tmp/ccXTNbuu.o: in function yieldAmqp': /home/pi/OPCUAProject/ua_amqp_adaptor.c:303: undefined reference topn_connection_driver_next_event' /usr/bin/ld: /home/pi/OPCUAProject/ua_amqp_adaptor.c:304: undefined reference to `pn_connection_driver_next_event' collect2: error: ld returned 1 exit status