diff options
Diffstat (limited to 'qpid/dotnet/client-010/wcf')
53 files changed, 4275 insertions, 0 deletions
diff --git a/qpid/dotnet/client-010/wcf/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..66f2bb1268 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Qpid WCF")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Qpid WCF")] +[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("a39d56ec-7d81-48e1-9602-347a3ce6f638")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/ConfigDemo.suo b/qpid/dotnet/client-010/wcf/demo/ConfigDemo.suo Binary files differnew file mode 100644 index 0000000000..baa935693b --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/ConfigDemo.suo diff --git a/qpid/dotnet/client-010/wcf/demo/Demo.suo b/qpid/dotnet/client-010/wcf/demo/Demo.suo Binary files differnew file mode 100644 index 0000000000..ee4cb5d21e --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/Demo.suo diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.Designer.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.Designer.cs new file mode 100644 index 0000000000..9ec3a08359 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.Designer.cs @@ -0,0 +1,185 @@ +/* + * + * 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. + * + */ + +namespace WindowsFormsBooking +{ + partial class Form1 + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.button2 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Hotel", + "Taxi", + "Train", + "Cinema", + "Theater", + "Restaurant"}); + this.comboBox1.Location = new System.Drawing.Point(60, 20); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(76, 21); + this.comboBox1.TabIndex = 0; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(23, 20); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(31, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Type"; + // + // numericUpDown1 + // + this.numericUpDown1.Increment = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.numericUpDown1.Location = new System.Drawing.Point(60, 49); + this.numericUpDown1.Maximum = new decimal(new int[] { + 200, + 0, + 0, + 0}); + this.numericUpDown1.Minimum = new decimal(new int[] { + 30, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(76, 20); + this.numericUpDown1.TabIndex = 2; + this.numericUpDown1.Value = new decimal(new int[] { + 30, + 0, + 0, + 0}); + this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(23, 56); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(31, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Price"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(142, 20); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(40, 49); + this.button1.TabIndex = 4; + this.button1.Text = "Add"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // richTextBox1 + // + this.richTextBox1.ForeColor = System.Drawing.SystemColors.ControlText; + this.richTextBox1.Location = new System.Drawing.Point(27, 113); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(155, 83); + this.richTextBox1.TabIndex = 5; + this.richTextBox1.Text = ""; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(27, 81); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(155, 29); + this.button2.TabIndex = 6; + this.button2.Text = "Receipt"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(211, 211); + this.Controls.Add(this.button2); + this.Controls.Add(this.richTextBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.label2); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label1); + this.Controls.Add(this.comboBox1); + this.Name = "Form1"; + this.Text = "Booking Client"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Button button2; + } +} + diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.cs new file mode 100644 index 0000000000..89205bd6bd --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.cs @@ -0,0 +1,96 @@ +/* + * + * 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.ServiceModel; +using System.Windows.Forms; +using org.apache.qpid.wcf.demo; +using org.apache.qpid.wcf.model; +using org.apache.qpid.wcf.demo.bookingServer; + +namespace WindowsFormsBooking +{ + public partial class Form1 : Form + { + private ChannelFactory<IBooking> _fac; + private readonly Order _order = new Order(); + private IBooking _calc; + + public Form1() + { + InitializeComponent(); + _calc = StartClient(new QpidBinding("192.168.1.14", 5673)); + _order.Type = "Default"; + _order.Price = 0; + } + + public IBooking StartClient(System.ServiceModel.Channels.Binding binding) + { + IBooking res = null; + try + { + Console.WriteLine(" Starting Client..."); + _fac = new ChannelFactory<IBooking>(binding, "soap.amqp:///Booking"); + _fac.Open(); + res = _fac.CreateChannel(); + Console.WriteLine("[DONE]"); + } + catch (Exception e) + { + Console.WriteLine(e); + } + return res; + } + + public void StopClient(IBooking client) + { + Console.WriteLine(" Stopping Client..."); + ((System.ServiceModel.Channels.IChannel)client).Close(); + _fac.Close(); + Console.WriteLine("[DONE]"); + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + _order.Type = ((ComboBox) sender).SelectedItem.ToString(); + } + + private void numericUpDown1_ValueChanged(object sender, EventArgs e) + { + _order.Price = (double) ((NumericUpDown) sender).Value; + } + + private void button1_Click(object sender, EventArgs e) + { + _calc.Add(_order); + } + + private void button2_Click(object sender, EventArgs e) + { + Receipt r = _calc.Checkout(); + richTextBox1.Text = r.Summary + "\n" + "Total Price = " + r.Price; + // reset + _calc = StartClient(new QpidBinding("192.168.1.14", 5673)); + } + + + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.resx b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.resx new file mode 100644 index 0000000000..7c6a1b6a50 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Form1.resx @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="richTextBox1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> +</root>
\ No newline at end of file diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Program.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Program.cs new file mode 100644 index 0000000000..59189bf600 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Program.cs @@ -0,0 +1,41 @@ +/* + * + * 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.Collections.Generic; +using System.Windows.Forms; + +namespace WindowsFormsBooking +{ + static class Program + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..be301395d3 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Booking Client")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Booking 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("fc8b1e0e-1ca9-46fe-9aae-b1ed046716b8")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.Designer.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.Designer.cs new file mode 100644 index 0000000000..42f9731a3d --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.Designer.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. + * + */ + +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace WindowsFormsBooking.Properties +{ + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsBooking.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.resx b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.resx new file mode 100644 index 0000000000..af03750170 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Resources.resx @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root>
\ No newline at end of file diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.Designer.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.Designer.cs new file mode 100644 index 0000000000..212fb91438 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.Designer.cs @@ -0,0 +1,51 @@ +/* + * + * 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. + * + */ + +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace WindowsFormsBooking.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.settings b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.settings new file mode 100644 index 0000000000..64cfd9241c --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/Properties/Settings.settings @@ -0,0 +1,27 @@ +<?xml version='1.0' encoding='utf-8'?> +<!-- + - + - 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. + - + --> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/wcBookingClient.csproj b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/wcBookingClient.csproj new file mode 100644 index 0000000000..1449446ae2 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingClient/wcBookingClient.csproj @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{4086B3FE-F745-4DCC-952A-682CAE01F4C9}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>WindowsFormsBooking</RootNamespace> + <AssemblyName>Booking Client</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Form1.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Form1.Designer.cs"> + <DependentUpon>Form1.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <EmbeddedResource Include="Form1.resx"> + <DependentUpon>Form1.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\wcf.csproj"> + <Project>{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}</Project> + <Name>wcf</Name> + </ProjectReference> + <ProjectReference Include="..\wcfBookingServer\wcfBookingServer.csproj"> + <Project>{B34E21C4-A742-4886-8569-1A89490E093E}</Project> + <Name>wcfBookingServer</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Booking.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Booking.cs new file mode 100644 index 0000000000..7c0fbb39b4 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Booking.cs @@ -0,0 +1,62 @@ +/* +* +* 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.Collections.Generic; +using System.ServiceModel; + + +namespace org.apache.qpid.wcf.demo.bookingServer +{ + [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] + public class Booking : IBooking + { + private Guid _id; + private List<Order> _orders; + + public Booking() + { + _id = Guid.NewGuid(); + _orders = new List<Order>(); + } + + public void Add(Order order) + { + _orders.Add(order); + } + + public Receipt Checkout() + { + var r = new Receipt(); + foreach (Order order in _orders) + { + r.Price += order.Price; + r.Summary = r.Summary + " \n " + order.Type + " Price: " + order.Price; + } + return r; + } + + public Guid Id + { + get { return _id; } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/IBooking.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/IBooking.cs new file mode 100644 index 0000000000..cead4d0471 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/IBooking.cs @@ -0,0 +1,43 @@ +/* +* +* 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.ServiceModel; + +namespace org.apache.qpid.wcf.demo.bookingServer +{ + [ServiceContract(SessionMode=SessionMode.Required)] + public interface IBooking + { + [OperationContract] + void Add(Order order); + + [OperationContract] + Receipt Checkout(); + + Guid Id + { + [OperationContract] + get; + } + } + +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Order.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Order.cs new file mode 100644 index 0000000000..aa52908692 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Order.cs @@ -0,0 +1,45 @@ +/* +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ +using System.Runtime.Serialization; + +namespace org.apache.qpid.wcf.demo.bookingServer +{ + [DataContract] + public sealed class Order + { + private double _price; + private string _type; + + [DataMember] + public double Price + { + get { return _price; } + set { _price = value; } + } + + [DataMember] + public string Type + { + get { return _type; } + set { _type = value; } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Program.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Program.cs new file mode 100644 index 0000000000..ebb75308cf --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Program.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.ServiceModel; +using System.ServiceModel.Channels; +using System.Threading; +using org.apache.qpid.wcf.model; + + +namespace org.apache.qpid.wcf.demo.bookingServer +{ + internal class Program + { + private ServiceHost _service; + private ChannelFactory<IBooking> fac; + + public void StartService(Binding binding) + { + try + { + Console.WriteLine(" Binding Service..."); + _service = new ServiceHost(typeof(Booking), new Uri("soap.amqp:///")); + _service.AddServiceEndpoint(typeof(IBooking), binding, "Booking"); + _service.Open(); + Thread.Sleep(500); + Console.WriteLine("[DONE]"); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + + public void StopService() + { + Console.WriteLine(" Stopping Service..."); + _service.Close(); + Console.WriteLine("[DONE]"); + } + + public IBooking StartClient(Binding binding) + { + IBooking res = null; + try + { + Console.WriteLine(" Starting Client..."); + fac = new ChannelFactory<IBooking>(binding, "soap.amqp:///Booking"); + fac.Open(); + res = fac.CreateChannel(); + Console.WriteLine("[DONE]"); + } + catch (Exception e) + { + Console.WriteLine(e); + } + return res; + } + + public void StopClient(IBooking client) + { + Console.WriteLine(" Stopping Client..."); + ((IChannel)client).Close(); + fac.Close(); + Console.WriteLine("[DONE]"); + } + + private static void Main(string[] args) + { + var p = new Program(); + + Binding binding = new QpidBinding("192.168.1.14", 5673); + p.StartService(binding); + + Console.ReadLine(); + + p.StopService(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..cc0208c9ca --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Booking Server")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Booking 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("12ef158b-ac5f-43b3-99f6-e4a4c096d6f8")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Receipt.cs b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Receipt.cs new file mode 100644 index 0000000000..d5ab0f3eb3 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/Receipt.cs @@ -0,0 +1,46 @@ +/* +* +* 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.Runtime.Serialization; + +namespace org.apache.qpid.wcf.demo.bookingServer +{ + [DataContract] + public sealed class Receipt + { + private double _price; + private string _summary; + + [DataMember] + public double Price + { + get { return _price; } + set { _price = value; } + } + + [DataMember] + public string Summary + { + get { return _summary; } + set { _summary = value; } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/wcfBookingServer.csproj b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/wcfBookingServer.csproj new file mode 100644 index 0000000000..2f744f8b6b --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfBookingServer/wcfBookingServer.csproj @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{B34E21C4-A742-4886-8569-1A89490E093E}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>wcfSession</RootNamespace> + <AssemblyName>Booking Server</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Drawing" /> + <Reference Include="System.Runtime.Serialization"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Booking.cs" /> + <Compile Include="Receipt.cs" /> + <Compile Include="IBooking.cs" /> + <Compile Include="Order.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\wcf.csproj"> + <Project>{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}</Project> + <Name>wcf</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/App.config b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/App.config new file mode 100644 index 0000000000..1545d71d6f --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/App.config @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!-- + + 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. + +--> + +<configuration> + <system.serviceModel> + + <client> + <endpoint address="soap.amqp:///Hello" + binding="customBinding" + bindingConfiguration="QpidBinding" + contract="org.apache.qpid.wcf.demo.helloClient.IHelloContract" + name="HelloService" /> + </client> + + + <bindings> + <customBinding> + <binding name="QpidBinding"> + <textMessageEncoding /> + <QpidTransport + host="localhost" + port="5672" /> + </binding> + </customBinding> + </bindings> + + <extensions> + <bindingElementExtensions> + <add + name="QpidTransport" + type="org.apache.qpid.wcf.model.QpidTransportElement, qpidWCFModel"/> + </bindingElementExtensions> + </extensions> + + + </system.serviceModel> +</configuration> diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/HelloClient.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/HelloClient.cs new file mode 100644 index 0000000000..31743c62cf --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/HelloClient.cs @@ -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. +* +*/ + +using System.ServiceModel; + +namespace org.apache.qpid.wcf.demo.helloClient +{ + public class HelloClient : ClientBase<IHelloContract>, IHelloContract + { + public HelloClient(string configurationName) + : base(configurationName) { } + + public void Hello(string name) + { + Channel.Hello(name); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/IHelloService.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/IHelloService.cs new file mode 100644 index 0000000000..d3b9a354ba --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/IHelloService.cs @@ -0,0 +1,33 @@ +/* +* +* 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.ServiceModel; + +namespace org.apache.qpid.wcf.demo.helloClient +{ + [ServiceContract] + public interface IHelloContract + { + [OperationContract(IsOneWay=true)] + void Hello(string name); + } + +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Program.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Program.cs new file mode 100644 index 0000000000..fc68d2556a --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Program.cs @@ -0,0 +1,48 @@ +/* +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + +using System; + +namespace org.apache.qpid.wcf.demo.helloClient +{ + class Program + { + static void Main(string[] args) + { + Console.Title = "Hello Service Client"; + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine("Hello Service Client"); + Console.ForegroundColor = ConsoleColor.Gray; + Console.WriteLine(); + // create a client using the configuration file App.config + var client = new HelloClient("HelloService"); + Console.WriteLine("Client Saying Hello to Qpid"); + client.Hello("Qpid"); + Console.WriteLine("Client Saying Hello to AMQP"); + client.Hello("AMQP"); + // closing the client service + client.ChannelFactory.Close(); + Console.WriteLine(); + Console.Write("Press Enter to Exit..."); + Console.ReadLine(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..83dfbcd5f4 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Qpid WCF Hello Client")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Qpid WCF Hello 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("f7628695-280a-4689-ac6f-1186177f9a25")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/wcfHelloClient.csproj b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/wcfHelloClient.csproj new file mode 100644 index 0000000000..2e518d0da0 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloClient/wcfHelloClient.csproj @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{A24E27DB-A38D-40C9-9879-8390B68C2F06}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>wcfHelloClient</RootNamespace> + <AssemblyName>Qpid WCF Hello Client</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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.configuration" /> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="HelloClient.cs" /> + <Compile Include="IHelloService.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\wcf.csproj"> + <Project>{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}</Project> + <Name>wcf</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/App.config b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/App.config new file mode 100644 index 0000000000..de71f890b5 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/App.config @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!-- + + 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. + +--> + +<configuration> + <system.serviceModel> + + + <services> + <service name="org.apache.qpid.wcf.demo.HelloService"> + <host> + <baseAddresses> + <add baseAddress="soap.amqp:///" /> + </baseAddresses> + </host> + <endpoint + address="Hello" + binding="customBinding" + bindingConfiguration="QpidBinding" + contract="org.apache.qpid.wcf.demo.IHelloContract"/> + </service> + </services> + + + <bindings> + <customBinding> + <binding name="QpidBinding"> + <textMessageEncoding /> + <QpidTransport + host="192.168.1.14" + port="5673" /> + </binding> + </customBinding> + </bindings> + + <extensions> + <bindingElementExtensions> + <add + name="QpidTransport" + type="org.apache.qpid.wcf.model.QpidTransportElement, qpidWCFModel"/> + </bindingElementExtensions> + </extensions> + + + </system.serviceModel> +</configuration> diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/HelloService.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/HelloService.cs new file mode 100644 index 0000000000..3b7df01ece --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/HelloService.cs @@ -0,0 +1,34 @@ +/* +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + +using System; + +namespace org.apache.qpid.wcf.demo.helloServer +{ + public class HelloService : IHelloContract + { + public void Hello(string name) + { + Console.WriteLine("Hello {0}!", name); + + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/IHelloService.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/IHelloService.cs new file mode 100644 index 0000000000..1609439b94 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/IHelloService.cs @@ -0,0 +1,32 @@ +/* +* +* 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.ServiceModel; + +namespace org.apache.qpid.wcf.demo.helloServer +{ + [ServiceContract] + public interface IHelloContract + { + [OperationContract(IsOneWay=true)] + void Hello(string name); + } + +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Program.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Program.cs new file mode 100644 index 0000000000..1b8b8947ee --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Program.cs @@ -0,0 +1,47 @@ +/* +* +* 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.ServiceModel; + +namespace org.apache.qpid.wcf.demo.helloServer +{ + class Program + { + static void Main(string[] args) + { + Console.Title = "Hello Service Server"; + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine("Hello Service Server"); + Console.ForegroundColor = ConsoleColor.Gray; + Console.WriteLine(); + + var host = new ServiceHost(typeof(HelloService)); + host.Open(); + + Console.WriteLine("Service Ready"); + Console.WriteLine("Press Enter to Exit..."); + Console.ReadLine(); + + host.Close(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..a32f32e864 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Qpid WCF Hello Server")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Qpid WCF Hello 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("afa87185-f224-4948-904c-b4f3cd19dadb")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/wcfHelloServer.csproj b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/wcfHelloServer.csproj new file mode 100644 index 0000000000..3a672a87f4 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfHelloServer/wcfHelloServer.csproj @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>wcfHelloServer</RootNamespace> + <AssemblyName>Qpid WCF Hello Server</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="HelloService.cs" /> + <Compile Include="IHelloService.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/IUpperCase.cs b/qpid/dotnet/client-010/wcf/demo/wcfRPC/IUpperCase.cs new file mode 100644 index 0000000000..668450948d --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/IUpperCase.cs @@ -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. +* +*/ +using System.ServiceModel; + +namespace org.apache.qpid.wcf.demo.rpc +{ + [ServiceContract] + public interface IUpperCase + { + [OperationContract] + string ToUpperCase(string message); + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/Program.cs b/qpid/dotnet/client-010/wcf/demo/wcfRPC/Program.cs new file mode 100644 index 0000000000..e2b54a0f61 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/Program.cs @@ -0,0 +1,113 @@ +/* +* +* 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.ServiceModel; +using System.ServiceModel.Channels; +using System.Threading; +using org.apache.qpid.wcf.model; + + +namespace org.apache.qpid.wcf.demo.rpc +{ + internal class Program + { + private ServiceHost _service; + private ChannelFactory<IUpperCase> fac; + + public void StartService(Binding binding) + { + try + { + Console.WriteLine(" Binding Service..."); + _service = new ServiceHost(typeof (UpperCase), new Uri("soap.amqp:///")); + _service.AddServiceEndpoint(typeof(IUpperCase), binding, "UpperCase"); + _service.Open(); + Thread.Sleep(500); + Console.WriteLine("[DONE]"); + } + catch (Exception e) + { + Console.WriteLine(e); + } + } + + public void StopService() + { + Console.WriteLine(" Stopping Service..."); + _service.Close(); + Console.WriteLine("[DONE]"); + } + + public IUpperCase StartClient(Binding binding) + { + IUpperCase res = null; + try + { + Console.WriteLine(" Starting Client..."); + fac = new ChannelFactory<IUpperCase>(binding, "soap.amqp:///UpperCase"); + fac.Open(); + res = fac.CreateChannel(); + Console.WriteLine("[DONE]"); + } + catch (Exception e) + { + Console.WriteLine(e); + } + return res; + } + + public void StopClient(IUpperCase client) + { + Console.WriteLine(" Stopping Client..."); + ((IChannel) client).Close(); + fac.Close(); + Console.WriteLine("[DONE]"); + } + + private static void Main(string[] args) + { + var p = new Program(); + + Binding binding = new QpidBinding("192.168.1.14", 5673); + p.StartService(binding); + + + IUpperCase calc = p.StartClient(new QpidBinding("192.168.1.14", 5673)); + + string[] messages = {"Twas brillig, and the slithy toves", + "Did gire and gymble in the wabe. ", + "All mimsy were the borogroves, ", + "And the mome raths outgrabe. "}; + foreach (string m in messages) + { + Console.Write(m + " --UperCase--> " ); + Console.Write(calc.ToUpperCase(m)); + Console.WriteLine(); + } + + Console.ReadLine(); + + p.StopClient(calc); + p.StopService(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/Properties/AssemblyInfo.cs b/qpid/dotnet/client-010/wcf/demo/wcfRPC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..703fb9fcea --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +/* + * + * 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("Qpid WCF UpperCase")] +[assembly: AssemblyDescription("Built from svn revision number: ")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Qpid WCF UpperCase")] +[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("14ba3707-3fcc-4033-8bbc-0db65c5424f3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyVersion("0.5.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/QpidBindingConfigurationElement.cs b/qpid/dotnet/client-010/wcf/demo/wcfRPC/QpidBindingConfigurationElement.cs new file mode 100644 index 0000000000..1d12868497 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/QpidBindingConfigurationElement.cs @@ -0,0 +1,205 @@ +/* +* +* 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.Reflection; +using System.ServiceModel.Channels; +using System.ServiceModel.Configuration; +using System.Configuration; + +namespace org.apache.qpid.wcf.model +{ + + /// <remarks> + /// This configuration element should be imported into the client + /// and server configuration files to provide declarative configuration + /// of a AMQP bound service. + /// </remarks> + public sealed class QpidBindingConfigurationElement : StandardBindingElement + { + /// <summary> + /// Creates a new instance of the QpidBindingConfigurationElement + /// Class initialized with values from the specified configuration. + /// </summary> + /// <param name="configurationName"></param> + public QpidBindingConfigurationElement(string configurationName) + : base(configurationName) + { + } + + /// <summary> + /// Creates a new instance of the RabbitMQBindingConfigurationElement Class. + /// </summary> + public QpidBindingConfigurationElement() + : this(null) + { + } + + + protected override void InitializeFrom(Binding binding) + { + base.InitializeFrom(binding); + QpidBinding qpidbinding = binding as QpidBinding; + if (qpidbinding != null) + { + Host = qpidbinding.Host; + OneWayOnly = qpidbinding.OneWayOnly; + TransactionFlowEnabled = qpidbinding.TransactionFlow; + VirtualHost = qpidbinding.VirtualHost; + PortNumber = qpidbinding.PortNumber; + UserName = qpidbinding.UserName; + Password = qpidbinding.Password; + } + } + + protected override void OnApplyConfiguration(Binding binding) + { + if (binding == null) + throw new ArgumentNullException("binding"); + + var qpidbinding = binding as QpidBinding; + if (qpidbinding == null) + { + throw new ArgumentException( + string.Format("Invalid type for binding. Expected {0}, Passed: {1}", + typeof(QpidBinding).AssemblyQualifiedName, + binding.GetType().AssemblyQualifiedName)); + } + + qpidbinding.Host = Host; + qpidbinding.OneWayOnly = OneWayOnly; + qpidbinding.TransactionFlow = TransactionFlowEnabled; + qpidbinding.Password = Password; + qpidbinding.UserName = UserName; + qpidbinding.VirtualHost = VirtualHost; + qpidbinding.PortNumber = PortNumber; + } + + + /// <summary> + /// Specifies the host that the binding should connect to. + /// </summary> + [ConfigurationProperty("host", DefaultValue = "localhost")] + public string Host + { + get { return ((string) base["host"]); } + set { base["host"] = value; } + } + + /// <summary> + /// Specifies the broker port number that the binding should connect to. + /// </summary> + [ConfigurationProperty("port", DefaultValue = "5672")] + public int PortNumber + { + get { return (Convert.ToInt16(base["port"])); } + set { base["port"] = value; } + } + + + /// <summary> + /// Specifies whether or not the CompositeDuplex and ReliableSession + /// binding elements are added to the channel stack. + /// </summary> + [ConfigurationProperty("oneWay", DefaultValue = false)] + public bool OneWayOnly + { + get { return ((bool)base["oneWay"]); } + set { base["oneWay"] = value; } + } + + /// <summary> + /// Password to use when authenticating with the broker + /// </summary> + [ConfigurationProperty("password", DefaultValue = "guest")] + public string Password + { + get { return ((string)base["password"]); } + set { base["password"] = value; } + } + + /// <summary> + /// Specifies whether or not WS-AtomicTransactions are supported by the binding + /// </summary> + [ConfigurationProperty("transactionFlow", DefaultValue = false)] + public bool TransactionFlowEnabled + { + get { return ((bool)base["transactionFlow"]); } + set { base["transactionFlow"] = value; } + } + + /// <summary> + /// The username to use when authenticating with the broker + /// </summary> + [ConfigurationProperty("username", DefaultValue = "guest")] + public string UserName + { + get { return ((string)base["username"]); } + set { base["username"] = value; } + } + + + + + /// <summary> + /// The virtual host to access. + /// </summary> + [ConfigurationProperty("virtualHost", DefaultValue = "test")] + public string VirtualHost + { + get { return ((string)base["virtualHost"]); } + set { base["virtualHost"] = value; } + } + + ///<summary>The security realm to use when calling IModel.AccessRequest</summary> + [ConfigurationProperty("realm", DefaultValue = "plain")] + public string Realm + { + get { return ((string)base["realm"]); } + set { base["realm"] = value; } + } + + protected override Type BindingElementType + { + get { return typeof(QpidBinding); } + } + + protected override ConfigurationPropertyCollection Properties + { + get + { + ConfigurationPropertyCollection configProperties = base.Properties; + foreach (PropertyInfo prop in this.GetType().GetProperties(BindingFlags.DeclaredOnly + | BindingFlags.Public + | BindingFlags.Instance)) + { + foreach (ConfigurationPropertyAttribute attr in prop.GetCustomAttributes(typeof(ConfigurationPropertyAttribute), false)) + { + configProperties.Add( + new ConfigurationProperty(attr.Name, prop.PropertyType, attr.DefaultValue)); + } + } + + return configProperties; + } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/UpperCase.cs b/qpid/dotnet/client-010/wcf/demo/wcfRPC/UpperCase.cs new file mode 100644 index 0000000000..3e10926be4 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/UpperCase.cs @@ -0,0 +1,33 @@ +/* +* +* 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.ServiceModel; + +namespace org.apache.qpid.wcf.demo.rpc +{ + [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] + public sealed class UpperCase : IUpperCase + { + public string ToUpperCase(string message) + { + return message.ToUpper(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/demo/wcfRPC/wcfRPC.csproj b/qpid/dotnet/client-010/wcf/demo/wcfRPC/wcfRPC.csproj new file mode 100644 index 0000000000..e8f7fee8f5 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/demo/wcfRPC/wcfRPC.csproj @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{C988F456-1025-486F-9BCD-49C0F83B91DB}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>wcfRPC</RootNamespace> + <AssemblyName>Qpid WCF UpperCase</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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.configuration" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Drawing" /> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="IUpperCase.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="UpperCase.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\wcf.csproj"> + <Project>{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}</Project> + <Name>wcf</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/model/CommunicationOperation.cs b/qpid/dotnet/client-010/wcf/model/CommunicationOperation.cs new file mode 100644 index 0000000000..3506d6729c --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/CommunicationOperation.cs @@ -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. +* +*/ + +using System; +using System.ServiceModel.Channels; + +namespace org.apache.qpid.wcf.model +{ + internal delegate void CommunicationOperation(TimeSpan timeout); + internal delegate TResult CommunicationOperation<TResult>(TimeSpan timeout); + internal delegate TResult CommunicationOperation<TResult, TArg>(TimeSpan timeout, out TArg arg0); + internal delegate void SendOperation(Message message, TimeSpan timeout); +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidBinding.cs b/qpid/dotnet/client-010/wcf/model/QpidBinding.cs new file mode 100644 index 0000000000..8f4684c1a1 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidBinding.cs @@ -0,0 +1,185 @@ +/* +* +* 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.Configuration; +using System.ServiceModel; +using System.ServiceModel.Channels; + +namespace org.apache.qpid.wcf.model +{ + public sealed class QpidBinding : Binding + { + private string _host; + private int _port; + private string _username; + private string _password; + private string _virtuaHost; + private readonly CompositeDuplexBindingElement _compositeDuplex; + private readonly MessageEncodingBindingElement _encoding; + private bool _oneWayOnly; + private readonly ReliableSessionBindingElement _session; + private readonly TransactionFlowBindingElement _transactionFlow; + private bool _transactionsEnabled; + private readonly QpidTransportBindingElement _transport; + + + + public QpidBinding() : this("localhost", 5672, "guest", "guest", "test") + { + } + + + public QpidBinding(string host, int port ) : this (host, port, "guest", "guest", "test") + { + } + + public QpidBinding(string host, int port, string username, string password, string virtualhost) + { + Host = host; + PortNumber = port; + UserName = username; + Password = password; + VirtualHost = virtualhost; + _transport = new QpidTransportBindingElement(); + _transport.Host = host; + _transport.PortNumber = port; + _transport.Password = password; + _transport.UserName = username; + _transport.VirtualHost = virtualhost; + _encoding = new TextMessageEncodingBindingElement(); + _session = new ReliableSessionBindingElement(); + _compositeDuplex = new CompositeDuplexBindingElement(); + _transactionFlow = new TransactionFlowBindingElement(); + } + + public override BindingElementCollection CreateBindingElements() + { + var elements = new BindingElementCollection(); + + if (_transactionsEnabled) + { + elements.Add(_transactionFlow); + } + if (!OneWayOnly) + { + elements.Add(_session); + elements.Add(_compositeDuplex); + } + elements.Add(_encoding); + elements.Add(_transport); + + return elements; + } + + + + /// <summary> + /// Gets the scheme used by the binding, soap.amqp + /// </summary> + public override string Scheme + { + get { return "soap.amqp"; } + } + + /// <summary> + /// Specifies the broker host + /// </summary> + [ConfigurationProperty("host")] + public string Host + { + get { return _host; } + set { _host = value; } + } + + /// <summary> + /// Specifies the broker port + /// </summary> + public int PortNumber + { + get { return _port; } + set { _port = value; } + } + + /// <summary> + /// Specifies the username + /// </summary> + public string UserName + { + get { return _username; } + set { _username = value; } + } + + /// <summary> + /// Specifies the password + /// </summary> + public string Password + { + get { return _password; } + set { _password = value; } + } + + /// <summary> + /// Specifies the virtualhost + /// </summary> + public string VirtualHost + { + get { return _virtuaHost; } + set { _virtuaHost = value; } + } + + + /// <summary> + /// Gets the AMQP _transport binding element + /// </summary> + public QpidTransportBindingElement Transport + { + get { return _transport; } + } + + /// <summary> + /// Gets the reliable _session parameters for this binding instance + /// </summary> + public ReliableSession ReliableSession + { + get { return new ReliableSession(_session); } + } + + /// <summary> + /// Determines whether or not the TransactionFlowBindingElement will + /// be added to the channel stack + /// </summary> + public bool TransactionFlow + { + get { return _transactionsEnabled; } + set { _transactionsEnabled = value; } + } + + /// <summary> + /// Specifies whether or not the CompositeDuplex and ReliableSession + /// binding elements are added to the channel stack. + /// </summary> + public bool OneWayOnly + { + get { return _oneWayOnly; } + set { _oneWayOnly = value; } + } + } +}
\ No newline at end of file diff --git a/qpid/dotnet/client-010/wcf/model/QpidChannelBase.cs b/qpid/dotnet/client-010/wcf/model/QpidChannelBase.cs new file mode 100644 index 0000000000..174c28e108 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidChannelBase.cs @@ -0,0 +1,167 @@ +/* +* +* 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.ServiceModel; +using System.ServiceModel.Channels; + +namespace org.apache.qpid.wcf.model +{ + internal abstract class QpidChannelBase : IChannel + { + private readonly CommunicationOperation _closeMethod; + private readonly BindingContext _context; + private readonly CommunicationOperation _openMethod; + private CommunicationState _state; + + private QpidChannelBase() + { + _state = CommunicationState.Created; + _closeMethod = Close; + _openMethod = Open; + } + + protected QpidChannelBase(BindingContext context) + : this() + { + _context = context; + } + + public abstract void Close(TimeSpan timeout); + + public abstract void Open(TimeSpan timeout); + + public virtual void Abort() + { + Close(); + } + + public virtual void Close() + { + Close(_context.Binding.CloseTimeout); + } + + public virtual T GetProperty<T>() where T : class + { + return default(T); + } + + public virtual void Open() + { + Open(_context.Binding.OpenTimeout); + } + + #region Async Methods + + public virtual IAsyncResult BeginClose(TimeSpan timeout, AsyncCallback callback, object state) + { + return _closeMethod.BeginInvoke(timeout, callback, state); + } + + public virtual IAsyncResult BeginClose(AsyncCallback callback, object state) + { + return _closeMethod.BeginInvoke(_context.Binding.CloseTimeout, callback, state); + } + + public virtual IAsyncResult BeginOpen(TimeSpan timeout, AsyncCallback callback, object state) + { + return _openMethod.BeginInvoke(timeout, callback, state); + } + + public virtual IAsyncResult BeginOpen(AsyncCallback callback, object state) + { + return _openMethod.BeginInvoke(_context.Binding.OpenTimeout, callback, state); + } + + public virtual void EndClose(IAsyncResult result) + { + _closeMethod.EndInvoke(result); + } + + public virtual void EndOpen(IAsyncResult result) + { + _openMethod.EndInvoke(result); + } + + #endregion + + #region Event Raising Methods + + protected void OnOpening() + { + _state = CommunicationState.Opening; + if (Opening != null) + Opening(this, null); + } + + protected void OnOpened() + { + _state = CommunicationState.Opened; + if (Opened != null) + Opened(this, null); + } + + protected void OnClosing() + { + _state = CommunicationState.Closing; + if (Closing != null) + Closing(this, null); + } + + protected void OnClosed() + { + _state = CommunicationState.Closed; + if (Closed != null) + Closed(this, null); + } + + protected void OnFaulted() + { + _state = CommunicationState.Faulted; + if (Faulted != null) + Faulted(this, null); + } + + #endregion + + + public CommunicationState State + { + get { return _state; } + } + + protected BindingContext Context + { + get { return _context; } + } + + + public event EventHandler Closed; + + public event EventHandler Closing; + + public event EventHandler Faulted; + + public event EventHandler Opened; + + public event EventHandler Opening; + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidChannelFactory.cs b/qpid/dotnet/client-010/wcf/model/QpidChannelFactory.cs new file mode 100644 index 0000000000..84518cb1c3 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidChannelFactory.cs @@ -0,0 +1,74 @@ +/* +* +* 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.ServiceModel; +using System.ServiceModel.Channels; +using org.apache.qpid.client; + +namespace org.apache.qpid.wcf.model +{ + public class QpidChannelFactory : ChannelFactoryBase<IOutputChannel> + { + private readonly BindingContext _context; + private readonly CommunicationOperation _openMethod; + private readonly QpidTransportBindingElement _bindingElement; + private ClientSession _session; + + public QpidChannelFactory(BindingContext context) + { + _context = context; + _openMethod = Open; + _bindingElement = context.Binding.Elements.Find<QpidTransportBindingElement>(); + } + + protected override IOutputChannel OnCreateChannel(EndpointAddress address, Uri via) + { + return new QpidOutputChannel(_context, _session, address); + } + + protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) + { + return _openMethod.BeginInvoke(timeout, callback, state); + } + + protected override void OnEndOpen(IAsyncResult result) + { + _openMethod.EndInvoke(result); + } + + protected override void OnOpen(TimeSpan timeout) + { + _session = _bindingElement.Open(timeout.Milliseconds); + } + + protected override void OnClose(TimeSpan timeout) + { + _bindingElement.Close(); + } + + protected override void OnAbort() + { + base.OnAbort(); + OnClose(_context.Binding.CloseTimeout); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidChannelListener.cs b/qpid/dotnet/client-010/wcf/model/QpidChannelListener.cs new file mode 100644 index 0000000000..f776fce9a5 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidChannelListener.cs @@ -0,0 +1,79 @@ +/* +* +* 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.ServiceModel; +using System.ServiceModel.Channels; +using org.apache.qpid.client; + +namespace org.apache.qpid.wcf.model +{ + public sealed class QpidChannelListener : QpidChannelListenerBase<IInputChannel> + { + + private IInputChannel _channel; + private ClientSession _session; + + public QpidChannelListener(BindingContext context) + : base(context) + { + _channel = null; + _session = null; + } + + protected override IInputChannel OnAcceptChannel(TimeSpan timeout) + { + // Since only one connection to a broker is required (even for communication + // with multiple exchanges + if (_channel != null) + return null; + + _channel = new QpidInputChannel(Context, _session, new EndpointAddress(Uri.ToString())); + _channel.Closed += ListenChannelClosed; + return _channel; + } + + protected override bool OnWaitForChannel(TimeSpan timeout) + { + return false; + } + + protected override void OnOpen(TimeSpan timeout) + { + _session = _bindingElement.Open(timeout.Milliseconds); + } + + protected override void OnClose(TimeSpan timeout) + { + if (_channel != null) + { + _channel.Close(); + _channel = null; + } + _bindingElement.Close(); + } + + private void ListenChannelClosed(object sender, EventArgs args) + { + Close(); + } +} +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidChannelListenerBase.cs b/qpid/dotnet/client-010/wcf/model/QpidChannelListenerBase.cs new file mode 100644 index 0000000000..bdecb38c9d --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidChannelListenerBase.cs @@ -0,0 +1,111 @@ +/* +* +* 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.ServiceModel.Channels; +using System.ServiceModel.Description; + +namespace org.apache.qpid.wcf.model +{ + public abstract class QpidChannelListenerBase<TChannel> : ChannelListenerBase<TChannel> where TChannel: class, IChannel + { + private readonly Uri _listenUri; + private readonly BindingContext _context; + protected QpidTransportBindingElement _bindingElement; + private readonly CommunicationOperation _closeMethod; + private readonly CommunicationOperation _openMethod; + private readonly CommunicationOperation<TChannel> _acceptChannelMethod; + private readonly CommunicationOperation<bool> _waitForChannelMethod; + + protected QpidChannelListenerBase(BindingContext context) + { + _context = context; + _bindingElement = context.Binding.Elements.Find<QpidTransportBindingElement>(); + _closeMethod = OnClose; + _openMethod = OnOpen; + _waitForChannelMethod = OnWaitForChannel; + _acceptChannelMethod = OnAcceptChannel; + if (context.ListenUriMode == ListenUriMode.Explicit && context.ListenUriBaseAddress != null) + { + _listenUri = new Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); + } + else + { + _listenUri = new Uri(new Uri("soap.amqp:///"), Guid.NewGuid().ToString()); + } + } + + protected override void OnAbort() + { + OnClose(_context.Binding.CloseTimeout); + } + + protected override IAsyncResult OnBeginAcceptChannel(TimeSpan timeout, AsyncCallback callback, object state) + { + return _acceptChannelMethod.BeginInvoke(timeout, callback, state); + } + + protected override TChannel OnEndAcceptChannel(IAsyncResult result) + { + return _acceptChannelMethod.EndInvoke(result); + } + + protected override IAsyncResult OnBeginWaitForChannel(TimeSpan timeout, AsyncCallback callback, object state) + { + return _waitForChannelMethod.BeginInvoke(timeout, callback, state); + } + + protected override bool OnEndWaitForChannel(IAsyncResult result) + { + return _waitForChannelMethod.EndInvoke(result); + } + + protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) + { + return _closeMethod.BeginInvoke(timeout, callback, state); + } + + protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) + { + return _openMethod.BeginInvoke(timeout, callback, state); + } + + protected override void OnEndClose(IAsyncResult result) + { + _closeMethod.EndInvoke(result); + } + + protected override void OnEndOpen(IAsyncResult result) + { + _openMethod.EndInvoke(result); + } + + public override Uri Uri + { + get { return _listenUri; } + } + + protected BindingContext Context + { + get { return _context; } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidInputChannel.cs b/qpid/dotnet/client-010/wcf/model/QpidInputChannel.cs new file mode 100644 index 0000000000..7a05153df9 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidInputChannel.cs @@ -0,0 +1,218 @@ +/* +* +* 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.Collections.Generic; +using System.IO; +using System.ServiceModel; +using System.ServiceModel.Channels; +using System.Text; +using System.Threading; +using org.apache.qpid.client; +using org.apache.qpid.transport; +using org.apache.qpid.transport.util; + +namespace org.apache.qpid.wcf.model +{ + internal sealed class QpidInputChannel : QpidInputChannelBase + { + private static readonly Logger _log = Logger.get(typeof (QpidInputChannel)); + + private readonly QpidTransportBindingElement _bindingElement; + private readonly MessageEncoder _encoder; + private readonly ClientSession _session; + private readonly string _queueName; + private BlockingQueue _queue; + private bool _closed = false; + + public QpidInputChannel(BindingContext context, ClientSession session, EndpointAddress address) + : base(context, address) + { + _bindingElement = context.Binding.Elements.Find<QpidTransportBindingElement>(); + var encoderElem = context.BindingParameters.Find<MessageEncodingBindingElement>(); + if (encoderElem != null) + { + _encoder = encoderElem.CreateMessageEncoderFactory().Encoder; + } + _session = session; + _queueName = address.Uri.ToString(); + _queue = new BlockingQueue(); + } + + + public override System.ServiceModel.Channels.Message Receive(TimeSpan timeout) + { + _session.messageFlow("myDest", MessageCreditUnit.MESSAGE, 1); + _session.sync(); + IMessage m = _queue.Dequeue(); + System.ServiceModel.Channels.Message result = null; + if (m != null) + { + var reader = new BinaryReader(m.Body, Encoding.UTF8); + var body = new byte[m.Body.Length - m.Body.Position]; + reader.Read(body, 0, body.Length); + try + { + result = _encoder.ReadMessage(new MemoryStream(body), + (int) _bindingElement.MaxReceivedMessageSize); + } + catch(Exception e) + { + Console.WriteLine(e.StackTrace); + } + result.Headers.To = LocalAddress.Uri; + + var ack = new RangeSet(); + // ack this message + ack.add(m.Id); + _session.messageAccept(ack); + _session.sync(); + } + else + { + if(! _closed ) + { + return Receive(timeout); + } + } + return result; + } + + public override bool TryReceive(TimeSpan timeout, out System.ServiceModel.Channels.Message message) + { + message = Receive(timeout); + return message != null; + } + + public override bool WaitForMessage(TimeSpan timeout) + { + throw new NotImplementedException(); + } + + public override void Close(TimeSpan timeout) + { + _closed = true; + _queue = null; + } + + public override void Open(TimeSpan timeout) + { + if (State != CommunicationState.Created && State != CommunicationState.Closed) + throw new InvalidOperationException(string.Format("Cannot open the channel from the {0} state.", State)); + + OnOpening(); + + var qr = (QueueQueryResult) _session.queueQuery(_queueName).Result; + if (qr.getQueue() == null) + { + // create the queue + _session.queueDeclare(_queueName, null, null); + } + // bind the queue + _session.exchangeBind(_queueName, "amq.direct", _queueName, null); + var myListener = new WCFListener(_queue); + _session.attachMessageListener(myListener, "myDest"); + _session.messageSubscribe(_queueName, "myDest", MessageAcceptMode.EXPLICIT, MessageAcquireMode.PRE_ACQUIRED, + null, + 0, null); + // issue credits + _session.messageSetFlowMode("myDest", MessageFlowMode.WINDOW); + _session.messageFlow("myDest", MessageCreditUnit.BYTE, ClientSession.MESSAGE_FLOW_MAX_BYTES); + _session.sync(); + + OnOpened(); + } + } + + internal class WCFListener : IMessageListener + { + private static readonly Logger _log = Logger.get(typeof (WCFListener)); + private readonly BlockingQueue _q; + + public WCFListener(BlockingQueue q) + { + _q = q; + } + + public void messageTransfer(IMessage m) + { + _log.debug("message received by listener"); + _q.Enqueue(m); + } + } + + internal class BlockingQueue + { + private int _count; + private readonly Queue<IMessage> _queue = new Queue<IMessage>(); + + public IMessage Dequeue(TimeSpan timeout) + { + lock (_queue) + { + DateTime start = DateTime.Now; + long elapsed = 0; + while (_count <= 0 && elapsed < timeout.Milliseconds) + { + Monitor.Wait(_queue, new TimeSpan(timeout.Milliseconds - elapsed)); + elapsed = DateTime.Now.Subtract(start).Milliseconds; + } + if (_count > 0) + { + _count--; + return _queue.Dequeue(); + } + return null; + } + } + + public IMessage Dequeue() + { + lock (_queue) + { + while (_count <= 0) + { + Monitor.Wait(_queue); + } + if (_count > 0) + { + _count--; + return _queue.Dequeue(); + } + return null; + } + } + + public void Enqueue(IMessage data) + { + if (data != null) + { + lock (_queue) + { + _queue.Enqueue(data); + _count++; + Monitor.Pulse(_queue); + } + } + } + } +} + diff --git a/qpid/dotnet/client-010/wcf/model/QpidInputChannelBase.cs b/qpid/dotnet/client-010/wcf/model/QpidInputChannelBase.cs new file mode 100644 index 0000000000..0bd9e85c0a --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidInputChannelBase.cs @@ -0,0 +1,101 @@ +/* +* +* 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.ServiceModel; +using System.ServiceModel.Channels; + +namespace org.apache.qpid.wcf.model +{ + internal abstract class QpidInputChannelBase : QpidChannelBase, IInputChannel + { + private readonly EndpointAddress _localAddress; + private readonly CommunicationOperation<Message> _receiveMethod; + private readonly CommunicationOperation<bool, Message> _tryReceiveMethod; + private readonly CommunicationOperation<bool> _waitForMessage; + + + protected QpidInputChannelBase(BindingContext context, EndpointAddress localAddress) + :base(context) + { + _localAddress = localAddress; + _receiveMethod = Receive; + _tryReceiveMethod = TryReceive; + _waitForMessage = WaitForMessage; + } + + + #region Async Methods + public virtual IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state) + { + return _receiveMethod.BeginInvoke(timeout, callback, state); + } + + public virtual IAsyncResult BeginReceive(AsyncCallback callback, object state) + { + return _receiveMethod.BeginInvoke(Context.Binding.ReceiveTimeout, callback, state); + } + + public virtual IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state) + { + Message message; + return _tryReceiveMethod.BeginInvoke(timeout, out message, callback, state); + } + + public virtual IAsyncResult BeginWaitForMessage(TimeSpan timeout, AsyncCallback callback, object state) + { + return _waitForMessage.BeginInvoke(timeout, callback, state); + } + + public virtual Message EndReceive(IAsyncResult result) + { + return _receiveMethod.EndInvoke(result); + } + + public virtual bool EndTryReceive(IAsyncResult result, out Message message) + { + return _tryReceiveMethod.EndInvoke(out message, result); + } + + public virtual bool EndWaitForMessage(IAsyncResult result) + { + return _waitForMessage.EndInvoke(result); + } + #endregion + + public abstract Message Receive(TimeSpan timeout); + + public abstract bool TryReceive(TimeSpan timeout, out Message message); + + public abstract bool WaitForMessage(TimeSpan timeout); + + public virtual Message Receive() + { + return Receive(Context.Binding.ReceiveTimeout); + } + + + public EndpointAddress LocalAddress + { + get { return _localAddress; } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidOutputChannel.cs b/qpid/dotnet/client-010/wcf/model/QpidOutputChannel.cs new file mode 100644 index 0000000000..f53ed9b9b8 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidOutputChannel.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.IO; +using System.ServiceModel; +using System.ServiceModel.Channels; +using org.apache.qpid.client; +using org.apache.qpid.transport; +using org.apache.qpid.transport.util; + +namespace org.apache.qpid.wcf.model +{ + internal sealed class QpidOutputChannel : QpidOutputChannelBase + { + private readonly MessageEncoder _encoder; + private readonly ClientSession _session; + private readonly string _queueName; + + public QpidOutputChannel(BindingContext context, ClientSession session, EndpointAddress address) + : base(context, address) + { + var encoderElement = context.Binding.Elements.Find<MessageEncodingBindingElement>(); + if (encoderElement != null) + { + _encoder = encoderElement.CreateMessageEncoderFactory().Encoder; + } + _queueName = address.Uri.ToString(); + _session = session; + } + + public override void Send(System.ServiceModel.Channels.Message message, TimeSpan timeout) + { + if (message.State != MessageState.Closed) + { + byte[] body; + using (var str = new MemoryStream()) + { + _encoder.WriteMessage(message, str); + body = str.ToArray(); + } + _session.messageTransfer("amq.direct", MessageAcceptMode.NONE, MessageAcquireMode.PRE_ACQUIRED, + new Header(new DeliveryProperties().setRoutingKey(_queueName), + new transport.MessageProperties().setMessageId(UUID.randomUUID())), + body); + } + } + + public override void Close(TimeSpan timeout) + { + if (State == CommunicationState.Closed || State == CommunicationState.Closing) + return; // Ignore the call, we're already closing. + OnClosing(); + OnClosed(); + } + + public override void Open(TimeSpan timeout) + { + if (State != CommunicationState.Created && State != CommunicationState.Closed) + throw new InvalidOperationException(string.Format("Cannot open the channel from the {0} state.", State)); + OnOpening(); + var qr = (QueueQueryResult) _session.queueQuery(_queueName).Result; + if (qr.getQueue() == null) + { + // create the queue + _session.queueDeclare(_queueName, null, null); + } + OnOpened(); + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidOutputChannelBase.cs b/qpid/dotnet/client-010/wcf/model/QpidOutputChannelBase.cs new file mode 100644 index 0000000000..a3cd9020ff --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidOutputChannelBase.cs @@ -0,0 +1,77 @@ +/* +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + +using System; +using System.ServiceModel; +using System.ServiceModel.Channels; + +namespace org.apache.qpid.wcf.model +{ + internal abstract class QpidOutputChannelBase : QpidChannelBase, IOutputChannel + { + + private readonly SendOperation _sendMethod; + private readonly EndpointAddress _address; + + protected QpidOutputChannelBase(BindingContext context, EndpointAddress address) + : base(context) + { + _address = address; + _sendMethod = Send; + } + + #region Async Methods + + public IAsyncResult BeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state) + { + return _sendMethod.BeginInvoke(message, timeout, callback, state); + } + + public IAsyncResult BeginSend(Message message, AsyncCallback callback, object state) + { + return _sendMethod.BeginInvoke(message, Context.Binding.SendTimeout, callback, state); + } + + public void EndSend(IAsyncResult result) + { + _sendMethod.EndInvoke(result); + } + + #endregion + + public abstract void Send(Message message, TimeSpan timeout); + + public virtual void Send(Message message) + { + Send(message, Context.Binding.SendTimeout); + } + + public EndpointAddress RemoteAddress + { + get { return _address; } + } + + public Uri Via + { + get { throw new NotImplementedException(); } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidTransportBindingElement.cs b/qpid/dotnet/client-010/wcf/model/QpidTransportBindingElement.cs new file mode 100644 index 0000000000..50cc80422a --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidTransportBindingElement.cs @@ -0,0 +1,186 @@ +/* +* +* 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.ServiceModel.Channels; +using org.apache.qpid.client; + +namespace org.apache.qpid.wcf.model +{ + public sealed class QpidTransportBindingElement : TransportBindingElement + { + private Client _connection; + private string _host; + private int _port; + private string _username; + private string _password; + private string _virtuaHost; + + /// <summary> + /// Creates a new instance of the QpidTransportBindingElement Class + /// </summary> + public QpidTransportBindingElement() + { + _host = "localhost"; + _port = 5672; + _username = "guest"; + _password = "guest"; + _virtuaHost = "test"; + } + + private QpidTransportBindingElement(QpidTransportBindingElement other) + : this() + { + Connection = other.Connection; + Host = other.Host; + PortNumber = other.PortNumber; + UserName = other.UserName; + Password = other.Password; + } + + + public override IChannelFactory<TChannel> BuildChannelFactory<TChannel>(BindingContext context) + { + if (Host == null) + throw new InvalidOperationException("No broker was specified."); + return (IChannelFactory<TChannel>) new QpidChannelFactory(context); + } + + public override IChannelListener<TChannel> BuildChannelListener<TChannel>(BindingContext context) + { + if (Host == null) + throw new InvalidOperationException("No broker was specified."); + + return (IChannelListener<TChannel>) ((object) new QpidChannelListener(context)); + } + + public override bool CanBuildChannelFactory<TChannel>(BindingContext context) + { + return typeof (TChannel) == typeof (IOutputChannel); + } + + public override bool CanBuildChannelListener<TChannel>(BindingContext context) + { + return typeof (TChannel) == typeof (IInputChannel); + } + + public override BindingElement Clone() + { + return new QpidTransportBindingElement(this); + } + + public override T GetProperty<T>(BindingContext context) + { + return context.GetInnerProperty<T>(); + } + + /// <summary> + /// Gets the scheme used by the binding, this is 0.10 as default for now. + /// </summary> + public override string Scheme + { + get { return "soap.amqp"; } + } + + + /// <summary> + /// Specifies the broker host + /// </summary> + [ConfigurationProperty("host")] + public string Host + { + get { return _host; } + set { _host = value; } + } + + /// <summary> + /// Specifies the broker port + /// </summary> + public int PortNumber + { + get { return _port; } + set { _port = value; } + } + + /// <summary> + /// Specifies the username + /// </summary> + public string UserName + { + get { return _username; } + set { _username = value; } + } + + /// <summary> + /// Specifies the password + /// </summary> + public string Password + { + get { return _password; } + set { _password = value; } + } + + /// <summary> + /// Specifies the virtualhost + /// </summary> + public string VirtualHost + { + get { return _virtuaHost; } + set { _virtuaHost = value; } + } + + /// <summary> + /// Specifies the connection + /// </summary> + public Client Connection + { + get { return _connection; } + set { _connection = value; } + } + + + internal ClientSession Open(long timeout) + { + if (Connection == null) + { + Connection = new Client(); + } + Connection.connect(Host, PortNumber, VirtualHost, UserName, Password); + return Connection.createSession(timeout); + } + + internal void Close() + { + if (Connection != null) + { + try + { + Connection.close(); + } + catch (Exception e) + { + // todo log it + } + } + } + } +} diff --git a/qpid/dotnet/client-010/wcf/model/QpidTransportElement.cs b/qpid/dotnet/client-010/wcf/model/QpidTransportElement.cs new file mode 100644 index 0000000000..f531186148 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/model/QpidTransportElement.cs @@ -0,0 +1,183 @@ +/* +* +* 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.Reflection; +using System.ServiceModel.Channels; +using System.ServiceModel.Configuration; + +namespace org.apache.qpid.wcf.model +{ + public sealed class QpidTransportElement : TransportElement + { + + public override void ApplyConfiguration(BindingElement bindingElement) + { + base.ApplyConfiguration(bindingElement); + if (bindingElement == null) + throw new ArgumentNullException("bindingElement"); + + var bindind = bindingElement as QpidTransportBindingElement; + if (bindind == null) + { + throw new ArgumentException( + string.Format("Invalid type for binding. Expected {0}, Passed: {1}", + typeof(QpidTransportBindingElement).AssemblyQualifiedName, + bindingElement.GetType().AssemblyQualifiedName)); + } + + bindind.Host = Host; + bindind.Password = Password; + bindind.UserName = UserName; + bindind.VirtualHost = VirtualHost; + bindind.PortNumber = PortNumber; + } + + public override void CopyFrom(ServiceModelExtensionElement from) + { + base.CopyFrom(from); + var element = from as QpidTransportElement; + if (element != null) + { + Host = element.Host; + PortNumber = element.PortNumber; + Password = element.Password; + UserName = element.UserName; + VirtualHost = element.VirtualHost; + } + } + + protected override BindingElement CreateBindingElement() + { + TransportBindingElement element = CreateDefaultBindingElement(); + ApplyConfiguration(element); + return element; + } + + protected override TransportBindingElement CreateDefaultBindingElement() + { + return new QpidTransportBindingElement(); + } + + protected override void InitializeFrom(BindingElement bindingElement) + { + base.InitializeFrom(bindingElement); + + if (bindingElement == null) + throw new ArgumentNullException("bindingElement"); + + var binding = bindingElement as QpidTransportBindingElement; + if (binding == null) + { + throw new ArgumentException( + string.Format("Invalid type for binding. Expected {0}, Passed: {1}", + typeof(QpidTransportBindingElement).AssemblyQualifiedName, + bindingElement.GetType().AssemblyQualifiedName)); + } + + Host = binding.Host; + PortNumber = binding.PortNumber; + Password = binding.Password; + UserName = binding.UserName; + VirtualHost = binding.VirtualHost; + } + + public override Type BindingElementType + { + get { return typeof(QpidTransportElement); } + } + + + + /// <summary> + /// Specifies the broker host name that the binding should connect to. + /// </summary> + [ConfigurationProperty("host", DefaultValue = "localhost")] + public string Host + { + get { return ((string) base["host"]); } + set { base["host"] = value; } + } + + /// <summary> + /// Specifies the broker port number that the binding should connect to. + /// </summary> + [ConfigurationProperty("port", DefaultValue = "5672")] + public int PortNumber + { + get { return (Convert.ToInt16(base["port"])); } + set { base["port"] = value; } + } + + /// <summary> + /// Password to use when authenticating with the broker + /// </summary> + [ConfigurationProperty("password", DefaultValue = "guest")] + public string Password + { + get { return ((string)base["password"]); } + set { base["password"] = value; } + } + + /// <summary> + /// The username to use when authenticating with the broker + /// </summary> + [ConfigurationProperty("username", DefaultValue = "guest")] + public string UserName + { + get { return ((string)base["username"]); } + set { base["username"] = value; } + } + + + /// <summary> + /// The virtual host to access. + /// </summary> + [ConfigurationProperty("virtualHost", DefaultValue = "test")] + public string VirtualHost + { + get { return ((string)base["virtualHost"]); } + set { base["virtualHost"] = value; } + } + + + protected override ConfigurationPropertyCollection Properties + { + get + { + ConfigurationPropertyCollection configProperties = base.Properties; + foreach (PropertyInfo prop in GetType().GetProperties(BindingFlags.DeclaredOnly + | BindingFlags.Public + | BindingFlags.Instance)) + { + foreach (ConfigurationPropertyAttribute attr in prop.GetCustomAttributes(typeof(ConfigurationPropertyAttribute), false)) + { + configProperties.Add( + new ConfigurationProperty(attr.Name, prop.PropertyType, attr.DefaultValue)); + } + } + + return configProperties; + } + } + } +}
\ No newline at end of file diff --git a/qpid/dotnet/client-010/wcf/wcf.csproj b/qpid/dotnet/client-010/wcf/wcf.csproj new file mode 100644 index 0000000000..f07c5ab1fd --- /dev/null +++ b/qpid/dotnet/client-010/wcf/wcf.csproj @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + - + - 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. + - + --> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>WCF</RootNamespace> + <AssemblyName>qpidWCFModel</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </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="Qpid Client, Version=0.10.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\client\bin\Debug\Qpid Client.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.configuration" /> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="model\*.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\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 diff --git a/qpid/dotnet/client-010/wcf/wcf.sln b/qpid/dotnet/client-010/wcf/wcf.sln new file mode 100644 index 0000000000..8120f44576 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/wcf.sln @@ -0,0 +1,70 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 + +# +# 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. +# + +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcfHelloClient", "demo\wcfHelloClient\wcfHelloClient.csproj", "{A24E27DB-A38D-40C9-9879-8390B68C2F06}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcfHelloServer", "demo\wcfHelloServer\wcfHelloServer.csproj", "{3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcfRPC", "demo\wcfRPC\wcfRPC.csproj", "{C988F456-1025-486F-9BCD-49C0F83B91DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcBookingClient", "demo\wcfBookingClient\wcBookingClient.csproj", "{4086B3FE-F745-4DCC-952A-682CAE01F4C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcfBookingServer", "demo\wcfBookingServer\wcfBookingServer.csproj", "{B34E21C4-A742-4886-8569-1A89490E093E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wcf", "wcf.csproj", "{F1D80D9D-FE22-4213-A760-BFFDE7D131DD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A24E27DB-A38D-40C9-9879-8390B68C2F06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A24E27DB-A38D-40C9-9879-8390B68C2F06}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A24E27DB-A38D-40C9-9879-8390B68C2F06}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A24E27DB-A38D-40C9-9879-8390B68C2F06}.Release|Any CPU.Build.0 = Release|Any CPU + {3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3EF848D7-5FAC-482C-922A-D4D45A4CCD2A}.Release|Any CPU.Build.0 = Release|Any CPU + {C988F456-1025-486F-9BCD-49C0F83B91DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C988F456-1025-486F-9BCD-49C0F83B91DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C988F456-1025-486F-9BCD-49C0F83B91DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C988F456-1025-486F-9BCD-49C0F83B91DB}.Release|Any CPU.Build.0 = Release|Any CPU + {4086B3FE-F745-4DCC-952A-682CAE01F4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4086B3FE-F745-4DCC-952A-682CAE01F4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4086B3FE-F745-4DCC-952A-682CAE01F4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4086B3FE-F745-4DCC-952A-682CAE01F4C9}.Release|Any CPU.Build.0 = Release|Any CPU + {B34E21C4-A742-4886-8569-1A89490E093E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B34E21C4-A742-4886-8569-1A89490E093E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B34E21C4-A742-4886-8569-1A89490E093E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B34E21C4-A742-4886-8569-1A89490E093E}.Release|Any CPU.Build.0 = Release|Any CPU + {F1D80D9D-FE22-4213-A760-BFFDE7D131DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1D80D9D-FE22-4213-A760-BFFDE7D131DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1D80D9D-FE22-4213-A760-BFFDE7D131DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1D80D9D-FE22-4213-A760-BFFDE7D131DD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/qpid/dotnet/client-010/wcf/wcf.suo b/qpid/dotnet/client-010/wcf/wcf.suo Binary files differnew file mode 100644 index 0000000000..60339d33e4 --- /dev/null +++ b/qpid/dotnet/client-010/wcf/wcf.suo |