From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../thrift/tutorial/nodejs/Makefile.am | 45 ++++++++++++ .../thrift/tutorial/nodejs/NodeClient.js | 77 ++++++++++++++++++++ .../thrift/tutorial/nodejs/NodeClientPromise.js | 80 +++++++++++++++++++++ .../thrift/tutorial/nodejs/NodeServer.js | 84 ++++++++++++++++++++++ .../thrift/tutorial/nodejs/NodeServerPromise.js | 80 +++++++++++++++++++++ 5 files changed, 366 insertions(+) create mode 100644 src/jaegertracing/thrift/tutorial/nodejs/Makefile.am create mode 100644 src/jaegertracing/thrift/tutorial/nodejs/NodeClient.js create mode 100644 src/jaegertracing/thrift/tutorial/nodejs/NodeClientPromise.js create mode 100644 src/jaegertracing/thrift/tutorial/nodejs/NodeServer.js create mode 100644 src/jaegertracing/thrift/tutorial/nodejs/NodeServerPromise.js (limited to 'src/jaegertracing/thrift/tutorial/nodejs') diff --git a/src/jaegertracing/thrift/tutorial/nodejs/Makefile.am b/src/jaegertracing/thrift/tutorial/nodejs/Makefile.am new file mode 100644 index 000000000..1516fec2c --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/nodejs/Makefile.am @@ -0,0 +1,45 @@ +# +# 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. +# + +gen-nodejs/Calculator.js gen-nodejs/SharedService.js: $(top_srcdir)/tutorial/tutorial.thrift + $(THRIFT) --gen js:node -r $< + +all-local: gen-nodejs/Calculator.js + +tutorialserver: all + NODE_PATH="$(top_builddir)/lib/nodejs:$(top_builddir)/lib/nodejs/lib:$(NODEPATH)" $(NODEJS) NodeServer.js + +tutorialclient: all + NODE_PATH="$(top_builddir)/lib/nodejs:$(top_builddir)/lib/nodejs/lib:$(NODEPATH)" $(NODEJS) NodeClient.js + +tutorialserver_promise: all + NODE_PATH="$(top_builddir)/lib/nodejs:$(top_builddir)/lib/nodejs/lib:$(NODEPATH)" $(NODEJS) NodeServerPromise.js + +tutorialclient_promise: all + NODE_PATH="$(top_builddir)/lib/nodejs:$(top_builddir)/lib/nodejs/lib:$(NODEPATH)" $(NODEJS) NodeClientPromise.js + + +clean-local: + $(RM) -r gen-* + +EXTRA_DIST = \ + NodeServer.js \ + NodeClient.js \ + NodeServerPromise.js \ + NodeClientPromise.js diff --git a/src/jaegertracing/thrift/tutorial/nodejs/NodeClient.js b/src/jaegertracing/thrift/tutorial/nodejs/NodeClient.js new file mode 100644 index 000000000..b4886e826 --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/nodejs/NodeClient.js @@ -0,0 +1,77 @@ +/* + * 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. + */ + +var thrift = require('thrift'); +var Calculator = require('./gen-nodejs/Calculator'); +var ttypes = require('./gen-nodejs/tutorial_types'); +const assert = require('assert'); + +var transport = thrift.TBufferedTransport; +var protocol = thrift.TBinaryProtocol; + +var connection = thrift.createConnection("localhost", 9090, { + transport : transport, + protocol : protocol +}); + +connection.on('error', function(err) { + assert(false, err); +}); + +// Create a Calculator client with the connection +var client = thrift.createClient(Calculator, connection); + + +client.ping(function(err, response) { + console.log('ping()'); +}); + + +client.add(1,1, function(err, response) { + console.log("1+1=" + response); +}); + + +work = new ttypes.Work(); +work.op = ttypes.Operation.DIVIDE; +work.num1 = 1; +work.num2 = 0; + +client.calculate(1, work, function(err, message) { + if (err) { + console.log("InvalidOperation " + err); + } else { + console.log('Whoa? You know how to divide by zero?'); + } +}); + +work.op = ttypes.Operation.SUBTRACT; +work.num1 = 15; +work.num2 = 10; + +client.calculate(1, work, function(err, message) { + console.log('15-10=' + message); + + client.getStruct(1, function(err, message){ + console.log('Check log: ' + message.value); + + //close the connection once we're done + connection.end(); + }); +}); diff --git a/src/jaegertracing/thrift/tutorial/nodejs/NodeClientPromise.js b/src/jaegertracing/thrift/tutorial/nodejs/NodeClientPromise.js new file mode 100644 index 000000000..2cdc184f9 --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/nodejs/NodeClientPromise.js @@ -0,0 +1,80 @@ +/* + * 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. + */ + +var thrift = require('thrift'); +var Calculator = require('./gen-nodejs/Calculator'); +var ttypes = require('./gen-nodejs/tutorial_types'); +const assert = require('assert'); + +var transport = thrift.TBufferedTransport; +var protocol = thrift.TBinaryProtocol; + +var connection = thrift.createConnection("localhost", 9090, { + transport : transport, + protocol : protocol +}); + +connection.on('error', function(err) { + assert(false, err); +}); + +// Create a Calculator client with the connection +var client = thrift.createClient(Calculator, connection); + + +client.ping() + .then(function() { + console.log('ping()'); + }); + +client.add(1,1) + .then(function(response) { + console.log("1+1=" + response); + }); + +work = new ttypes.Work(); +work.op = ttypes.Operation.DIVIDE; +work.num1 = 1; +work.num2 = 0; + +client.calculate(1, work) + .then(function(message) { + console.log('Whoa? You know how to divide by zero?'); + }) + .fail(function(err) { + console.log("InvalidOperation " + err); + }); + + +work.op = ttypes.Operation.SUBTRACT; +work.num1 = 15; +work.num2 = 10; + +client.calculate(1, work) + .then(function(value) { + console.log('15-10=' + value); + return client.getStruct(1); + }) + .then(function(message) { + console.log('Check log: ' + message.value); + }) + .fin(function() { + //close the connection once we're done + connection.end(); + }); diff --git a/src/jaegertracing/thrift/tutorial/nodejs/NodeServer.js b/src/jaegertracing/thrift/tutorial/nodejs/NodeServer.js new file mode 100644 index 000000000..2e198825c --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/nodejs/NodeServer.js @@ -0,0 +1,84 @@ +/* + * 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. + */ + +var thrift = require("thrift"); +var Calculator = require("./gen-nodejs/Calculator"); +var ttypes = require("./gen-nodejs/tutorial_types"); +var SharedStruct = require("./gen-nodejs/shared_types").SharedStruct; + +var data = {}; + +var server = thrift.createServer(Calculator, { + ping: function(result) { + console.log("ping()"); + result(null); + }, + + add: function(n1, n2, result) { + console.log("add(", n1, ",", n2, ")"); + result(null, n1 + n2); + }, + + calculate: function(logid, work, result) { + console.log("calculate(", logid, ",", work, ")"); + + var val = 0; + if (work.op == ttypes.Operation.ADD) { + val = work.num1 + work.num2; + } else if (work.op === ttypes.Operation.SUBTRACT) { + val = work.num1 - work.num2; + } else if (work.op === ttypes.Operation.MULTIPLY) { + val = work.num1 * work.num2; + } else if (work.op === ttypes.Operation.DIVIDE) { + if (work.num2 === 0) { + var x = new ttypes.InvalidOperation(); + x.whatOp = work.op; + x.why = 'Cannot divide by 0'; + result(x); + return; + } + val = work.num1 / work.num2; + } else { + var x = new ttypes.InvalidOperation(); + x.whatOp = work.op; + x.why = 'Invalid operation'; + result(x); + return; + } + + var entry = new SharedStruct(); + entry.key = logid; + entry.value = ""+val; + data[logid] = entry; + + result(null, val); + }, + + getStruct: function(key, result) { + console.log("getStruct(", key, ")"); + result(null, data[key]); + }, + + zip: function() { + console.log("zip()"); + } + +}); + +server.listen(9090); diff --git a/src/jaegertracing/thrift/tutorial/nodejs/NodeServerPromise.js b/src/jaegertracing/thrift/tutorial/nodejs/NodeServerPromise.js new file mode 100644 index 000000000..bff287b18 --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/nodejs/NodeServerPromise.js @@ -0,0 +1,80 @@ +/* + * 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. + */ + +var thrift = require("thrift"); +var Calculator = require("./gen-nodejs/Calculator"); +var ttypes = require("./gen-nodejs/tutorial_types"); +var SharedStruct = require("./gen-nodejs/shared_types").SharedStruct; + +var data = {}; + +var server = thrift.createServer(Calculator, { + ping: function() { + console.log("ping()"); + }, + + add: function(n1, n2) { + console.log("add(", n1, ",", n2, ")"); + return n1 + n2; + }, + + calculate: function(logid, work) { + console.log("calculate(", logid, ",", work, ")"); + + var val = 0; + if (work.op == ttypes.Operation.ADD) { + val = work.num1 + work.num2; + } else if (work.op === ttypes.Operation.SUBTRACT) { + val = work.num1 - work.num2; + } else if (work.op === ttypes.Operation.MULTIPLY) { + val = work.num1 * work.num2; + } else if (work.op === ttypes.Operation.DIVIDE) { + if (work.num2 === 0) { + var x = new ttypes.InvalidOperation(); + x.whatOp = work.op; + x.why = 'Cannot divide by 0'; + throw x; + } + val = work.num1 / work.num2; + } else { + var x = new ttypes.InvalidOperation(); + x.whatOp = work.op; + x.why = 'Invalid operation'; + throw x; + } + + var entry = new SharedStruct(); + entry.key = logid; + entry.value = ""+val; + data[logid] = entry; + return val; + }, + + getStruct: function(key) { + console.log("getStruct(", key, ")"); + return data[key]; + }, + + zip: function() { + console.log("zip()"); + } + +}); + +server.listen(9090); -- cgit v1.2.3