From ebfd9ff053b04ab379acfc0fefedee5a31b6d8a5 Mon Sep 17 00:00:00 2001 From: "Stephen D. Huston" Date: Fri, 21 Oct 2011 01:19:00 +0000 Subject: Undo bad merge from trunk - merged at wrong level. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/QPID-2519@1187150 13f79535-47bb-0310-9956-ffa450edef68 --- .../direct/example-direct-Listener/Listener.cs | 117 +++++++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../direct/example-direct-Listener/default.build | 48 +++++++ .../example-direct-Listener.csproj | 85 ++++++++++++ .../direct/example-direct-producer/Producer.cs | 92 +++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../direct/example-direct-producer/default.build | 48 +++++++ .../example-direct-producer.csproj | 85 ++++++++++++ dotnet/client-010/examples/direct/verify | 37 ++++++ dotnet/client-010/examples/direct/verify.in | 14 ++ .../client-010/examples/direct/verify_cpp_dotnet | 29 +++++ .../examples/direct/verify_cpp_dotnet.in | 14 ++ .../client-010/examples/direct/verify_dotnet_cpp | 29 +++++ .../examples/direct/verify_dotnet_cpp.in | 15 +++ .../fanout/example-fanout-Listener/Listener.cs | 126 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../fanout/example-fanout-Listener/default.build | 48 +++++++ .../example-fanout-Listener.csproj | 85 ++++++++++++ .../fanout/example-fanout-Producer/Producer.cs | 89 +++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../fanout/example-fanout-Producer/default.build | 48 +++++++ .../example-fanout-Producer.csproj | 85 ++++++++++++ dotnet/client-010/examples/fanout/verify | 36 ++++++ dotnet/client-010/examples/fanout/verify.in | 14 ++ .../client-010/examples/fanout/verify_cpp_dotnet | 30 +++++ .../examples/fanout/verify_cpp_dotnet.in | 14 ++ .../client-010/examples/fanout/verify_dotnet_cpp | 31 +++++ .../examples/fanout/verify_dotnet_cpp.in | 15 +++ .../pub-sub/example-pub-sub-Listener/Listener.cs | 143 +++++++++++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../pub-sub/example-pub-sub-Listener/default.build | 48 +++++++ .../example-pub-sub-Listener.csproj | 85 ++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../pub-sub/example-pub-sub-Publisher/Publisher.cs | 98 ++++++++++++++ .../example-pub-sub-Publisher/default.build | 48 +++++++ .../example-pub-sub-Publisher.csproj | 85 ++++++++++++ dotnet/client-010/examples/pub-sub/verify | 36 ++++++ dotnet/client-010/examples/pub-sub/verify.in | 95 ++++++++++++++ .../client-010/examples/pub-sub/verify_cpp_dotnet | 31 +++++ .../examples/pub-sub/verify_cpp_dotnet.in | 55 ++++++++ .../client-010/examples/pub-sub/verify_dotnet_cpp | 30 +++++ .../examples/pub-sub/verify_dotnet_cpp.in | 99 ++++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../RequestResponseClient.cs | 142 ++++++++++++++++++++ .../example-request-response-Client/default.build | 48 +++++++ .../example-request-response-Client.csproj | 85 ++++++++++++ .../Properties/AssemblyInfo.cs | 54 ++++++++ .../example-request-response-Server/Server.cs | 141 ++++++++++++++++++++ .../example-request-response-Server/default.build | 48 +++++++ .../example-request-response-Server.csproj | 85 ++++++++++++ dotnet/client-010/examples/request-response/verify | 36 ++++++ .../client-010/examples/request-response/verify.in | 16 +++ .../examples/request-response/verify_cpp_dotnet | 31 +++++ .../examples/request-response/verify_cpp_dotnet.in | 17 +++ .../examples/request-response/verify_dotnet_cpp | 31 +++++ .../examples/request-response/verify_dotnet_cpp.in | 18 +++ 56 files changed, 3217 insertions(+) create mode 100644 dotnet/client-010/examples/direct/example-direct-Listener/Listener.cs create mode 100644 dotnet/client-010/examples/direct/example-direct-Listener/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/direct/example-direct-Listener/default.build create mode 100644 dotnet/client-010/examples/direct/example-direct-Listener/example-direct-Listener.csproj create mode 100644 dotnet/client-010/examples/direct/example-direct-producer/Producer.cs create mode 100644 dotnet/client-010/examples/direct/example-direct-producer/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/direct/example-direct-producer/default.build create mode 100644 dotnet/client-010/examples/direct/example-direct-producer/example-direct-producer.csproj create mode 100644 dotnet/client-010/examples/direct/verify create mode 100644 dotnet/client-010/examples/direct/verify.in create mode 100644 dotnet/client-010/examples/direct/verify_cpp_dotnet create mode 100644 dotnet/client-010/examples/direct/verify_cpp_dotnet.in create mode 100644 dotnet/client-010/examples/direct/verify_dotnet_cpp create mode 100644 dotnet/client-010/examples/direct/verify_dotnet_cpp.in create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Listener/Listener.cs create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Listener/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Listener/default.build create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Listener/example-fanout-Listener.csproj create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Producer/Producer.cs create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Producer/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Producer/default.build create mode 100644 dotnet/client-010/examples/fanout/example-fanout-Producer/example-fanout-Producer.csproj create mode 100644 dotnet/client-010/examples/fanout/verify create mode 100644 dotnet/client-010/examples/fanout/verify.in create mode 100644 dotnet/client-010/examples/fanout/verify_cpp_dotnet create mode 100644 dotnet/client-010/examples/fanout/verify_cpp_dotnet.in create mode 100644 dotnet/client-010/examples/fanout/verify_dotnet_cpp create mode 100644 dotnet/client-010/examples/fanout/verify_dotnet_cpp.in create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Listener.cs create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/default.build create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/example-pub-sub-Listener.csproj create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Publisher.cs create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/default.build create mode 100644 dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/example-pub-sub-Publisher.csproj create mode 100644 dotnet/client-010/examples/pub-sub/verify create mode 100644 dotnet/client-010/examples/pub-sub/verify.in create mode 100644 dotnet/client-010/examples/pub-sub/verify_cpp_dotnet create mode 100644 dotnet/client-010/examples/pub-sub/verify_cpp_dotnet.in create mode 100644 dotnet/client-010/examples/pub-sub/verify_dotnet_cpp create mode 100644 dotnet/client-010/examples/pub-sub/verify_dotnet_cpp.in create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Client/RequestResponseClient.cs create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Client/default.build create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Server/default.build create mode 100644 dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj create mode 100644 dotnet/client-010/examples/request-response/verify create mode 100644 dotnet/client-010/examples/request-response/verify.in create mode 100644 dotnet/client-010/examples/request-response/verify_cpp_dotnet create mode 100644 dotnet/client-010/examples/request-response/verify_cpp_dotnet.in create mode 100644 dotnet/client-010/examples/request-response/verify_dotnet_cpp create mode 100644 dotnet/client-010/examples/request-response/verify_dotnet_cpp.in (limited to 'dotnet/client-010/examples') diff --git a/dotnet/client-010/examples/direct/example-direct-Listener/Listener.cs b/dotnet/client-010/examples/direct/example-direct-Listener/Listener.cs new file mode 100644 index 0000000000..f20090526d --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-Listener/Listener.cs @@ -0,0 +1,117 @@ +/* +* 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; +using System.Configuration; +using System.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.direct +{ + /// + /// This program is one of three programs designed to be used + /// together. These programs use the "amq.direct" exchange. + /// + /// Producer: + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener (this program): + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + public class Listener + { + private static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + // Create a queue named "message_queue", and route all messages whose + // routing key is "routing_key" to this newly created queue. + + session.QueueDeclare("message_queue"); + session.ExchangeBind("message_queue", "amq.direct", "routing_key"); + + lock (session) + { + // Create a listener and subscribe it to the queue named "message_queue" + IMessageListener listener = new MessageListener(session); + session.AttachMessageListener(listener, "message_queue"); + session.MessageSubscribe("message_queue"); + // Receive messages until all messages are received + Monitor.Wait(session); + } + + //--------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } + + public class MessageListener : IMessageListener + { + private readonly IClientSession _session; + private readonly RangeSet _range = new RangeSet(); + public MessageListener(IClientSession session) + { + _session = session; + } + + public void MessageTransfer(IMessage m) + { + BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8); + byte[] body = new byte[m.Body.Length - m.Body.Position]; + reader.Read(body, 0, body.Length); + ASCIIEncoding enc = new ASCIIEncoding(); + string message = enc.GetString(body); + Console.WriteLine("Message: " + message); + // Add this message to the list of message to be acknowledged + _range.Add(m.Id); + if( message.Equals("That's all, folks!") ) + { + // Acknowledge all the received messages + _session.MessageAccept(_range); + lock(_session) + { + Monitor.Pulse(_session); + } + } + } + } +} diff --git a/dotnet/client-010/examples/direct/example-direct-Listener/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/direct/example-direct-Listener/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..2fab6a538a --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-Listener/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-direct-Listener")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-direct-Listener")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6a24bfe4-4714-4d2a-acf4-96cf9a678a06")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/direct/example-direct-Listener/default.build b/dotnet/client-010/examples/direct/example-direct-Listener/default.build new file mode 100644 index 0000000000..f5db519af7 --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-Listener/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/direct/example-direct-Listener/example-direct-Listener.csproj b/dotnet/client-010/examples/direct/example-direct-Listener/example-direct-Listener.csproj new file mode 100644 index 0000000000..ac026b397d --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-Listener/example-direct-Listener.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7} + Exe + Properties + example_direct_Listener + example-direct-Listener + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/direct/example-direct-producer/Producer.cs b/dotnet/client-010/examples/direct/example-direct-producer/Producer.cs new file mode 100644 index 0000000000..f62667bf98 --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-producer/Producer.cs @@ -0,0 +1,92 @@ +/* +* 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; +using System.Configuration; +using System.Text; +using org.apache.qpid.client; + +namespace org.apache.qpid.example.direct +{ + /// + /// This program is one of three programs designed to be used + /// together. These programs use the "amq.direct" exchange. + /// + /// Producer (this program): + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener: + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + class Producer + { + static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + + IMessage message = new Message(); + + // The routing key is a message property. We will use the same + // routing key for each message, so we'll set this property + // just once. (In most simple cases, there is no need to set + // other message properties.) + + message.DeliveryProperties.SetRoutingKey("routing_key"); + + // Asynchronous transfer sends messages as quickly as + // possible without waiting for confirmation. + for (int i = 0; i < 10; i++) + { + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("Message " + i)); + session.MessageTransfer("amq.direct", message); + } + + // And send a syncrhonous final message to indicate termination. + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("That's all, folks!")); + session.MessageTransfer("amq.direct", "routing_key", message); + session.Sync(); + + //----------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } +} diff --git a/dotnet/client-010/examples/direct/example-direct-producer/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/direct/example-direct-producer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..84590e67c1 --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-producer/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-direct-producer")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-direct-producer")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("006144c2-5e45-4543-8e16-c09cd4309ed7")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/direct/example-direct-producer/default.build b/dotnet/client-010/examples/direct/example-direct-producer/default.build new file mode 100644 index 0000000000..c4e78444c7 --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-producer/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/direct/example-direct-producer/example-direct-producer.csproj b/dotnet/client-010/examples/direct/example-direct-producer/example-direct-producer.csproj new file mode 100644 index 0000000000..10d9d96aea --- /dev/null +++ b/dotnet/client-010/examples/direct/example-direct-producer/example-direct-producer.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {96FCB250-8142-40EE-9BDD-CA839EE21021} + Exe + Properties + example_direct_producer + example-direct-producer + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/direct/verify b/dotnet/client-010/examples/direct/verify new file mode 100644 index 0000000000..7da08480a2 --- /dev/null +++ b/dotnet/client-010/examples/direct/verify @@ -0,0 +1,37 @@ +# +## +## 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. +## +## +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/direct + +direct_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-direct-Listener.exe localhost 5672 +} + +direct_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-direct-Producer.exe localhost 5672 +} + +clients $cpp/declare_queues direct_producer_dotnet direct_listener_dotnet +outputs $cpp/declare_queues.out ./direct_producer_dotnet.out ./direct_listener_dotnet.out diff --git a/dotnet/client-010/examples/direct/verify.in b/dotnet/client-010/examples/direct/verify.in new file mode 100644 index 0000000000..f57d931663 --- /dev/null +++ b/dotnet/client-010/examples/direct/verify.in @@ -0,0 +1,14 @@ +==== declare_queues.out +==== direct_producer_dotnet.out +==== direct_listener_dotnet.out +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! diff --git a/dotnet/client-010/examples/direct/verify_cpp_dotnet b/dotnet/client-010/examples/direct/verify_cpp_dotnet new file mode 100644 index 0000000000..648c8b6bc1 --- /dev/null +++ b/dotnet/client-010/examples/direct/verify_cpp_dotnet @@ -0,0 +1,29 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/direct + +direct_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-direct-Listener.exe localhost 5672 +} + +clients $cpp/declare_queues $cpp/direct_producer direct_listener_dotnet +outputs $cpp/declare_queues.out $cpp/direct_producer.out ./direct_listener_dotnet.out diff --git a/dotnet/client-010/examples/direct/verify_cpp_dotnet.in b/dotnet/client-010/examples/direct/verify_cpp_dotnet.in new file mode 100644 index 0000000000..b3543cefe5 --- /dev/null +++ b/dotnet/client-010/examples/direct/verify_cpp_dotnet.in @@ -0,0 +1,14 @@ +==== declare_queues.out +==== direct_producer.out +==== direct_listener_dotnet.out +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! diff --git a/dotnet/client-010/examples/direct/verify_dotnet_cpp b/dotnet/client-010/examples/direct/verify_dotnet_cpp new file mode 100644 index 0000000000..5093da6088 --- /dev/null +++ b/dotnet/client-010/examples/direct/verify_dotnet_cpp @@ -0,0 +1,29 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/direct + +direct_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-direct-Producer.exe localhost 5672 +} + +clients $cpp/declare_queues direct_producer_dotnet $cpp/listener +outputs $cpp/declare_queues.out ./direct_producer_dotnet.out $cpp/listener.out diff --git a/dotnet/client-010/examples/direct/verify_dotnet_cpp.in b/dotnet/client-010/examples/direct/verify_dotnet_cpp.in new file mode 100644 index 0000000000..fcb6cd66de --- /dev/null +++ b/dotnet/client-010/examples/direct/verify_dotnet_cpp.in @@ -0,0 +1,15 @@ +==== declare_queues.out +==== direct_producer_dotnet.out +==== listener.out +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! +Shutting down listener for message_queue diff --git a/dotnet/client-010/examples/fanout/example-fanout-Listener/Listener.cs b/dotnet/client-010/examples/fanout/example-fanout-Listener/Listener.cs new file mode 100644 index 0000000000..b1967b59be --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Listener/Listener.cs @@ -0,0 +1,126 @@ +/* +* 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; +using System.Configuration; +using System.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.fanout +{ + /// + /// This program is one of two programs designed to be used + /// together. + /// + /// Producer (this program): + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener: + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + public class Listener + { + private static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + // Each client creates its own private queue, using the + // session id to guarantee a unique name. It then routes + // all messages from the fanout exchange to its own queue + // by binding to the queue. + // + // The binding specifies a binding key, but for a fanout + // exchange, the binding key is optional and is not used + // for routing decisions. It can be useful for tracking + // messages and routing in logs. + + string myQueue = session.Name; + session.QueueDeclare(myQueue, Option.EXCLUSIVE, Option.AUTO_DELETE); + session.ExchangeBind(myQueue, "amq.fanout", "my-key"); + + lock (session) + { + Console.WriteLine("Listening"); + // Create a listener and subscribe it to my queue. + IMessageListener listener = new MessageListener(session); + session.AttachMessageListener(listener, myQueue); + session.MessageSubscribe(myQueue); + // Receive messages until all messages are received + Monitor.Wait(session); + } + + //--------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } + + public class MessageListener : IMessageListener + { + private readonly IClientSession _session; + private readonly RangeSet _range = new RangeSet(); + public MessageListener(IClientSession session) + { + _session = session; + } + + public void MessageTransfer(IMessage m) + { + BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8); + byte[] body = new byte[m.Body.Length - m.Body.Position]; + reader.Read(body, 0, body.Length); + ASCIIEncoding enc = new ASCIIEncoding(); + string message = enc.GetString(body); + Console.WriteLine("Message: " + message); + // Add this message to the list of message to be acknowledged + _range.Add(m.Id); + if (message.Equals("That's all, folks!")) + { + // Acknowledge all the received messages + _session.MessageAccept(_range); + lock (_session) + { + Monitor.Pulse(_session); + } + } + } + } +} diff --git a/dotnet/client-010/examples/fanout/example-fanout-Listener/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/fanout/example-fanout-Listener/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..45ff62073e --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Listener/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-fanout-Listener")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-fanout-Listener")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("68686ef9-aa0a-4334-9c52-d7e6fc507bec")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/fanout/example-fanout-Listener/default.build b/dotnet/client-010/examples/fanout/example-fanout-Listener/default.build new file mode 100644 index 0000000000..dde36daf17 --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Listener/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/fanout/example-fanout-Listener/example-fanout-Listener.csproj b/dotnet/client-010/examples/fanout/example-fanout-Listener/example-fanout-Listener.csproj new file mode 100644 index 0000000000..3bd0b3d0d0 --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Listener/example-fanout-Listener.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {18A0792B-DC3A-4EC5-93D6-DB8A111D8F15} + Exe + Properties + example_fanout_Listener + example-fanout-Listener + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/fanout/example-fanout-Producer/Producer.cs b/dotnet/client-010/examples/fanout/example-fanout-Producer/Producer.cs new file mode 100644 index 0000000000..a781358a7e --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Producer/Producer.cs @@ -0,0 +1,89 @@ +/* +* 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; +using System.Configuration; +using System.Text; +using org.apache.qpid.client; + +namespace org.apache.qpid.example.fanout +{ + /// + /// This program is one of two programs designed to be used + /// together. These programs do not specify the exchange type - the + /// default exchange type is the direct exchange. + /// + /// + /// Producer (this program): + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener: + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + class Producer + { + static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + + // Unlike topic exchanges and direct exchanges, a fanout + // exchange need not set a routing key. + IMessage message = new Message(); + + // Asynchronous transfer sends messages as quickly as + // possible without waiting for confirmation. + for (int i = 0; i < 10; i++) + { + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("Message " + i)); + session.MessageTransfer("amq.fanout", message); + } + + // And send a syncrhonous final message to indicate termination. + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("That's all, folks!")); + session.MessageTransfer("amq.fanout", message); + session.Sync(); + + //----------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } +} diff --git a/dotnet/client-010/examples/fanout/example-fanout-Producer/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/fanout/example-fanout-Producer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..c19bb5b949 --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Producer/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-fanout-Producer")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-fanout-Producer")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("01c0ba10-2f23-409b-9adc-bc514a13131a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/fanout/example-fanout-Producer/default.build b/dotnet/client-010/examples/fanout/example-fanout-Producer/default.build new file mode 100644 index 0000000000..c4d39e41da --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Producer/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/fanout/example-fanout-Producer/example-fanout-Producer.csproj b/dotnet/client-010/examples/fanout/example-fanout-Producer/example-fanout-Producer.csproj new file mode 100644 index 0000000000..8b04dd8199 --- /dev/null +++ b/dotnet/client-010/examples/fanout/example-fanout-Producer/example-fanout-Producer.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {4513BF94-D54A-42FE-8506-FE2CD57B2C51} + Exe + Properties + example_fanout_Producer + example-fanout-Producer + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/fanout/verify b/dotnet/client-010/examples/fanout/verify new file mode 100644 index 0000000000..51b7327243 --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify @@ -0,0 +1,36 @@ +# +# +# 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. +# +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify + +fanout_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-fanout-Listener.exe localhost 5672 +} + +fanout_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-fanout-Producer.exe localhost 5672 +} + +background "Listening" fanout_listener_dotnet +clients fanout_producer_dotnet +outputs ./fanout_listener_dotnet.out ./fanout_producer_dotnet.out diff --git a/dotnet/client-010/examples/fanout/verify.in b/dotnet/client-010/examples/fanout/verify.in new file mode 100644 index 0000000000..37a4a4aaa8 --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify.in @@ -0,0 +1,14 @@ +==== fanout_listener_dotnet.out +Listening +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! +==== fanout_producer_dotnet.out diff --git a/dotnet/client-010/examples/fanout/verify_cpp_dotnet b/dotnet/client-010/examples/fanout/verify_cpp_dotnet new file mode 100644 index 0000000000..5716d3119b --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify_cpp_dotnet @@ -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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/fanout + +fanout_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-fanout-Listener.exe localhost 5672 +} + +background "Listening" fanout_listener_dotnet +clients $cpp/fanout_producer +outputs $cpp/fanout_producer.out "./fanout_listener_dotnet.out | remove_uuid" diff --git a/dotnet/client-010/examples/fanout/verify_cpp_dotnet.in b/dotnet/client-010/examples/fanout/verify_cpp_dotnet.in new file mode 100644 index 0000000000..0a72d8fd3c --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify_cpp_dotnet.in @@ -0,0 +1,14 @@ +==== fanout_producer.out +==== fanout_listener_dotnet.out | remove_uuid +Listening +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! diff --git a/dotnet/client-010/examples/fanout/verify_dotnet_cpp b/dotnet/client-010/examples/fanout/verify_dotnet_cpp new file mode 100644 index 0000000000..c755d1da41 --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify_dotnet_cpp @@ -0,0 +1,31 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/fanout + +fanout_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-fanout-Producer.exe localhost 5672 +} + + +background "Listening" $cpp/listener +clients fanout_producer_dotnet +outputs ./fanout_producer_dotnet.out "$cpp/listener.out | remove_uuid" diff --git a/dotnet/client-010/examples/fanout/verify_dotnet_cpp.in b/dotnet/client-010/examples/fanout/verify_dotnet_cpp.in new file mode 100644 index 0000000000..588559938f --- /dev/null +++ b/dotnet/client-010/examples/fanout/verify_dotnet_cpp.in @@ -0,0 +1,15 @@ +==== fanout_producer_dotnet.out +==== listener.out | remove_uuid +Listening +Message: Message 0 +Message: Message 1 +Message: Message 2 +Message: Message 3 +Message: Message 4 +Message: Message 5 +Message: Message 6 +Message: Message 7 +Message: Message 8 +Message: Message 9 +Message: That's all, folks! +Shutting down listener for diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Listener.cs b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Listener.cs new file mode 100644 index 0000000000..aeaf3f043b --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Listener.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 System; +using System.Configuration; +using System.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.pubsub +{ + /// + /// This program is one of two programs designed to be used + /// together. These programs use the topic exchange. + /// + /// Publisher: + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener (this program): + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + internal class Listener + { + public static int _count = 4; + + private static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + + lock (session) + { + Console.WriteLine("Listening for messages ..."); + // Create a listener + prepareQueue("usa", "usa.#", session); + prepareQueue("europe", "europe.#", session); + prepareQueue("news", "#.news", session); + prepareQueue("weather", "#.weather", session); + while (_count > 0) + { + Monitor.Wait(session); + } + } + + //--------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + + private static void prepareQueue(string queue, string routing_key, IClientSession session) + { + // Create a unique queue name for this consumer by concatenating + // the queue name parameter with the Session ID. + Console.WriteLine("Declaring queue: " + queue); + session.QueueDeclare(queue, Option.EXCLUSIVE, Option.AUTO_DELETE); + + // Route messages to the new queue if they match the routing key. + // Also route any messages to with the "control" routing key to + // this queue so we know when it's time to stop. A publisher sends + // a message with the content "That's all, Folks!", using the + // "control" routing key, when it is finished. + + session.ExchangeBind(queue, "amq.topic", routing_key); + session.ExchangeBind(queue, "amq.topic", "control"); + + // subscribe the listener to the queue + IMessageListener listener = new MessageListener(session); + session.AttachMessageListener(listener, queue); + session.MessageSubscribe(queue); + } + } + + public class MessageListener : IMessageListener + { + private readonly IClientSession _session; + private readonly RangeSet _range = new RangeSet(); + + public MessageListener(IClientSession session) + { + _session = session; + } + + public void MessageTransfer(IMessage m) + { + BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8); + byte[] body = new byte[m.Body.Length - m.Body.Position]; + reader.Read(body, 0, body.Length); + ASCIIEncoding enc = new ASCIIEncoding(); + string message = enc.GetString(body); + Console.WriteLine("Message: " + message + " from " + m.Destination); + // Add this message to the list of message to be acknowledged + _range.Add(m.Id); + if (message.Equals("That's all, folks!")) + { + Console.WriteLine("Shutting down listener for " + m.DeliveryProperties.GetRoutingKey()); + Listener._count--; + // Acknowledge all the received messages + _session.MessageAccept(_range); + lock (_session) + { + Monitor.Pulse(_session); + } + } + } + } +} diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..ef791c6738 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-pub-sub-Listener")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-pub-sub-Listener")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("74ab02ae-95d1-4bad-a7cf-9964005b9b05")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/default.build b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/default.build new file mode 100644 index 0000000000..fe2d9bf4ba --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/example-pub-sub-Listener.csproj b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/example-pub-sub-Listener.csproj new file mode 100644 index 0000000000..851faa7f21 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Listener/example-pub-sub-Listener.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7} + Exe + Properties + example_pub_sub_Listener + example-pub-sub-Listener + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..b6d7f3c818 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-pub-sub-Publisher")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-pub-sub-Publisher")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f6d282a0-9dc5-46cf-a4cd-44ae402d667f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Publisher.cs b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Publisher.cs new file mode 100644 index 0000000000..c87985d288 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/Publisher.cs @@ -0,0 +1,98 @@ +/* +* 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; +using System.Configuration; +using System.Text; +using org.apache.qpid.client; + +namespace org.apache.qpid.example.pubsub +{ + /// + /// This program is one of two programs designed to be used + /// together. These programs use the topic exchange. + /// + /// Publisher (this program): + /// + /// Publishes to a broker, specifying a routing key. + /// + /// Listener: + /// + /// Reads from a queue on the broker using a message listener. + /// + /// + internal class Publisher + { + private static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + + publishMessages(session, "usa.news"); + publishMessages(session, "usa.weather"); + publishMessages(session, "europe.news"); + publishMessages(session, "europe.weather"); + + noMoreMessages(session); + + //----------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + + private static void publishMessages(IClientSession session, string routing_key) + { + IMessage message = new Message(); + // Asynchronous transfer sends messages as quickly as + // possible without waiting for confirmation. + for (int i = 0; i < 10; i++) + { + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("Message " + i)); + session.MessageTransfer("amq.topic", routing_key, message); + } + } + + private static void noMoreMessages(IClientSession session) + { + IMessage message = new Message(); + // And send a syncrhonous final message to indicate termination. + message.ClearData(); + message.AppendData(Encoding.UTF8.GetBytes("That's all, folks!")); + session.MessageTransfer("amq.topic", "control", message); + session.Sync(); + } + } +} diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/default.build b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/default.build new file mode 100644 index 0000000000..3f270afe9e --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/example-pub-sub-Publisher.csproj b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/example-pub-sub-Publisher.csproj new file mode 100644 index 0000000000..a9dee76a36 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/example-pub-sub-Publisher/example-pub-sub-Publisher.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {F8857634-A134-44E7-A953-F2B22688C599} + Exe + Properties + example_pub_sub_Publisher + example-pub-sub-Publisher + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/pub-sub/verify b/dotnet/client-010/examples/pub-sub/verify new file mode 100644 index 0000000000..45d80c4866 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify @@ -0,0 +1,36 @@ +# +# +# 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. +# +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify + +pubsub_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-pub-sub-Listener.exe localhost 5672 +} + +pubsub_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-pub-sub-Publisher.exe localhost 5672 +} + +background "Listening for messages ..." pubsub_listener_dotnet +clients pubsub_producer_dotnet +outputs pubsub_producer_dotnet.out "pubsub_listener_dotnet.out | remove_uuid | sort" diff --git a/dotnet/client-010/examples/pub-sub/verify.in b/dotnet/client-010/examples/pub-sub/verify.in new file mode 100644 index 0000000000..6a5adc4d89 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify.in @@ -0,0 +1,95 @@ +==== pubsub_producer_dotnet.out +==== pubsub_listener_dotnet.out | remove_uuid | sort +Declaring queue: europe +Declaring queue: news +Declaring queue: usa +Declaring queue: weather +Listening for messages ... +Message: Message 0 from europe +Message: Message 0 from europe +Message: Message 0 from news +Message: Message 0 from news +Message: Message 0 from usa +Message: Message 0 from usa +Message: Message 0 from weather +Message: Message 0 from weather +Message: Message 1 from europe +Message: Message 1 from europe +Message: Message 1 from news +Message: Message 1 from news +Message: Message 1 from usa +Message: Message 1 from usa +Message: Message 1 from weather +Message: Message 1 from weather +Message: Message 2 from europe +Message: Message 2 from europe +Message: Message 2 from news +Message: Message 2 from news +Message: Message 2 from usa +Message: Message 2 from usa +Message: Message 2 from weather +Message: Message 2 from weather +Message: Message 3 from europe +Message: Message 3 from europe +Message: Message 3 from news +Message: Message 3 from news +Message: Message 3 from usa +Message: Message 3 from usa +Message: Message 3 from weather +Message: Message 3 from weather +Message: Message 4 from europe +Message: Message 4 from europe +Message: Message 4 from news +Message: Message 4 from news +Message: Message 4 from usa +Message: Message 4 from usa +Message: Message 4 from weather +Message: Message 4 from weather +Message: Message 5 from europe +Message: Message 5 from europe +Message: Message 5 from news +Message: Message 5 from news +Message: Message 5 from usa +Message: Message 5 from usa +Message: Message 5 from weather +Message: Message 5 from weather +Message: Message 6 from europe +Message: Message 6 from europe +Message: Message 6 from news +Message: Message 6 from news +Message: Message 6 from usa +Message: Message 6 from usa +Message: Message 6 from weather +Message: Message 6 from weather +Message: Message 7 from europe +Message: Message 7 from europe +Message: Message 7 from news +Message: Message 7 from news +Message: Message 7 from usa +Message: Message 7 from usa +Message: Message 7 from weather +Message: Message 7 from weather +Message: Message 8 from europe +Message: Message 8 from europe +Message: Message 8 from news +Message: Message 8 from news +Message: Message 8 from usa +Message: Message 8 from usa +Message: Message 8 from weather +Message: Message 8 from weather +Message: Message 9 from europe +Message: Message 9 from europe +Message: Message 9 from news +Message: Message 9 from news +Message: Message 9 from usa +Message: Message 9 from usa +Message: Message 9 from weather +Message: Message 9 from weather +Message: That's all, folks! from europe +Message: That's all, folks! from news +Message: That's all, folks! from usa +Message: That's all, folks! from weather +Shutting down listener for control +Shutting down listener for control +Shutting down listener for control +Shutting down listener for control diff --git a/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet b/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet new file mode 100644 index 0000000000..39d92cbb8b --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet @@ -0,0 +1,31 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/pub-sub + +pubsub_listener_dotnet() +{ +mono $DOTNET_EXAMPLES/example-pub-sub-Listener.exe localhost 5672 +} + + +background "Listening for messages ..." pubsub_listener_dotnet +clients $cpp/topic_publisher +outputs $cpp/topic_publisher.out "pubsub_listener_dotnet.out | remove_uuid | sort" diff --git a/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet.in b/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet.in new file mode 100644 index 0000000000..4e058f7645 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify_cpp_dotnet.in @@ -0,0 +1,55 @@ +==== topic_publisher.out +==== pubsub_listener_dotnet.out | remove_uuid | sort +Declaring queue: europe +Declaring queue: news +Declaring queue: usa +Declaring queue: weather +Listening for messages ... +Message: Message 0 from europe +Message: Message 0 from europe +Message: Message 0 from news +Message: Message 0 from news +Message: Message 0 from usa +Message: Message 0 from usa +Message: Message 0 from weather +Message: Message 0 from weather +Message: Message 1 from europe +Message: Message 1 from europe +Message: Message 1 from news +Message: Message 1 from news +Message: Message 1 from usa +Message: Message 1 from usa +Message: Message 1 from weather +Message: Message 1 from weather +Message: Message 2 from europe +Message: Message 2 from europe +Message: Message 2 from news +Message: Message 2 from news +Message: Message 2 from usa +Message: Message 2 from usa +Message: Message 2 from weather +Message: Message 2 from weather +Message: Message 3 from europe +Message: Message 3 from europe +Message: Message 3 from news +Message: Message 3 from news +Message: Message 3 from usa +Message: Message 3 from usa +Message: Message 3 from weather +Message: Message 3 from weather +Message: Message 4 from europe +Message: Message 4 from europe +Message: Message 4 from news +Message: Message 4 from news +Message: Message 4 from usa +Message: Message 4 from usa +Message: Message 4 from weather +Message: Message 4 from weather +Message: That's all, folks! from europe +Message: That's all, folks! from news +Message: That's all, folks! from usa +Message: That's all, folks! from weather +Shutting down listener for control +Shutting down listener for control +Shutting down listener for control +Shutting down listener for control diff --git a/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp b/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp new file mode 100644 index 0000000000..bf99e422a1 --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp @@ -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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/pub-sub + +pubsub_producer_dotnet() +{ +mono $DOTNET_EXAMPLES/example-pub-sub-Publisher.exe localhost 5672 +} + +background "Listening" $cpp/topic_listener +clients pubsub_producer_dotnet +outputs pubsub_producer_dotnet.out "$cpp/topic_listener.out | remove_uuid | sort" diff --git a/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp.in b/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp.in new file mode 100644 index 0000000000..64ac27846d --- /dev/null +++ b/dotnet/client-010/examples/pub-sub/verify_dotnet_cpp.in @@ -0,0 +1,99 @@ +==== pubsub_producer_dotnet.out +==== topic_listener.out | remove_uuid | sort +Declaring queue: europe +Declaring queue: news +Declaring queue: usa +Declaring queue: weather +Listening for messages ... +Message: Message 0 from europe +Message: Message 0 from europe +Message: Message 0 from news +Message: Message 0 from news +Message: Message 0 from usa +Message: Message 0 from usa +Message: Message 0 from weather +Message: Message 0 from weather +Message: Message 1 from europe +Message: Message 1 from europe +Message: Message 1 from news +Message: Message 1 from news +Message: Message 1 from usa +Message: Message 1 from usa +Message: Message 1 from weather +Message: Message 1 from weather +Message: Message 2 from europe +Message: Message 2 from europe +Message: Message 2 from news +Message: Message 2 from news +Message: Message 2 from usa +Message: Message 2 from usa +Message: Message 2 from weather +Message: Message 2 from weather +Message: Message 3 from europe +Message: Message 3 from europe +Message: Message 3 from news +Message: Message 3 from news +Message: Message 3 from usa +Message: Message 3 from usa +Message: Message 3 from weather +Message: Message 3 from weather +Message: Message 4 from europe +Message: Message 4 from europe +Message: Message 4 from news +Message: Message 4 from news +Message: Message 4 from usa +Message: Message 4 from usa +Message: Message 4 from weather +Message: Message 4 from weather +Message: Message 5 from europe +Message: Message 5 from europe +Message: Message 5 from news +Message: Message 5 from news +Message: Message 5 from usa +Message: Message 5 from usa +Message: Message 5 from weather +Message: Message 5 from weather +Message: Message 6 from europe +Message: Message 6 from europe +Message: Message 6 from news +Message: Message 6 from news +Message: Message 6 from usa +Message: Message 6 from usa +Message: Message 6 from weather +Message: Message 6 from weather +Message: Message 7 from europe +Message: Message 7 from europe +Message: Message 7 from news +Message: Message 7 from news +Message: Message 7 from usa +Message: Message 7 from usa +Message: Message 7 from weather +Message: Message 7 from weather +Message: Message 8 from europe +Message: Message 8 from europe +Message: Message 8 from news +Message: Message 8 from news +Message: Message 8 from usa +Message: Message 8 from usa +Message: Message 8 from weather +Message: Message 8 from weather +Message: Message 9 from europe +Message: Message 9 from europe +Message: Message 9 from news +Message: Message 9 from news +Message: Message 9 from usa +Message: Message 9 from usa +Message: Message 9 from weather +Message: Message 9 from weather +Message: That's all, folks! from europe +Message: That's all, folks! from news +Message: That's all, folks! from usa +Message: That's all, folks! from weather +Shutting down listener for europe +Shutting down listener for news +Shutting down listener for usa +Shutting down listener for weather +Subscribing to queue europe +Subscribing to queue news +Subscribing to queue usa +Subscribing to queue weather diff --git a/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..a438acaa1f --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-request-response-Client")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-request-response-Client")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("08bf6aed-bf79-4d16-9a28-6363d5322cdd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/request-response/example-request-response-Client/RequestResponseClient.cs b/dotnet/client-010/examples/request-response/example-request-response-Client/RequestResponseClient.cs new file mode 100644 index 0000000000..170008c840 --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Client/RequestResponseClient.cs @@ -0,0 +1,142 @@ +/* +* 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; +using System.Configuration; +using System.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.requestresponse +{ + /// + /// This program is one of two programs that illustrate the + /// request/response pattern. + /// + /// Client (this program): + /// Make requests of a service, print the response. + /// + /// Server: + /// Accept requests, set the letters to uppercase in each message, and + /// return it as a response. + /// + /// + internal class RequestResponseClient + { + private static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + IMessage request = new Message(); + + //--------- Main body of program -------------------------------------------- + // Create a response queue so the server can send us responses + // to our requests. Use the client's session ID as the name + // of the response queue. + string response_queue = "client" + session.GetName(); + // Use the name of the response queue as the routing key + session.QueueDeclare(response_queue); + session.ExchangeBind(response_queue, "amq.direct", response_queue); + + // Each client sends the name of their own response queue so + // the service knows where to route messages. + request.DeliveryProperties.SetRoutingKey("request"); + request.MessageProperties.SetReplyTo(new ReplyTo("amq.direct", response_queue)); + + lock (session) + { + // Create a listener for the response queue and listen for response messages. + Console.WriteLine("Activating response queue listener for: " + response_queue); + IMessageListener listener = new ClientMessageListener(session); + session.AttachMessageListener(listener, response_queue); + session.MessageSubscribe(response_queue); + + // Now send some requests ... + string[] strs = { + "Twas brillig, and the slithy toves", + "Did gire and gymble in the wabe.", + "All mimsy were the borogroves,", + "And the mome raths outgrabe.", + "That's all, folks!" + }; + foreach (string s in strs) + { + request.ClearData(); + request.AppendData(Encoding.UTF8.GetBytes(s)); + session.MessageTransfer("amq.direct", request); + } + Console.WriteLine("Waiting for all responses to arrive ..."); + Monitor.Wait(session); + } + //--------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } + + public class ClientMessageListener : IMessageListener + { + private readonly IClientSession _session; + private readonly RangeSet _range = new RangeSet(); + private int _counter; + public ClientMessageListener(IClientSession session) + { + _session = session; + } + + public void MessageTransfer(IMessage m) + { + _counter++; + BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8); + byte[] body = new byte[m.Body.Length - m.Body.Position]; + reader.Read(body, 0, body.Length); + ASCIIEncoding enc = new ASCIIEncoding(); + string message = enc.GetString(body); + Console.WriteLine("Response: " + message); + // Add this message to the list of message to be acknowledged + _range.Add(m.Id); + if (_counter == 4) + { + Console.WriteLine("Shutting down listener for " + m.DeliveryProperties.GetRoutingKey()); + // Acknowledge all the received messages + _session.MessageAccept(_range); + lock (_session) + { + Monitor.Pulse(_session); + } + } + } + } +} diff --git a/dotnet/client-010/examples/request-response/example-request-response-Client/default.build b/dotnet/client-010/examples/request-response/example-request-response-Client/default.build new file mode 100644 index 0000000000..c3d9af9baf --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Client/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj b/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj new file mode 100644 index 0000000000..21dc6ceed4 --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {1BC63815-4029-4039-9207-35E7E06ECC99} + Exe + Properties + example_request_response_Client + example-request-response-Client + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs b/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..ba702a28cc --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs @@ -0,0 +1,54 @@ +/* + * + * 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; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("example-request-response-Server")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("example-request-response-Server")] +[assembly: AssemblyCopyright("Apache Software Foundation")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("ef3456e2-7c19-47aa-8dd6-aeaa88c5c4ad")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs b/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs new file mode 100644 index 0000000000..ea87627dbf --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs @@ -0,0 +1,141 @@ +/* +* 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; +using System.Configuration; +using System.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.requestresponse +{ + /// + /// This program is one of two programs that illustrate the + /// request/response pattern. + /// + /// Client: + /// Make requests of a service, print the response. + /// + /// Server (this program): + /// Accept requests, set the letters to uppercase in each message, and + /// return it as a response. + /// + /// + class Server + { + static void Main(string[] args) + { + string host = ConfigurationManager.AppSettings["Host"]; + int port = int.Parse(ConfigurationManager.AppSettings["Port"]); + string virtualhost = ConfigurationManager.AppSettings["VirtualHost"]; + string username = ConfigurationManager.AppSettings["Username"]; + string password = ConfigurationManager.AppSettings["Password"]; + + Client connection = new Client(); + try + { + connection.Connect(host, port, virtualhost, username, password); + IClientSession session = connection.CreateSession(50000); + + //--------- Main body of program -------------------------------------------- + // Create a request queue for clients to use when making + // requests. + const string request_queue = "request"; + // Use the name of the request queue as the routing key + session.QueueDeclare(request_queue); + session.ExchangeBind(request_queue, "amq.direct", request_queue); + + lock (session) + { + // Create a listener and subscribe it to the request_queue + IMessageListener listener = new MessageListener(session); + session.AttachMessageListener(listener, request_queue); + session.MessageSubscribe(request_queue); + // Receive messages until all messages are received + Console.WriteLine("Waiting for requests"); + Monitor.Wait(session); + } + + //--------------------------------------------------------------------------- + + connection.Close(); + } + catch (Exception e) + { + Console.WriteLine("Error: \n" + e.StackTrace); + } + } + } + + public class MessageListener : IMessageListener + { + private readonly IClientSession _session; + private readonly RangeSet _range = new RangeSet(); + public MessageListener(IClientSession session) + { + _session = session; + } + + public void MessageTransfer(IMessage request) + { + IMessage response = new Message(); + + // Get routing key for response from the request's replyTo property + string routingKey; + if( request.MessageProperties.HasReplyTo() ) + { + routingKey = request.MessageProperties.GetReplyTo().GetRoutingKey(); + } + else + { + Console.WriteLine("Error: \n No routing key for request " + request); + return; + } + + BinaryReader reader = new BinaryReader(request.Body, Encoding.UTF8); + byte[] body = new byte[request.Body.Length - request.Body.Position]; + reader.Read(body, 0, body.Length); + ASCIIEncoding enc = new ASCIIEncoding(); + string message = enc.GetString(body); + Console.WriteLine("Request: " + message); + + // Transform message content to upper case + string responseBody = message.ToUpper(); + + // Send it back to the user + response.ClearData(); + response.AppendData(Encoding.UTF8.GetBytes(responseBody)); + _session.MessageTransfer("amq.direct", routingKey, response); + + // Add this message to the list of message to be acknowledged + _range.Add(request.Id); + if (message.Equals("That's all, folks!")) + { + // Acknowledge all the received messages + _session.MessageAccept(_range); + lock (_session) + { + Monitor.Pulse(_session); + } + } + } + } +} diff --git a/dotnet/client-010/examples/request-response/example-request-response-Server/default.build b/dotnet/client-010/examples/request-response/example-request-response-Server/default.build new file mode 100644 index 0000000000..a3e4691d10 --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Server/default.build @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj b/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj new file mode 100644 index 0000000000..3eb2a3c035 --- /dev/null +++ b/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {922FBA9C-E483-4AEF-ABE8-AC87421E829B} + Exe + Properties + example_request_response_Server + example-request-response-Server + + + 2.0 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {B911FFD7-754F-4735-A188-218D5065BE79} + Client + + + + + App.config + + + + + diff --git a/dotnet/client-010/examples/request-response/verify b/dotnet/client-010/examples/request-response/verify new file mode 100644 index 0000000000..fa69461f68 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify @@ -0,0 +1,36 @@ +# +# +# 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. +# +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify + +server_dotnet() +{ +mono $DOTNET_EXAMPLES/example-request-response-Server.exe localhost 5672 +} + +client_dotnet() +{ +mono $DOTNET_EXAMPLES/example-request-response-Client.exe localhost 5672 +} + +background "Waiting for requests" server_dotnet +clients client_dotnet +outputs ./server_dotnet.out ./client_dotnet.out diff --git a/dotnet/client-010/examples/request-response/verify.in b/dotnet/client-010/examples/request-response/verify.in new file mode 100644 index 0000000000..5357591289 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify.in @@ -0,0 +1,16 @@ +==== server_dotnet.out +Waiting for requests +Request: Twas brillig, and the slithy toves +Request: Did gire and gymble in the wabe. +Request: All mimsy were the borogroves, +Request: And the mome raths outgrabe. +Request: That's all, folks! +==== client_dotnet.out +Activating response queue listener for: clientSystem.Byte[] +Waiting for all responses to arrive ... +Response: TWAS BRILLIG, AND THE SLITHY TOVES +Response: DID GIRE AND GYMBLE IN THE WABE. +Response: ALL MIMSY WERE THE BOROGROVES, +Response: AND THE MOME RATHS OUTGRABE. +Shutting down listener for clientSystem.Byte[] +Response: THAT'S ALL, FOLKS! diff --git a/dotnet/client-010/examples/request-response/verify_cpp_dotnet b/dotnet/client-010/examples/request-response/verify_cpp_dotnet new file mode 100644 index 0000000000..791f48fe60 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify_cpp_dotnet @@ -0,0 +1,31 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/request-response + +client_dotnet() +{ +mono $DOTNET_EXAMPLES/example-request-response-Client.exe localhost 5672 +} + +background "Waiting" $cpp/server +clients client_dotnet +kill %% +outputs ./client_dotnet.out "$cpp/server.out | remove_uuid" diff --git a/dotnet/client-010/examples/request-response/verify_cpp_dotnet.in b/dotnet/client-010/examples/request-response/verify_cpp_dotnet.in new file mode 100644 index 0000000000..0f4b5341b2 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify_cpp_dotnet.in @@ -0,0 +1,17 @@ +==== client_dotnet.out +Activating response queue listener for: clientSystem.Byte[] +Waiting for all responses to arrive ... +Response: TWAS BRILLIG, AND THE SLITHY TOVES +Response: DID GIRE AND GYMBLE IN THE WABE. +Response: ALL MIMSY WERE THE BOROGROVES, +Response: AND THE MOME RATHS OUTGRABE. +Shutting down listener for clientSystem.Byte[] +Response: THAT'S ALL, FOLKS! +==== server.out | remove_uuid +Activating request queue listener for: request +Waiting for requests +Request: Twas brillig, and the slithy toves (clientSystem.Byte[]) +Request: Did gire and gymble in the wabe. (clientSystem.Byte[]) +Request: All mimsy were the borogroves, (clientSystem.Byte[]) +Request: And the mome raths outgrabe. (clientSystem.Byte[]) +Request: That's all, folks! (clientSystem.Byte[]) diff --git a/dotnet/client-010/examples/request-response/verify_dotnet_cpp b/dotnet/client-010/examples/request-response/verify_dotnet_cpp new file mode 100644 index 0000000000..95905c43c9 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify_dotnet_cpp @@ -0,0 +1,31 @@ +# +# 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. +# + +# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify +cpp=$CPP/request-response + +server_dotnet() +{ +mono $DOTNET_EXAMPLES/example-request-response-Server.exe localhost 5672 +} + +background "Waiting for requests" server_dotnet +clients $cpp/client +kill %% +outputs "$cpp/client.out | remove_uuid" ./server_dotnet.out diff --git a/dotnet/client-010/examples/request-response/verify_dotnet_cpp.in b/dotnet/client-010/examples/request-response/verify_dotnet_cpp.in new file mode 100644 index 0000000000..849fad39c6 --- /dev/null +++ b/dotnet/client-010/examples/request-response/verify_dotnet_cpp.in @@ -0,0 +1,18 @@ +==== client.out | remove_uuid +Activating response queue listener for: client +Request: Twas brillig, and the slithy toves +Request: Did gire and gymble in the wabe. +Request: All mimsy were the borogroves, +Request: And the mome raths outgrabe. +Waiting for all responses to arrive ... +Response: TWAS BRILLIG, AND THE SLITHY TOVES +Response: DID GIRE AND GYMBLE IN THE WABE. +Response: ALL MIMSY WERE THE BOROGROVES, +Response: AND THE MOME RATHS OUTGRABE. +Shutting down listener for client +==== server_dotnet.out +Waiting for requests +Request: Twas brillig, and the slithy toves +Request: Did gire and gymble in the wabe. +Request: All mimsy were the borogroves, +Request: And the mome raths outgrabe. -- cgit v1.2.1