Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Client.cs URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Client.cs?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Client.cs (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Client.cs Tue Sep 30 05:54:47 2008 @@ -0,0 +1,137 @@ +/* +* 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.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.requestresponse +{ + /// <summary> + /// 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. + /// + /// </summary> + internal class Client + { + private static void Main(string[] args) + { + string host = args.Length > 0 ? args[0] : "localhost"; + int port = args.Length > 1 ? Convert.ToInt32(args[1]) : 5672; + client.Client connection = new client.Client(); + try + { + connection.connect(host, port, "test", "guest", "guest"); + ClientSession 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 ClientSession _session; + private readonly RangeSet _range = new RangeSet(); + private int _counter; + public ClientMessageListener(ClientSession 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); + } + } + } + } +}
Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/Properties/AssemblyInfo.cs Tue Sep 30 05:54:47 2008 @@ -0,0 +1,33 @@ +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.10.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/default.build URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/default.build?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/default.build (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/default.build Tue Sep 30 05:54:47 2008 @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<project name="example-request-response-Client" default="build"> + <!-- + Properties that come from master build file + - build.dir: root directory for build + - build.debug: true if building debug release + - build.defines: variables to define during build + --> + + <target name="build"> + <csc target="exe" + define="${build.defines}" + debug="${build.debug}" + output="${build.dir}/${project::get-name()}.exe"> + + <sources> + <include name="**/*.cs" /> + </sources> + <references> + <include name="${build.dir}/log4net.dll" /> + <include name="${build.dir}/qpid.client.dll" /> + </references> + </csc> + </target> +</project> + Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Client/example-request-response-Client.csproj Tue Sep 30 05:54:47 2008 @@ -0,0 +1,53 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1BC63815-4029-4039-9207-35E7E06ECC99}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>example_request_response_Client</RootNamespace> + <AssemblyName>example-request-response-Client</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Client.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\client\Client.csproj"> + <Project>{B911FFD7-754F-4735-A188-218D5065BE79}</Project> + <Name>Client</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Properties/AssemblyInfo.cs Tue Sep 30 05:54:47 2008 @@ -0,0 +1,33 @@ +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.10.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/Server.cs Tue Sep 30 05:54:47 2008 @@ -0,0 +1,136 @@ +/* +* 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.IO; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; + +namespace org.apache.qpid.example.requestresponse +{ + /// <summary> + /// 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. + /// + /// </summary> + class Server + { + static void Main(string[] args) + { + string host = args.Length > 0 ? args[0] : "localhost"; + int port = args.Length > 1 ? Convert.ToInt32(args[1]) : 5672; + client.Client connection = new client.Client(); + try + { + connection.connect(host, port, "test", "guest", "guest"); + ClientSession 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 ClientSession _session; + private readonly RangeSet _range = new RangeSet(); + public MessageListener(ClientSession 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); + } + } + } + } +} Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/default.build URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/default.build?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/default.build (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/default.build Tue Sep 30 05:54:47 2008 @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<project name="example-request-response-Server" default="build"> + <!-- + Properties that come from master build file + - build.dir: root directory for build + - build.debug: true if building debug release + - build.defines: variables to define during build + --> + + <target name="build"> + <csc target="exe" + define="${build.defines}" + debug="${build.debug}" + output="${build.dir}/${project::get-name()}.exe"> + + <sources> + <include name="**/*.cs" /> + </sources> + <references> + <include name="${build.dir}/log4net.dll" /> + <include name="${build.dir}/qpid.client.dll" /> + </references> + </csc> + </target> +</project> + Added: incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj?rev=700439&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj (added) +++ incubator/qpid/trunk/qpid/dotnet/client-010/examples/request-response/example-request-response-Server/example-request-response-Server.csproj Tue Sep 30 05:54:47 2008 @@ -0,0 +1,53 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{922FBA9C-E483-4AEF-ABE8-AC87421E829B}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>example_request_response_Server</RootNamespace> + <AssemblyName>example-request-response-Server</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Server.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\client\Client.csproj"> + <Project>{B911FFD7-754F-4735-A188-218D5065BE79}</Project> + <Name>Client</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Modified: incubator/qpid/trunk/qpid/dotnet/client-010/test/Test.csproj URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/test/Test.csproj?rev=700439&r1=700438&r2=700439&view=diff ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/test/Test.csproj (original) +++ incubator/qpid/trunk/qpid/dotnet/client-010/test/Test.csproj Tue Sep 30 05:54:47 2008 @@ -41,7 +41,10 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="interop\Admin.cs" /> + <Compile Include="interop\Message.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="interop\TestCase.cs" /> <Compile Include="transport\util\UUIDTest.cs" /> </ItemGroup> <ItemGroup> Modified: incubator/qpid/trunk/qpid/dotnet/client-010/test/interop/Message.cs URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/test/interop/Message.cs?rev=700439&r1=700438&r2=700439&view=diff ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/test/interop/Message.cs (original) +++ incubator/qpid/trunk/qpid/dotnet/client-010/test/interop/Message.cs Tue Sep 30 05:54:47 2008 @@ -19,10 +19,8 @@ * */ using System; -using System.IO; using System.Text; using System.Threading; -using client.client; using NUnit.Framework; using org.apache.qpid.client; using org.apache.qpid.transport; @@ -139,7 +137,7 @@ - private class MyListener : MessageListener + private class MyListener : IMessageListener { private static readonly Logger _log = Logger.get(typeof (MyListener)); private readonly Object _wl; @@ -152,7 +150,7 @@ _count = count; } - public void messageTransfer(MessageTransfer m) + public void messageTransfer(IMessage m) { byte[] body = new byte[m.Body.Length - m.Body.Position]; _log.debug("Got a message of size: " + body.Length + " count = " + _count); Modified: incubator/qpid/trunk/qpid/dotnet/client-010/test/test.config URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/test/test.config?rev=700439&r1=700438&r2=700439&view=diff ============================================================================== --- incubator/qpid/trunk/qpid/dotnet/client-010/test/test.config (original) +++ incubator/qpid/trunk/qpid/dotnet/client-010/test/test.config Tue Sep 30 05:54:47 2008 @@ -2,7 +2,7 @@ <configuration> <appSettings> <add key="UserMame" value="guest"/> - <add key="Password" value="password"/> + <add key="Password" value="guest"/> <add key="Host" value="192.168.1.14"/> <add key="Port" value="5673"/> <add key="VirtualHost" value="test"/>
