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 --- src/jaegertracing/thrift/contrib/Rebus/App.config | 33 ++ src/jaegertracing/thrift/contrib/Rebus/Program.cs | 81 ++++ .../contrib/Rebus/Properties/AssemblyInfo.cs | 38 ++ src/jaegertracing/thrift/contrib/Rebus/README.md | 21 + .../thrift/contrib/Rebus/RebusSample.csproj | 102 +++++ .../thrift/contrib/Rebus/RebusSample.sln | 28 ++ .../thrift/contrib/Rebus/ServiceImpl/Both.cs | 35 ++ .../thrift/contrib/Rebus/ServiceImpl/Client.cs | 157 +++++++ .../thrift/contrib/Rebus/ServiceImpl/Server.cs | 143 ++++++ .../thrift/contrib/Rebus/sample.thrift | 30 ++ src/jaegertracing/thrift/contrib/Stomp/README.md | 18 + .../contrib/Stomp/Thrift.Transport.STOMP.pas | 200 +++++++++ src/jaegertracing/thrift/contrib/Vagrantfile | 133 ++++++ .../thrift/contrib/async-test/Makefile | 33 ++ .../thrift/contrib/async-test/aggr.thrift | 8 + .../thrift/contrib/async-test/test-leaf.py | 24 + .../thrift/contrib/async-test/test-server.cpp | 97 +++++ src/jaegertracing/thrift/contrib/fb303/LICENSE | 16 + src/jaegertracing/thrift/contrib/fb303/Makefile.am | 46 ++ src/jaegertracing/thrift/contrib/fb303/README.md | 37 ++ .../thrift/contrib/fb303/TClientInfo.cpp | 178 ++++++++ .../thrift/contrib/fb303/TClientInfo.h | 320 ++++++++++++++ .../thrift/contrib/fb303/acinclude.m4 | 258 +++++++++++ .../thrift/contrib/fb303/aclocal/ax_boost_base.m4 | 198 +++++++++ .../fb303/aclocal/ax_cxx_compile_stdcxx_11.m4 | 134 ++++++ .../contrib/fb303/aclocal/ax_javac_and_java.m4 | 121 ++++++ .../contrib/fb303/aclocal/ax_thrift_internal.m4 | 28 ++ .../thrift/contrib/fb303/bootstrap.sh | 26 ++ .../thrift/contrib/fb303/configure.ac | 164 +++++++ .../thrift/contrib/fb303/cpp/FacebookBase.cpp | 124 ++++++ .../thrift/contrib/fb303/cpp/FacebookBase.h | 104 +++++ .../thrift/contrib/fb303/cpp/Makefile.am | 84 ++++ .../thrift/contrib/fb303/cpp/ServiceTracker.cpp | 481 +++++++++++++++++++++ .../thrift/contrib/fb303/cpp/ServiceTracker.h | 215 +++++++++ .../thrift/contrib/fb303/global_footer.mk | 21 + .../thrift/contrib/fb303/global_header.mk | 38 ++ .../thrift/contrib/fb303/if/fb303.thrift | 113 +++++ .../thrift/contrib/fb303/java/build.properties | 5 + .../thrift/contrib/fb303/java/build.xml | 199 +++++++++ .../contrib/fb303/java/src/FacebookBase.java | 114 +++++ .../thrift/contrib/fb303/php/FacebookBase.php | 89 ++++ .../thrift/contrib/fb303/py/Makefile.am | 44 ++ .../thrift/contrib/fb303/py/fb303/FacebookBase.py | 83 ++++ .../contrib/fb303/py/fb303_scripts/__init__.py | 20 + .../fb303/py/fb303_scripts/fb303_simple_mgmt.py | 191 ++++++++ src/jaegertracing/thrift/contrib/fb303/py/setup.py | 48 ++ .../thrift/contrib/mingw-cross-compile.sh | 19 + .../thrift/contrib/parse_profiling.py | 312 +++++++++++++ .../thrift/contrib/thrift-maven-plugin/pom.xml | 113 +++++ .../apache/thrift/maven/AbstractThriftMojo.java | 380 ++++++++++++++++ .../main/java/org/apache/thrift/maven/Thrift.java | 262 +++++++++++ .../org/apache/thrift/maven/ThriftCompileMojo.java | 78 ++++ .../apache/thrift/maven/ThriftTestCompileMojo.java | 93 ++++ .../thrift/maven/TestAbstractThriftMojo.java | 102 +++++ .../java/org/apache/thrift/maven/TestThrift.java | 163 +++++++ .../src/test/resources/idl/shared.thrift | 36 ++ .../src/test/resources/idl/tutorial.thrift | 152 +++++++ src/jaegertracing/thrift/contrib/thrift.el | 140 ++++++ src/jaegertracing/thrift/contrib/thrift.spec | 253 +++++++++++ src/jaegertracing/thrift/contrib/thrift.vim | 91 ++++ src/jaegertracing/thrift/contrib/thrift_dump.cpp | 91 ++++ .../thrift/contrib/transport-sample/Makefile | 25 ++ .../thrift/contrib/transport-sample/README.md | 61 +++ .../thrift/contrib/transport-sample/Sample.thrift | 39 ++ .../contrib/transport-sample/ThriftCommon.cpp | 37 ++ .../thrift/contrib/transport-sample/ThriftCommon.h | 205 +++++++++ .../contrib/transport-sample/client/ReadMe.txt | 40 ++ .../contrib/transport-sample/client/client.cpp | 195 +++++++++ .../contrib/transport-sample/client/client.vcxproj | 105 +++++ .../transport-sample/client/client.vcxproj.filters | 66 +++ .../contrib/transport-sample/client/stdafx.cpp | 8 + .../contrib/transport-sample/client/stdafx.h | 15 + .../contrib/transport-sample/client/targetver.h | 8 + .../thrift/contrib/transport-sample/config.h | 24 + .../contrib/transport-sample/server/ReadMe.txt | 40 ++ .../contrib/transport-sample/server/server.cpp | 168 +++++++ .../contrib/transport-sample/server/server.vcxproj | 106 +++++ .../transport-sample/server/server.vcxproj.filters | 66 +++ .../contrib/transport-sample/server/stdafx.cpp | 8 + .../contrib/transport-sample/server/stdafx.h | 15 + .../contrib/transport-sample/server/targetver.h | 8 + .../thrift/contrib/transport-sample/thriftme.bat | 1 + .../thrift/contrib/transport-sample/thriftme.sh | 24 + .../contrib/transport-sample/transport-sample.sln | 26 ++ .../thrift/contrib/vagrant/centos-6.5/README.md | 61 +++ .../thrift/contrib/vagrant/centos-6.5/Vagrantfile | 274 ++++++++++++ src/jaegertracing/thrift/contrib/zeromq/Makefile | 39 ++ src/jaegertracing/thrift/contrib/zeromq/README.md | 30 ++ .../thrift/contrib/zeromq/TZmqClient.cpp | 48 ++ .../thrift/contrib/zeromq/TZmqClient.h | 65 +++ .../thrift/contrib/zeromq/TZmqClient.py | 64 +++ .../thrift/contrib/zeromq/TZmqServer.cpp | 96 ++++ .../thrift/contrib/zeromq/TZmqServer.h | 84 ++++ .../thrift/contrib/zeromq/TZmqServer.py | 79 ++++ .../thrift/contrib/zeromq/csharp/AssemblyInfo.cs | 46 ++ .../thrift/contrib/zeromq/csharp/Main.cs | 60 +++ .../thrift/contrib/zeromq/csharp/TZmqClient.cs | 78 ++++ .../thrift/contrib/zeromq/csharp/TZmqServer.cs | 56 +++ .../thrift/contrib/zeromq/csharp/ThriftZMQ.csproj | 91 ++++ .../thrift/contrib/zeromq/csharp/ThriftZMQ.sln | 42 ++ .../thrift/contrib/zeromq/storage.thrift | 4 + .../thrift/contrib/zeromq/test-client.cpp | 40 ++ .../thrift/contrib/zeromq/test-client.py | 36 ++ .../thrift/contrib/zeromq/test-receiver.cpp | 40 ++ .../thrift/contrib/zeromq/test-sender.cpp | 32 ++ .../thrift/contrib/zeromq/test-server.cpp | 43 ++ .../thrift/contrib/zeromq/test-server.py | 33 ++ 107 files changed, 9696 insertions(+) create mode 100644 src/jaegertracing/thrift/contrib/Rebus/App.config create mode 100644 src/jaegertracing/thrift/contrib/Rebus/Program.cs create mode 100644 src/jaegertracing/thrift/contrib/Rebus/Properties/AssemblyInfo.cs create mode 100644 src/jaegertracing/thrift/contrib/Rebus/README.md create mode 100644 src/jaegertracing/thrift/contrib/Rebus/RebusSample.csproj create mode 100644 src/jaegertracing/thrift/contrib/Rebus/RebusSample.sln create mode 100644 src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Both.cs create mode 100644 src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Client.cs create mode 100644 src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Server.cs create mode 100644 src/jaegertracing/thrift/contrib/Rebus/sample.thrift create mode 100644 src/jaegertracing/thrift/contrib/Stomp/README.md create mode 100644 src/jaegertracing/thrift/contrib/Stomp/Thrift.Transport.STOMP.pas create mode 100644 src/jaegertracing/thrift/contrib/Vagrantfile create mode 100644 src/jaegertracing/thrift/contrib/async-test/Makefile create mode 100644 src/jaegertracing/thrift/contrib/async-test/aggr.thrift create mode 100755 src/jaegertracing/thrift/contrib/async-test/test-leaf.py create mode 100644 src/jaegertracing/thrift/contrib/async-test/test-server.cpp create mode 100644 src/jaegertracing/thrift/contrib/fb303/LICENSE create mode 100644 src/jaegertracing/thrift/contrib/fb303/Makefile.am create mode 100644 src/jaegertracing/thrift/contrib/fb303/README.md create mode 100644 src/jaegertracing/thrift/contrib/fb303/TClientInfo.cpp create mode 100644 src/jaegertracing/thrift/contrib/fb303/TClientInfo.h create mode 100644 src/jaegertracing/thrift/contrib/fb303/acinclude.m4 create mode 100644 src/jaegertracing/thrift/contrib/fb303/aclocal/ax_boost_base.m4 create mode 100644 src/jaegertracing/thrift/contrib/fb303/aclocal/ax_cxx_compile_stdcxx_11.m4 create mode 100644 src/jaegertracing/thrift/contrib/fb303/aclocal/ax_javac_and_java.m4 create mode 100644 src/jaegertracing/thrift/contrib/fb303/aclocal/ax_thrift_internal.m4 create mode 100755 src/jaegertracing/thrift/contrib/fb303/bootstrap.sh create mode 100644 src/jaegertracing/thrift/contrib/fb303/configure.ac create mode 100644 src/jaegertracing/thrift/contrib/fb303/cpp/FacebookBase.cpp create mode 100644 src/jaegertracing/thrift/contrib/fb303/cpp/FacebookBase.h create mode 100644 src/jaegertracing/thrift/contrib/fb303/cpp/Makefile.am create mode 100644 src/jaegertracing/thrift/contrib/fb303/cpp/ServiceTracker.cpp create mode 100644 src/jaegertracing/thrift/contrib/fb303/cpp/ServiceTracker.h create mode 100644 src/jaegertracing/thrift/contrib/fb303/global_footer.mk create mode 100644 src/jaegertracing/thrift/contrib/fb303/global_header.mk create mode 100644 src/jaegertracing/thrift/contrib/fb303/if/fb303.thrift create mode 100644 src/jaegertracing/thrift/contrib/fb303/java/build.properties create mode 100755 src/jaegertracing/thrift/contrib/fb303/java/build.xml create mode 100644 src/jaegertracing/thrift/contrib/fb303/java/src/FacebookBase.java create mode 100644 src/jaegertracing/thrift/contrib/fb303/php/FacebookBase.php create mode 100644 src/jaegertracing/thrift/contrib/fb303/py/Makefile.am create mode 100644 src/jaegertracing/thrift/contrib/fb303/py/fb303/FacebookBase.py create mode 100644 src/jaegertracing/thrift/contrib/fb303/py/fb303_scripts/__init__.py create mode 100644 src/jaegertracing/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py create mode 100644 src/jaegertracing/thrift/contrib/fb303/py/setup.py create mode 100755 src/jaegertracing/thrift/contrib/mingw-cross-compile.sh create mode 100755 src/jaegertracing/thrift/contrib/parse_profiling.py create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/pom.xml create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/AbstractThriftMojo.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/Thrift.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftTestCompileMojo.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestAbstractThriftMojo.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestThrift.java create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/shared.thrift create mode 100644 src/jaegertracing/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/tutorial.thrift create mode 100644 src/jaegertracing/thrift/contrib/thrift.el create mode 100644 src/jaegertracing/thrift/contrib/thrift.spec create mode 100644 src/jaegertracing/thrift/contrib/thrift.vim create mode 100644 src/jaegertracing/thrift/contrib/thrift_dump.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/Makefile create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/README.md create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/Sample.thrift create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/ThriftCommon.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/ThriftCommon.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/ReadMe.txt create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/client.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/client.vcxproj create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/client.vcxproj.filters create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/stdafx.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/stdafx.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/client/targetver.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/config.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/ReadMe.txt create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/server.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/server.vcxproj create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/server.vcxproj.filters create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/stdafx.cpp create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/stdafx.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/server/targetver.h create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/thriftme.bat create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/thriftme.sh create mode 100644 src/jaegertracing/thrift/contrib/transport-sample/transport-sample.sln create mode 100644 src/jaegertracing/thrift/contrib/vagrant/centos-6.5/README.md create mode 100644 src/jaegertracing/thrift/contrib/vagrant/centos-6.5/Vagrantfile create mode 100644 src/jaegertracing/thrift/contrib/zeromq/Makefile create mode 100644 src/jaegertracing/thrift/contrib/zeromq/README.md create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqClient.cpp create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqClient.h create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqClient.py create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqServer.cpp create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqServer.h create mode 100644 src/jaegertracing/thrift/contrib/zeromq/TZmqServer.py create mode 100644 src/jaegertracing/thrift/contrib/zeromq/csharp/AssemblyInfo.cs create mode 100644 src/jaegertracing/thrift/contrib/zeromq/csharp/Main.cs create mode 100644 src/jaegertracing/thrift/contrib/zeromq/csharp/TZmqClient.cs create mode 100644 src/jaegertracing/thrift/contrib/zeromq/csharp/TZmqServer.cs create mode 100755 src/jaegertracing/thrift/contrib/zeromq/csharp/ThriftZMQ.csproj create mode 100755 src/jaegertracing/thrift/contrib/zeromq/csharp/ThriftZMQ.sln create mode 100644 src/jaegertracing/thrift/contrib/zeromq/storage.thrift create mode 100644 src/jaegertracing/thrift/contrib/zeromq/test-client.cpp create mode 100755 src/jaegertracing/thrift/contrib/zeromq/test-client.py create mode 100644 src/jaegertracing/thrift/contrib/zeromq/test-receiver.cpp create mode 100644 src/jaegertracing/thrift/contrib/zeromq/test-sender.cpp create mode 100644 src/jaegertracing/thrift/contrib/zeromq/test-server.cpp create mode 100755 src/jaegertracing/thrift/contrib/zeromq/test-server.py (limited to 'src/jaegertracing/thrift/contrib') diff --git a/src/jaegertracing/thrift/contrib/Rebus/App.config b/src/jaegertracing/thrift/contrib/Rebus/App.config new file mode 100644 index 000000000..4208af6b2 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/App.config @@ -0,0 +1,33 @@ + + + + + +
+ + + + + + + + + + diff --git a/src/jaegertracing/thrift/contrib/Rebus/Program.cs b/src/jaegertracing/thrift/contrib/Rebus/Program.cs new file mode 100644 index 000000000..563c62ad5 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/Program.cs @@ -0,0 +1,81 @@ +/** + * 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. + */ + +using Rebus.Configuration; +using Rebus.RabbitMQ; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RebusSample.Client; +using RebusSample.Server; + +namespace RebusSample +{ + class Program + { + static BuiltinContainerAdapter StartRequestServer(string server) + { + // client Rebus configuration + var adapter = new BuiltinContainerAdapter(); + Configure.With(adapter) + .Transport(t => t.UseRabbitMq("amqp://" + server, "MathRequests", "MathRequestErrors")) + .MessageOwnership(o => o.FromRebusConfigurationSection()) + .CreateBus().Start(); + + // register all relevant message handlers + adapter.Register(typeof(MathRequestCallHandler)); + return adapter; + } + + + static BuiltinContainerAdapter StartResponseServer(string server) + { + // client Rebus configuration + var adapter = new BuiltinContainerAdapter(); + Configure.With(adapter) + .Transport(t => t.UseRabbitMq("amqp://" + server, "MathResponses", "MathResponseErrors")) + .MessageOwnership(o => o.FromRebusConfigurationSection()) + .CreateBus().Start(); + + // register all relevant message handlers + adapter.Register(typeof(MathResponseCallHandler)); + return adapter; + } + + static void Main(string[] args) + { + string server = "localhost"; + + // start all servers + var req = StartRequestServer(server); + var rsp = StartResponseServer(server); + + // send the first message + var random = new Random(); + var client = new MathRequestClient(server); + client.DoTheMath(random.Next(), random.Next()); + + // now what? + Console.Write("Hit to stop ... "); + Console.ReadLine(); + } + } +} diff --git a/src/jaegertracing/thrift/contrib/Rebus/Properties/AssemblyInfo.cs b/src/jaegertracing/thrift/contrib/Rebus/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..e476eab76 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +/** + * 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. + */ + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("RebusSample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RebusSample")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: Guid("0af10984-40d3-453d-b1e5-421529e8c7e2")] + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/jaegertracing/thrift/contrib/Rebus/README.md b/src/jaegertracing/thrift/contrib/Rebus/README.md new file mode 100644 index 000000000..bbb9c496e --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/README.md @@ -0,0 +1,21 @@ +Sample code for the combination of Thrift with Rebus. + +Rebus is a .NET service bus, similar to NServiceBus, but more lightweight. +It ihas been mainly written by Mogens Heller Grabe and is currently hosted +on GitHub (https://github.com/rebus-org/Rebus) + +As with all ServiceBus or MQ scenarios, due to the highly asynchronous +operations it is recommended to do all calls as "oneway void" calls. + +The configuration can be done via App.Config, via code or even mixed from +both locations. Refer to the Rebus documentation for further details. For +this example, since we are effectively implementing two queue listeners in +only one single process, we do configuration of incoming and error queues +in the code. + +If you want to communicate with non-NET languages, you may need a customized +serializer as well, in order to override Rebus' default wire format. Please +refer to the Rebus docs on how to do that (it's not that hard, really). + +Additional requirements: +- RabbitMQ .NET client (see nuget) diff --git a/src/jaegertracing/thrift/contrib/Rebus/RebusSample.csproj b/src/jaegertracing/thrift/contrib/Rebus/RebusSample.csproj new file mode 100644 index 000000000..4058a6da2 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/RebusSample.csproj @@ -0,0 +1,102 @@ + + + + + + Debug + AnyCPU + {264E2126-EDE0-4B47-89C1-B397B25BB13D} + Exe + Properties + RebusSample + RebusSample + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Toolbox\ServiceBus\3rdparty\rabbitmq-dotnet-client-3.2.1-dotnet-3.0\bin\RabbitMQ.Client.dll + + + ..\..\..\..\..\Toolbox\ServiceBus\3rdparty\Rebus-master\deploy\NET40\Rebus.dll + + + ..\..\..\..\..\Toolbox\ServiceBus\3rdparty\Rebus-master\deploy\NET40\Rebus.RabbitMQ.dll + + + + + + + + + + + + + + + + + + + + + + + + + {499eb63c-d74c-47e8-ae48-a2fc94538e9d} + Thrift + + + + + cd $(ProjectDir) +if not exist gen-csharp\*.cs thrift -gen csharp sample.thrift + + + + \ No newline at end of file diff --git a/src/jaegertracing/thrift/contrib/Rebus/RebusSample.sln b/src/jaegertracing/thrift/contrib/Rebus/RebusSample.sln new file mode 100644 index 000000000..284ef36a7 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/RebusSample.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RebusSample", "RebusSample.csproj", "{264E2126-EDE0-4B47-89C1-B397B25BB13D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thrift", "..\..\lib\csharp\src\Thrift.csproj", "{499EB63C-D74C-47E8-AE48-A2FC94538E9D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {264E2126-EDE0-4B47-89C1-B397B25BB13D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {264E2126-EDE0-4B47-89C1-B397B25BB13D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {264E2126-EDE0-4B47-89C1-B397B25BB13D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {264E2126-EDE0-4B47-89C1-B397B25BB13D}.Release|Any CPU.Build.0 = Release|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Both.cs b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Both.cs new file mode 100644 index 000000000..fba67ec15 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Both.cs @@ -0,0 +1,35 @@ +/** + * 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. + */ + +using System; + + +namespace RebusSample +{ + // generic data container for serialized Thrift calls + public class GenericThriftServiceCall + { + public byte[] rawBytes; + } + + // specific containers (one per Thrift service) to leverage Rebus' handler routing + public class MathRequestCall : GenericThriftServiceCall { } + public class MathResponseCall : GenericThriftServiceCall { } + +} \ No newline at end of file diff --git a/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Client.cs b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Client.cs new file mode 100644 index 000000000..2408041a9 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Client.cs @@ -0,0 +1,157 @@ +/** + * 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. + */ + +using Rebus; +using Rebus.Configuration; +using Rebus.Messages; +using Rebus.RabbitMQ; +using System; +using System.Collections.Generic; +using System.IO; +using Thrift.Protocol; +using Thrift.Transport; + +/* + * The client emits calls to BasicMathServers + * + * The client implements the BasicMathClient service. + * If the server has processed our request, we get the results back through this service + */ + +namespace RebusSample.Client +{ + + // handler to be registered with Rebus + class MathResponseCallHandler : IHandleMessages + { + public void Handle(MathResponseCall message) + { + // Thrift protocol/transport stack + var stm = new MemoryStream(message.rawBytes); + var trns = new TStreamTransport(stm, null); + var prot = new TBinaryProtocol(trns); + + // create a processor and let him handle the call + var hndl = new MathResponsesHandler(); + var proc = new BasicMathClient.Processor(hndl); + proc.Process(prot, null); // oneway only + } + } + + + // serves incoming responses with calculation results + internal class MathResponsesHandler : BasicMathClient.Iface + { + public void FourResults(int added, int multiplied, int subtracted, int divided) + { + Console.WriteLine("added = {0}", added); + Console.WriteLine("multiplied= {0}", multiplied); + Console.WriteLine("subtracted = {0}", subtracted); + Console.WriteLine("divided = {0}", divided); + + PingAndDoAnotherCalculation(); + } + + + public void ThreeResults(int added, int multiplied, int subtracted) + { + Console.WriteLine("added = {0}", added); + Console.WriteLine("multiplied= {0}", multiplied); + Console.WriteLine("subtracted = {0}", subtracted); + Console.WriteLine("DIV/0 error during division"); + + PingAndDoAnotherCalculation(); + } + + + public void Pong(long value) + { + var latency = DateTime.Now.Ticks - value; + Console.WriteLine("Ping took {0} ms", new DateTime(latency).Millisecond); + } + + + private void PingAndDoAnotherCalculation() + { + var random = new Random(); + var client = new MathRequestClient("localhost"); + client.Ping(DateTime.Now.Ticks); + client.DoTheMath(random.Next(), random.Next()); + } + } + + + // provides the client-side interface for calculation requests + internal class MathRequestClient : BasicMathServer.Iface + { + private BuiltinContainerAdapter MQAdapter; + + + public MathRequestClient(string server) + { + MQAdapter = new BuiltinContainerAdapter(); + Configure.With(MQAdapter) + .Transport(t => t.UseRabbitMqInOneWayMode("amqp://" + server)) // we need send only + .MessageOwnership(o => o.FromRebusConfigurationSection()) + .CreateBus().Start(); + } + + + public void SerializeThriftCall(Action action) + { + // Thrift protocol/transport stack + var stm = new MemoryStream(); + var trns = new TStreamTransport(null, stm); + var prot = new TBinaryProtocol(trns); + + // serialize the call into a bunch of bytes + var client = new BasicMathServer.Client(prot); + if( action != null) + action(client); + else + throw new ArgumentException("action must not be null"); + + // make sure everything is written to the MemoryStream + trns.Flush(); + + // send the message + var msg = new MathRequestCall() { rawBytes = stm.ToArray() }; + MQAdapter.Bus.Send(msg); + } + + + public void Ping(long value) + { + SerializeThriftCall(client => + { + client.Ping(value); + }); + } + + + public void DoTheMath( int arg1, int arg2) + { + SerializeThriftCall(client => + { + client.DoTheMath(arg1, arg2); + }); + } + } +} + diff --git a/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Server.cs b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Server.cs new file mode 100644 index 000000000..149d513c6 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/ServiceImpl/Server.cs @@ -0,0 +1,143 @@ +/** + * 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. + */ + +using Rebus; +using Rebus.Configuration; +using Rebus.Messages; +using Rebus.RabbitMQ; +using System; +using System.Collections.Generic; +using System.IO; +using Thrift.Protocol; +using Thrift.Transport; + +/* + * The server implements the BasicMathServer service . + * All results are sent back to the client via the BasicMathClient service + */ + + +namespace RebusSample.Server +{ + // handler to be registered with Rebus + class MathRequestCallHandler : IHandleMessages + { + public void Handle(MathRequestCall message) + { + // Thrift protocol/transport stack + var stm = new MemoryStream(message.rawBytes); + var trns = new TStreamTransport(stm, null); + var prot = new TBinaryProtocol(trns); + + // create a processor and let him handle the call + var hndl = new MathRequestsHandler(); + var proc = new BasicMathServer.Processor(hndl); + proc.Process(prot, null); // oneway only + } + } + + + // serves incoming calculation requests + internal class MathRequestsHandler : BasicMathServer.Iface + { + public void Ping(long value) + { + var client = new MathResponseClient("localhost"); + client.Pong(value); + } + + + public void DoTheMath(int arg1, int arg2) + { + var client = new MathResponseClient("localhost"); + if( arg2 != 0) + client.FourResults( arg1+arg2, arg1*arg2, arg1-arg2, arg1/arg2); + else + client.ThreeResults( arg1+arg2, arg1*arg2, arg1-arg2); + } + } + + + // provides the client-side interface for calculation responses + internal class MathResponseClient : BasicMathClient.Iface + { + private BuiltinContainerAdapter MQAdapter; + + + public MathResponseClient(string server) + { + MQAdapter = new BuiltinContainerAdapter(); + Configure.With(MQAdapter) + .Transport(t => t.UseRabbitMqInOneWayMode("amqp://" + server)) // we need send only + .MessageOwnership(o => o.FromRebusConfigurationSection()) + .CreateBus().Start(); + } + + + public void SerializeThriftCall(Action action) + { + // Thrift protocol/transport stack + var stm = new MemoryStream(); + var trns = new TStreamTransport(null, stm); + var prot = new TBinaryProtocol(trns); + + // serialize the call into a bunch of bytes + var client = new BasicMathClient.Client(prot); + if (action != null) + action(client); + else + throw new ArgumentException("action must not be null"); + + // make sure everything is written to the MemoryStream + trns.Flush(); + + // send the message + var msg = new MathResponseCall() { rawBytes = stm.ToArray() }; + MQAdapter.Bus.Send(msg); + } + + + public void Pong(long value) + { + SerializeThriftCall(client => + { + client.Pong(value); + }); + } + + + public void ThreeResults(int added, int multiplied, int suctracted) + { + SerializeThriftCall(client => + { + client.ThreeResults(added, multiplied, suctracted); + }); + } + + + public void FourResults(int added, int multiplied, int suctracted, int divided) + { + SerializeThriftCall(client => + { + client.FourResults(added, multiplied, suctracted, divided); + }); + } + } +} + diff --git a/src/jaegertracing/thrift/contrib/Rebus/sample.thrift b/src/jaegertracing/thrift/contrib/Rebus/sample.thrift new file mode 100644 index 000000000..785e2d38f --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Rebus/sample.thrift @@ -0,0 +1,30 @@ +/** + * 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. + */ + + +service BasicMathServer { + oneway void DoTheMath( 1: i32 arg1, 2: i32 arg2) + oneway void Ping(1: i64 value) +} + +service BasicMathClient { + oneway void ThreeResults( 1 : i32 added, 2 : i32 multiplied, 3 : i32 subtracted); + oneway void FourResults( 1 : i32 added, 2 : i32 multiplied, 3 : i32 subtracted, 4 : i32 divided); + oneway void Pong(1: i64 value) +} diff --git a/src/jaegertracing/thrift/contrib/Stomp/README.md b/src/jaegertracing/thrift/contrib/Stomp/README.md new file mode 100644 index 000000000..2e5f21cbf --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Stomp/README.md @@ -0,0 +1,18 @@ +Sample code for STOMP-based Thrift clients and/or servers. + +Although the sample Thrift STOMP Transport is written in +Delphi/Pascal, it can easily serve as a starting point for +similar implementations in other languages. + +STOMP is a protocol widely supported by many messaging systems, +such as Apache ActiveMQ, RabbitMQ and many others. In particular, +it can be used to communicate with Service-Bus products like Rebus +or NServiceBus, when running against a STOMP-capable MQ system. + +A prerequisite for this sample is the Delphi STOMP Adapter written +by Daniele Teti (http://www.danieleteti.it/stomp-client), currently +hosted at Google Code (http://code.google.com/p/delphistompclient). + +At the time of writing, the STOMP adapter does not fully support +binary data. Please check whether this has been fixed, otherwise +you have to use the JSON protocol (or to fix it on your own). diff --git a/src/jaegertracing/thrift/contrib/Stomp/Thrift.Transport.STOMP.pas b/src/jaegertracing/thrift/contrib/Stomp/Thrift.Transport.STOMP.pas new file mode 100644 index 000000000..7dfb3763c --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Stomp/Thrift.Transport.STOMP.pas @@ -0,0 +1,200 @@ +(* + * 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. + *) + +unit Thrift.Transport.STOMP; + +interface + +uses + Classes,Windows, SysUtils, + Thrift, + Thrift.Transport, + Thrift.Protocol, + Thrift.Stream, + StompClient, + StompTypes; + +type + TStompTransportImpl = class( TStreamTransportImpl) + strict private + FData : TStringStream; + FServer : string; + FOutQueue : string; + FStompCli : IStompClient; + protected + function GetIsOpen: Boolean; override; + function Peek: Boolean; override; + public + constructor Create( const aServerAndPort, aOutQueue : string); + destructor Destroy; override; + + procedure Open(); override; + procedure Close(); override; + procedure Flush; override; + end; + + + TStompServerTransportImpl = class( TServerTransportImpl) + strict private + FServer : string; + FInQueue : string; + FClient : IStompClient; + protected + procedure Listen; override; + procedure Close; override; + function Accept( const fnAccepting: TProc): ITransport; override; + public + constructor Create( const aServerAndPort, aInQueue : string); + destructor Destroy; override; + end; + + +const + QUEUE_PREFIX = '/queue/'; + TOPIC_PREFIX = '/topic/'; + EXCHANGE_PREFIX = '/exchange/'; + + +implementation + + + +constructor TStompTransportImpl.Create( const aServerAndPort, aOutQueue : string); +var adapter : IThriftStream; +begin + FData := TStringStream.Create; + FServer := aServerAndPort; + FOutQueue := aOutQueue; + + adapter := TThriftStreamAdapterDelphi.Create( FData, FALSE); + inherited Create( nil, adapter); // output only +end; + + +destructor TStompTransportImpl.Destroy; +begin + inherited Destroy; + FreeAndNil( FData); + FStompCli := nil; +end; + + +function TStompTransportImpl.GetIsOpen: Boolean; +begin + result := (FStompCli <> nil); +end; + + +function TStompTransportImpl.Peek: Boolean; +begin + result := FALSE; // output only +end; + + +procedure TStompTransportImpl.Open; +begin + if FStompCli <> nil + then raise TTransportException.Create( TTransportException.TExceptionType.AlreadyOpen, 'already open') + else FStompCli := StompUtils.NewStomp( FServer); +end; + + +procedure TStompTransportImpl.Close; +begin + FStompCli := nil; + FData.Clear; +end; + + +procedure TStompTransportImpl.Flush; +begin + if FStompCli = nil + then raise TTransportException.Create( TTransportException.TExceptionType.NotOpen, 'not open'); + + FStompCli.Send( FOutQueue, FData.DataString); + FData.Clear; +end; + + +//--- TStompServerTransportImpl -------------------------------------------- + + +constructor TStompServerTransportImpl.Create( const aServerAndPort, aInQueue : string); +begin + inherited Create; + FServer := aServerAndPort; + FInQueue := aInQueue; +end; + + +destructor TStompServerTransportImpl.Destroy; +begin + try + Close; + finally + inherited Destroy; + end; +end; + + +procedure TStompServerTransportImpl.Listen; +begin + FClient := StompUtils.NewStomp(FServer); + FClient.Subscribe( FInQueue); +end; + + +procedure TStompServerTransportImpl.Close; +begin + if FClient <> nil then begin + FClient.Unsubscribe( FInQueue); + FClient := nil; + end; +end; + + +function TStompServerTransportImpl.Accept( const fnAccepting: TProc): ITransport; +var frame : IStompFrame; + adapter : IThriftStream; + stream : TStringStream; +begin + if FClient = nil + then raise TTransportException.Create( TTransportException.TExceptionType.NotOpen, + 'Not connected.'); + + if Assigned(fnAccepting) + then fnAccepting(); + + try + frame := FClient.Receive(MAXINT); + if frame = nil then Exit(nil); + + stream := TStringStream.Create( frame.GetBody); + adapter := TThriftStreamAdapterDelphi.Create( stream, TRUE); + result := TStreamTransportImpl.Create( adapter, nil); + + except + on E: Exception + do raise TTransportException.Create( E.ToString ); + end; +end; + + +end. + diff --git a/src/jaegertracing/thrift/contrib/Vagrantfile b/src/jaegertracing/thrift/contrib/Vagrantfile new file mode 100644 index 000000000..b34056333 --- /dev/null +++ b/src/jaegertracing/thrift/contrib/Vagrantfile @@ -0,0 +1,133 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# +# 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. +# + +$build_and_test = <