Author: fadams
Date: Tue Sep 16 19:00:14 2014
New Revision: 1625355
URL: http://svn.apache.org/r1625355
Log:
Export the proton version numbers to JavaScript via the bindings
Modified:
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/CMakeLists.txt
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding-close.js
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding.c
Modified:
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/CMakeLists.txt
URL:
http://svn.apache.org/viewvc/qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/CMakeLists.txt?rev=1625355&r1=1625354&r2=1625355&view=diff
==============================================================================
---
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/CMakeLists.txt
(original)
+++
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/CMakeLists.txt
Tue Sep 16 19:00:14 2014
@@ -103,16 +103,6 @@ set(COMPILE_WARNING_FLAGS "-Werror -Wall
# from a Windows platform
set(PLATFORM_DEFINITIONS
"USE_CLOCK_GETTIME;USE_UUID_GENERATE;USE_STRERROR_R;USE_ATOLL")
-# TODO temporary messages - remove.
-message(STATUS "COMPILE_WARNING_FLAGS: ${COMPILE_WARNING_FLAGS}")
-message(STATUS "PLATFORM_DEFINITIONS: ${PLATFORM_DEFINITIONS}")
-message(STATUS "UUID_LIB: ${UUID_LIB}")
-message(STATUS "SSL_LIB: ${SSL_LIB}")
-message(STATUS "TIME_LIB: ${TIME_LIB}")
-message(STATUS "PLATFORM_LIBS: ${PLATFORM_LIBS}") # can be empty for emscripten
-
-
-
# The following is largely a copy from the the main proton-c/CMakeLists.txt.
# The main difference is prefixing paths with ${PN_PATH}/ as we can't use a
# relative path from this CMakeLists.txt.
@@ -221,7 +211,7 @@ set_target_properties(
# fiddly with node.js packages. This behaviour might be reinstated if the
# packaging mechanism improves.
- LINK_FLAGS "-s \"EXPORT_NAME='proton'\" -s
\"WEBSOCKET_SUBPROTOCOL='AMQPWSB10'\" ${EMSCRIPTEN_LINK_OPTIMISATIONS}
--memory-init-file 0 --pre-js ${CMAKE_CURRENT_SOURCE_DIR}/binding-open.js
--pre-js ${CMAKE_CURRENT_SOURCE_DIR}/module.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/error.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/messenger.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/subscription.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/message.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-uuid.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-symbol.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-described.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-array.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-typed-number.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-long.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-binary.js --post-js
${CMAKE_CURRENT_SOURCE_DIR}/binding-close.js -s
DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=\"[]\" -s EXPORTED_FUNCTIONS=\"['_pn_bytes',
'_pn_error_tex
t', '_pn_code', '_pn_messenger', '_pn_messenger_name',
'_pn_messenger_set_blocking', '_pn_messenger_free', '_pn_messenger_errno',
'_pn_messenger_error', '_pn_messenger_get_outgoing_window',
'_pn_messenger_set_outgoing_window', '_pn_messenger_get_incoming_window',
'_pn_messenger_set_incoming_window', '_pn_messenger_start',
'_pn_messenger_stop', '_pn_messenger_stopped', '_pn_messenger_subscribe',
'_pn_messenger_put', '_pn_messenger_status', '_pn_messenger_buffered',
'_pn_messenger_settle', '_pn_messenger_outgoing_tracker', '_pn_messenger_work',
'_pn_messenger_recv', '_pn_messenger_receiving', '_pn_messenger_get',
'_pn_messenger_incoming_tracker', '_pn_messenger_incoming_subscription',
'_pn_messenger_accept', '_pn_messenger_reject', '_pn_messenger_outgoing',
'_pn_messenger_incoming', '_pn_messenger_route', '_pn_messenger_rewrite',
'_pn_subscription_get_context', '_pn_subscription_set_context',
'_pn_subscription_address', '_pn_message', '_pn_message_id',
'_pn_message_correlation_id', '
_pn_message_free', '_pn_message_errno', '_pn_message_error',
'_pn_message_clear', '_pn_message_is_inferred', '_pn_message_set_inferred',
'_pn_message_is_durable', '_pn_message_set_durable',
'_pn_message_get_priority', '_pn_message_set_priority', '_pn_message_get_ttl',
'_pn_message_set_ttl', '_pn_message_is_first_acquirer',
'_pn_message_set_first_acquirer', '_pn_message_get_delivery_count',
'_pn_message_set_delivery_count', '_pn_message_get_user_id',
'_pn_message_set_user_id', '_pn_message_get_address',
'_pn_message_set_address', '_pn_message_get_subject',
'_pn_message_set_subject', '_pn_message_get_reply_to',
'_pn_message_set_reply_to', '_pn_message_get_content_type',
'_pn_message_set_content_type', '_pn_message_get_content_encoding',
'_pn_message_set_content_encoding', '_pn_message_get_expiry_time',
'_pn_message_set_expiry_time', '_pn_message_get_creation_time',
'_pn_message_set_creation_time', '_pn_message_get_group_id',
'_pn_message_set_group_id', '_pn_message_get_group_sequence'
, '_pn_message_set_group_sequence', '_pn_message_get_reply_to_group_id',
'_pn_message_set_reply_to_group_id', '_pn_message_encode',
'_pn_message_decode', '_pn_message_instructions', '_pn_message_annotations',
'_pn_message_properties', '_pn_message_body', '_pn_data', '_pn_data_free',
'_pn_data_error', '_pn_data_errno', '_pn_data_clear', '_pn_data_rewind',
'_pn_data_next', '_pn_data_prev', '_pn_data_enter', '_pn_data_exit',
'_pn_data_lookup', '_pn_data_narrow', '_pn_data_widen', '_pn_data_type',
'_pn_data_encode', '_pn_data_decode', '_pn_data_put_list', '_pn_data_put_map',
'_pn_data_put_array', '_pn_data_put_described', '_pn_data_put_null',
'_pn_data_put_bool', '_pn_data_put_ubyte', '_pn_data_put_byte',
'_pn_data_put_ushort', '_pn_data_put_short', '_pn_data_put_uint',
'_pn_data_put_int', '_pn_data_put_char', '_pn_data_put_ulong',
'_pn_data_put_long', '_pn_data_put_timestamp', '_pn_data_put_float',
'_pn_data_put_double', '_pn_data_put_decimal32', '_pn_data_put_decimal64',
'_pn_data_put
_decimal128', '_pn_data_put_uuid', '_pn_data_put_binary',
'_pn_data_put_string', '_pn_data_put_symbol', '_pn_data_get_list',
'_pn_data_get_map', '_pn_data_get_array', '_pn_data_is_array_described',
'_pn_data_get_array_type', '_pn_data_is_described', '_pn_data_is_null',
'_pn_data_get_bool', '_pn_data_get_ubyte', '_pn_data_get_byte',
'_pn_data_get_ushort', '_pn_data_get_short', '_pn_data_get_uint',
'_pn_data_get_int', '_pn_data_get_char', '_pn_data_get_ulong',
'_pn_data_get_long', '_pn_data_get_timestamp', '_pn_data_get_float',
'_pn_data_get_double', '_pn_data_get_decimal32', '_pn_data_get_decimal64',
'_pn_data_get_decimal128', '_pn_data_get_uuid', '_pn_data_get_binary',
'_pn_data_get_string', '_pn_data_get_symbol', '_pn_data_copy',
'_pn_data_format', '_pn_data_dump']\""
+ LINK_FLAGS "-s \"EXPORT_NAME='proton'\" -s
\"WEBSOCKET_SUBPROTOCOL='AMQPWSB10'\" ${EMSCRIPTEN_LINK_OPTIMISATIONS}
--memory-init-file 0 --pre-js ${CMAKE_CURRENT_SOURCE_DIR}/binding-open.js
--pre-js ${CMAKE_CURRENT_SOURCE_DIR}/module.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/error.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/messenger.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/subscription.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/message.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-uuid.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-symbol.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-described.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-array.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-typed-number.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-long.js --pre-js
${CMAKE_CURRENT_SOURCE_DIR}/data-binary.js --post-js
${CMAKE_CURRENT_SOURCE_DIR}/binding-close.js -s
DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=\"[]\" -s
EXPORTED_FUNCTIONS=\"['_pn_get_version_major', '_
pn_get_version_minor', '_pn_bytes', '_pn_error_text', '_pn_code',
'_pn_messenger', '_pn_messenger_name', '_pn_messenger_set_blocking',
'_pn_messenger_free', '_pn_messenger_errno', '_pn_messenger_error',
'_pn_messenger_get_outgoing_window', '_pn_messenger_set_outgoing_window',
'_pn_messenger_get_incoming_window', '_pn_messenger_set_incoming_window',
'_pn_messenger_start', '_pn_messenger_stop', '_pn_messenger_stopped',
'_pn_messenger_subscribe', '_pn_messenger_put', '_pn_messenger_status',
'_pn_messenger_buffered', '_pn_messenger_settle',
'_pn_messenger_outgoing_tracker', '_pn_messenger_work', '_pn_messenger_recv',
'_pn_messenger_receiving', '_pn_messenger_get',
'_pn_messenger_incoming_tracker', '_pn_messenger_incoming_subscription',
'_pn_messenger_accept', '_pn_messenger_reject', '_pn_messenger_outgoing',
'_pn_messenger_incoming', '_pn_messenger_route', '_pn_messenger_rewrite',
'_pn_subscription_get_context', '_pn_subscription_set_context',
'_pn_subscription_address', '_pn_message',
'_pn_message_id', '_pn_message_correlation_id', '_pn_message_free',
'_pn_message_errno', '_pn_message_error', '_pn_message_clear',
'_pn_message_is_inferred', '_pn_message_set_inferred',
'_pn_message_is_durable', '_pn_message_set_durable',
'_pn_message_get_priority', '_pn_message_set_priority', '_pn_message_get_ttl',
'_pn_message_set_ttl', '_pn_message_is_first_acquirer',
'_pn_message_set_first_acquirer', '_pn_message_get_delivery_count',
'_pn_message_set_delivery_count', '_pn_message_get_user_id',
'_pn_message_set_user_id', '_pn_message_get_address',
'_pn_message_set_address', '_pn_message_get_subject',
'_pn_message_set_subject', '_pn_message_get_reply_to',
'_pn_message_set_reply_to', '_pn_message_get_content_type',
'_pn_message_set_content_type', '_pn_message_get_content_encoding',
'_pn_message_set_content_encoding', '_pn_message_get_expiry_time',
'_pn_message_set_expiry_time', '_pn_message_get_creation_time',
'_pn_message_set_creation_time', '_pn_message_get_group_id', '_pn_messa
ge_set_group_id', '_pn_message_get_group_sequence',
'_pn_message_set_group_sequence', '_pn_message_get_reply_to_group_id',
'_pn_message_set_reply_to_group_id', '_pn_message_encode',
'_pn_message_decode', '_pn_message_instructions', '_pn_message_annotations',
'_pn_message_properties', '_pn_message_body', '_pn_data', '_pn_data_free',
'_pn_data_error', '_pn_data_errno', '_pn_data_clear', '_pn_data_rewind',
'_pn_data_next', '_pn_data_prev', '_pn_data_enter', '_pn_data_exit',
'_pn_data_lookup', '_pn_data_narrow', '_pn_data_widen', '_pn_data_type',
'_pn_data_encode', '_pn_data_decode', '_pn_data_put_list', '_pn_data_put_map',
'_pn_data_put_array', '_pn_data_put_described', '_pn_data_put_null',
'_pn_data_put_bool', '_pn_data_put_ubyte', '_pn_data_put_byte',
'_pn_data_put_ushort', '_pn_data_put_short', '_pn_data_put_uint',
'_pn_data_put_int', '_pn_data_put_char', '_pn_data_put_ulong',
'_pn_data_put_long', '_pn_data_put_timestamp', '_pn_data_put_float',
'_pn_data_put_double', '_pn_data_put_d
ecimal32', '_pn_data_put_decimal64', '_pn_data_put_decimal128',
'_pn_data_put_uuid', '_pn_data_put_binary', '_pn_data_put_string',
'_pn_data_put_symbol', '_pn_data_get_list', '_pn_data_get_map',
'_pn_data_get_array', '_pn_data_is_array_described', '_pn_data_get_array_type',
'_pn_data_is_described', '_pn_data_is_null', '_pn_data_get_bool',
'_pn_data_get_ubyte', '_pn_data_get_byte', '_pn_data_get_ushort',
'_pn_data_get_short', '_pn_data_get_uint', '_pn_data_get_int',
'_pn_data_get_char', '_pn_data_get_ulong', '_pn_data_get_long',
'_pn_data_get_timestamp', '_pn_data_get_float', '_pn_data_get_double',
'_pn_data_get_decimal32', '_pn_data_get_decimal64', '_pn_data_get_decimal128',
'_pn_data_get_uuid', '_pn_data_get_binary', '_pn_data_get_string',
'_pn_data_get_symbol', '_pn_data_copy', '_pn_data_format', '_pn_data_dump']\""
)
# This command packages up the compiled proton.js into a node.js package called
@@ -271,6 +261,5 @@ if (NODE_JSDOC_FOUND)
${CMAKE_CURRENT_SOURCE_DIR}/data-long.js
${CMAKE_CURRENT_SOURCE_DIR}/data-binary.js)
add_dependencies(docs docs-js)
-
endif (NODE_JSDOC_FOUND)
Modified:
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding-close.js
URL:
http://svn.apache.org/viewvc/qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding-close.js?rev=1625355&r1=1625354&r2=1625355&view=diff
==============================================================================
---
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding-close.js
(original)
+++
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding-close.js
Tue Sep 16 19:00:14 2014
@@ -18,4 +18,10 @@
*
*/
+// These values are essentially constants sitting in the proton namespace.
+// We have to set them after pn_get_version_major/pn_get_version_minor have
been
+// defined so we must do it here in binding-close.js as it's a --post-js block.
+Module['VERSION_MAJOR'] = _pn_get_version_major();
+Module['VERSION_MINOR'] = _pn_get_version_minor();
+
})(); // End of self calling lambda used to wrap library.
Modified:
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding.c
URL:
http://svn.apache.org/viewvc/qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding.c?rev=1625355&r1=1625354&r2=1625355&view=diff
==============================================================================
---
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding.c
(original)
+++
qpid/proton/branches/fadams-javascript-binding/proton-c/bindings/javascript/binding.c
Tue Sep 16 19:00:14 2014
@@ -1,4 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ * This file is largely just a stub, we're actually creating a JavaScript
library
+ * rather than an executable so most of the work is done at the link stage.
+ * We do however need to link the libqpid-proton-bitcode.so with *something*
and
+ * this is it. This file also provides a way to pass any global variable or
+ * #defined values to the JavaScript binding by providing wrapper functions.
+ */
#include <stdio.h>
-// Just a stub.
+#include <proton/version.h>
+
+// To access #define values in JavaScript we need to wrap them in a function.
+int pn_get_version_major() {return PN_VERSION_MAJOR;}
+int pn_get_version_minor() {return PN_VERSION_MINOR;}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]