From b16ec9b1b1036128b3afc65e8c348303340c02d0 Mon Sep 17 00:00:00 2001 From: "marc.gravell" Date: Thu, 8 Oct 2009 06:03:11 +0000 Subject: [PATCH] Incomplete attempt to integrate endpoint-behaviour git-svn-id: http://protobuf-net.googlecode.com/svn/trunk@273 b72047a4-3652-0410-9617-b3994939e97b --- Examples/Examples.csproj | 12 + Examples/Issues/Issue70.cs | 60 + Proto.sln | 4 +- ProtoGen/Properties/AssemblyInfo.cs | 4 +- ProtoGen/descriptor.cs | 1604 ++++++++--------- WcfPerfTest/Demo.sln | 17 + WcfPerfTest/Demo.suo | Bin 0 -> 55296 bytes WcfPerfTest/WcfClient/Form1.Designer.cs | 26 +- WcfPerfTest/WcfClient/Form1.cs | 21 +- WcfPerfTest/WcfClient/WcfClient.csproj | 6 +- WcfPerfTest/WcfClient/app.config | 28 + WcfPerfTest/WcfServer/BasicMessage.cs | 204 +++ WcfPerfTest/WcfServer/BasicMessage.proto | 13 + WcfPerfTest/WcfServer/BasicService.asmx | 1 + WcfPerfTest/WcfServer/BasicService.asmx.cs | 26 + WcfPerfTest/WcfServer/BasicService.svc | 1 + WcfPerfTest/WcfServer/BasicService.svc.cs | 12 + WcfPerfTest/WcfServer/IBasicService.cs | 27 + WcfPerfTest/WcfServer/WcfServer.csproj | 19 +- WcfPerfTest/WcfServer/Web.config | 199 +- buildkit35.build | 4 +- .../Service References/Northwind/Reference.cs | 26 +- .../demo-rpc-client-silverlight.csproj | 70 +- .../ClientBin/demo-rpc-client-silverlight.xap | Bin 88877 -> 67645 bytes .../Properties/AssemblyInfo.cs | 4 +- .../protobuf-net.Extensions.csproj | 1 + protobuf-net/Properties/AssemblyInfo.cs | 4 +- .../ProtoBehaviorExtensionElement.cs | 43 + .../ServiceModel/ProtoEndpointBehavior.cs | 82 + protobuf-net/protobuf-net.csproj | 3 + .../protobuf-net_Silverlight.csproj | 7 +- 31 files changed, 1597 insertions(+), 931 deletions(-) create mode 100644 Examples/Issues/Issue70.cs create mode 100644 WcfPerfTest/Demo.suo create mode 100644 WcfPerfTest/WcfServer/BasicMessage.cs create mode 100644 WcfPerfTest/WcfServer/BasicMessage.proto create mode 100644 WcfPerfTest/WcfServer/BasicService.asmx create mode 100644 WcfPerfTest/WcfServer/BasicService.asmx.cs create mode 100644 WcfPerfTest/WcfServer/BasicService.svc create mode 100644 WcfPerfTest/WcfServer/BasicService.svc.cs create mode 100644 WcfPerfTest/WcfServer/IBasicService.cs create mode 100644 protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs create mode 100644 protobuf-net/ServiceModel/ProtoEndpointBehavior.cs diff --git a/Examples/Examples.csproj b/Examples/Examples.csproj index 2b47e21fb..6062e434c 100644 --- a/Examples/Examples.csproj +++ b/Examples/Examples.csproj @@ -141,6 +141,8 @@ + + @@ -169,6 +171,12 @@ Always + + True + True + True + NewTest.proto + True @@ -289,6 +297,10 @@ PreserveNewest + + ProtoBufTool + NewTest.cs + %3bfixCase%3bdatacontract ProtoBufTool diff --git a/Examples/Issues/Issue70.cs b/Examples/Issues/Issue70.cs new file mode 100644 index 000000000..991746c1f --- /dev/null +++ b/Examples/Issues/Issue70.cs @@ -0,0 +1,60 @@ +using NUnit.Framework; +using ProtoBuf; +using System.IO; + +namespace Examples.Issues +{ + [TestFixture, Ignore("not sure we want to support this")] + public class Issue70 { + + [ProtoContract] + public class Strange // test entity + { + [ProtoMember(1)] + public string Foo { get; set; } // test prop + [ProtoMember(2)] + public int Bar { get; set; } // test prop + } + + [Test] + public void SerializaeWithLengthPrefixShouldWorkWithBase128() + { + var original = new Strange { Foo = "abc", Bar = 123 }; + // serialize and deserialize with base-128 + using (MemoryStream ms = new MemoryStream()) + { + Serializer.SerializeWithLengthPrefix(ms, original, PrefixStyle.Base128, 1); + ms.Position = 0; + object obj; + Serializer.NonGeneric.TryDeserializeWithLengthPrefix(ms, + PrefixStyle.Base128, i => typeof(Strange), out obj); + var clone = (Strange)obj; + Assert.AreNotSame(original, clone); + Assert.IsNotNull(clone); + Assert.AreEqual(original.Foo, clone.Foo, "Foo"); + Assert.AreEqual(original.Bar, clone.Bar, "Bar"); + } + } + [Test] + public void SerializaeWithLengthPrefixShouldWorkWithFixed32() + { + var original = new Strange { Foo = "abc", Bar = 123 }; + // serialize and deserialize with fixed-32 + using (MemoryStream ms = new MemoryStream()) + { + Serializer.SerializeWithLengthPrefix(ms, original, PrefixStyle.Fixed32, 1); + ms.Position = 0; + object obj; + // BOOM here; oh how embarrassing + Serializer.NonGeneric.TryDeserializeWithLengthPrefix(ms, + PrefixStyle.Fixed32, i => typeof(Strange), out obj); + var clone = (Strange)obj; + Assert.AreNotSame(original, clone); + Assert.IsNotNull(clone); + Assert.AreEqual(original.Foo, clone.Foo, "Foo"); + Assert.AreEqual(original.Bar, clone.Bar, "Bar"); + } + } + + } +} \ No newline at end of file diff --git a/Proto.sln b/Proto.sln index b9d14e5b4..5a8fa2a43 100644 --- a/Proto.sln +++ b/Proto.sln @@ -5,7 +5,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Exampl EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "protobuf-net", "protobuf-net\protobuf-net.csproj", "{8374E4D7-2A91-48F1-9360-09B09CF27C3F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "protobuf-net_Silverlight", "protobuf-net_Silverlight\protobuf-net_Silverlight.csproj", "{35032FC5-65E0-4FE4-8DBC-A31F0694EC14}" +Project("{00000000-0000-0000-0000-000000000000}") = "protobuf-net_Silverlight", "protobuf-net_Silverlight\protobuf-net_Silverlight.csproj", "{35032FC5-65E0-4FE4-8DBC-A31F0694EC14}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SilverlightExtended", "SilverlightExtended\SilverlightExtended.csproj", "{05A18144-D234-46D7-A36C-CD45BA884746}" EndProject @@ -27,7 +27,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LateLoaded", "LateLoaded\La EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "protobuf-net.Extensions", "protobuf-net.Extensions\protobuf-net.Extensions.csproj", "{927AB924-08B5-4629-B505-3BC78A61B0D6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demo-rpc-client-silverlight", "demo-rpc-client-silverlight\demo-rpc-client-silverlight.csproj", "{7C741476-7F39-4C17-9806-C839A5683463}" +Project("{00000000-0000-0000-0000-000000000000}") = "demo-rpc-client-silverlight", "demo-rpc-client-silverlight\demo-rpc-client-silverlight.csproj", "{7C741476-7F39-4C17-9806-C839A5683463}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demo-rpc-server-mvc", "demo-rpc-server-mvc\demo-rpc-server-mvc.csproj", "{2F293C90-1DE4-4CE1-AFA7-D0B36E0CA8A9}" EndProject diff --git a/ProtoGen/Properties/AssemblyInfo.cs b/ProtoGen/Properties/AssemblyInfo.cs index 04c13fe47..795fb96ce 100644 --- a/ProtoGen/Properties/AssemblyInfo.cs +++ b/ProtoGen/Properties/AssemblyInfo.cs @@ -33,5 +33,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.262")] -[assembly: AssemblyFileVersion("1.0.0.262")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.0.264")] +[assembly: AssemblyFileVersion("1.0.0.264")] \ No newline at end of file diff --git a/ProtoGen/descriptor.cs b/ProtoGen/descriptor.cs index fc903384f..5ce538c26 100644 --- a/ProtoGen/descriptor.cs +++ b/ProtoGen/descriptor.cs @@ -10,811 +10,811 @@ // Generated from: ProtoGen/descriptor.proto namespace google.protobuf { - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"FileDescriptorSet")] - public partial class FileDescriptorSet : global::ProtoBuf.IExtensible - { - public FileDescriptorSet() { } - - private readonly global::System.Collections.Generic.List _file = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(1, Name = @"file", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List file - { - get { return _file; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"FileDescriptorProto")] - public partial class FileDescriptorProto : global::ProtoBuf.IExtensible - { - public FileDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - - private string _package = ""; - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"package", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string package - { - get { return _package; } - set { _package = value; } - } - private readonly global::System.Collections.Generic.List _dependency = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(3, Name = @"dependency", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List dependency - { - get { return _dependency; } - } - - private readonly global::System.Collections.Generic.List _message_type = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(4, Name = @"message_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List message_type - { - get { return _message_type; } - } - - private readonly global::System.Collections.Generic.List _enum_type = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(5, Name = @"enum_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List enum_type - { - get { return _enum_type; } - } - - private readonly global::System.Collections.Generic.List _service = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(6, Name = @"service", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List service - { - get { return _service; } - } - - private readonly global::System.Collections.Generic.List _extension = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(7, Name = @"extension", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List extension - { - get { return _extension; } - } - - - private google.protobuf.FileOptions _options = null; - [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.FileOptions options - { - get { return _options; } - set { _options = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"DescriptorProto")] - public partial class DescriptorProto : global::ProtoBuf.IExtensible - { - public DescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - private readonly global::System.Collections.Generic.List _field = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(2, Name = @"field", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List field - { - get { return _field; } - } - - private readonly global::System.Collections.Generic.List _extension = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(6, Name = @"extension", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List extension - { - get { return _extension; } - } - - private readonly global::System.Collections.Generic.List _nested_type = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(3, Name = @"nested_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List nested_type - { - get { return _nested_type; } - } - - private readonly global::System.Collections.Generic.List _enum_type = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(4, Name = @"enum_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List enum_type - { - get { return _enum_type; } - } - - private readonly global::System.Collections.Generic.List _extension_range = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(5, Name = @"extension_range", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List extension_range - { - get { return _extension_range; } - } - - - private google.protobuf.MessageOptions _options = null; - [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.MessageOptions options - { - get { return _options; } - set { _options = value; } - } - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"ExtensionRange")] - public partial class ExtensionRange : global::ProtoBuf.IExtensible - { - public ExtensionRange() { } - - - private int _start = default(int); - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"start", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(int))] - public int start - { - get { return _start; } - set { _start = value; } - } - - private int _end = default(int); - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"end", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(int))] - public int end - { - get { return _end; } - set { _end = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"FieldDescriptorProto")] - public partial class FieldDescriptorProto : global::ProtoBuf.IExtensible - { - public FieldDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - - private int _number = default(int); - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"number", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(int))] - public int number - { - get { return _number; } - set { _number = value; } - } - - private google.protobuf.FieldDescriptorProto.Label _label = google.protobuf.FieldDescriptorProto.Label.LABEL_OPTIONAL; - [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name = @"label", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(google.protobuf.FieldDescriptorProto.Label.LABEL_OPTIONAL)] - public google.protobuf.FieldDescriptorProto.Label label - { - get { return _label; } - set { _label = value; } - } - - private google.protobuf.FieldDescriptorProto.Type _type = google.protobuf.FieldDescriptorProto.Type.TYPE_DOUBLE; - [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name = @"type", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(google.protobuf.FieldDescriptorProto.Type.TYPE_DOUBLE)] - public google.protobuf.FieldDescriptorProto.Type type - { - get { return _type; } - set { _type = value; } - } - - private string _type_name = ""; - [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name = @"type_name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string type_name - { - get { return _type_name; } - set { _type_name = value; } - } - - private string _extendee = ""; - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"extendee", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string extendee - { - get { return _extendee; } - set { _extendee = value; } - } - - private string _default_value = ""; - [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name = @"default_value", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string default_value - { - get { return _default_value; } - set { _default_value = value; } - } - - private google.protobuf.FieldOptions _options = null; - [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.FieldOptions options - { - get { return _options; } - set { _options = value; } - } - [global::ProtoBuf.ProtoContract(Name = @"Type")] - public enum Type - { - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_DOUBLE", Value = 1)] - TYPE_DOUBLE = 1, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_FLOAT", Value = 2)] - TYPE_FLOAT = 2, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_INT64", Value = 3)] - TYPE_INT64 = 3, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_UINT64", Value = 4)] - TYPE_UINT64 = 4, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_INT32", Value = 5)] - TYPE_INT32 = 5, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_FIXED64", Value = 6)] - TYPE_FIXED64 = 6, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_FIXED32", Value = 7)] - TYPE_FIXED32 = 7, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_BOOL", Value = 8)] - TYPE_BOOL = 8, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_STRING", Value = 9)] - TYPE_STRING = 9, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_GROUP", Value = 10)] - TYPE_GROUP = 10, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_MESSAGE", Value = 11)] - TYPE_MESSAGE = 11, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_BYTES", Value = 12)] - TYPE_BYTES = 12, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_UINT32", Value = 13)] - TYPE_UINT32 = 13, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_ENUM", Value = 14)] - TYPE_ENUM = 14, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_SFIXED32", Value = 15)] - TYPE_SFIXED32 = 15, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_SFIXED64", Value = 16)] - TYPE_SFIXED64 = 16, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_SINT32", Value = 17)] - TYPE_SINT32 = 17, - - [global::ProtoBuf.ProtoEnum(Name = @"TYPE_SINT64", Value = 18)] - TYPE_SINT64 = 18 - } - - [global::ProtoBuf.ProtoContract(Name = @"Label")] - public enum Label - { - - [global::ProtoBuf.ProtoEnum(Name = @"LABEL_OPTIONAL", Value = 1)] - LABEL_OPTIONAL = 1, - - [global::ProtoBuf.ProtoEnum(Name = @"LABEL_REQUIRED", Value = 2)] - LABEL_REQUIRED = 2, - - [global::ProtoBuf.ProtoEnum(Name = @"LABEL_REPEATED", Value = 3)] - LABEL_REPEATED = 3 - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"EnumDescriptorProto")] - public partial class EnumDescriptorProto : global::ProtoBuf.IExtensible - { - public EnumDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - private readonly global::System.Collections.Generic.List _value = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(2, Name = @"value", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List value - { - get { return _value; } - } - + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"FileDescriptorSet")] + public partial class FileDescriptorSet : global::ProtoBuf.IExtensible + { + public FileDescriptorSet() {} + + private readonly global::System.Collections.Generic.List _file = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(1, Name=@"file", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List file + { + get { return _file; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"FileDescriptorProto")] + public partial class FileDescriptorProto : global::ProtoBuf.IExtensible + { + public FileDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + + private string _package = ""; + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"package", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string package + { + get { return _package; } + set { _package = value; } + } + private readonly global::System.Collections.Generic.List _dependency = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(3, Name=@"dependency", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List dependency + { + get { return _dependency; } + } + + private readonly global::System.Collections.Generic.List _message_type = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(4, Name=@"message_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List message_type + { + get { return _message_type; } + } + + private readonly global::System.Collections.Generic.List _enum_type = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(5, Name=@"enum_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List enum_type + { + get { return _enum_type; } + } + + private readonly global::System.Collections.Generic.List _service = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(6, Name=@"service", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List service + { + get { return _service; } + } + + private readonly global::System.Collections.Generic.List _extension = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(7, Name=@"extension", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List extension + { + get { return _extension; } + } + + + private google.protobuf.FileOptions _options = null; + [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.FileOptions options + { + get { return _options; } + set { _options = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"DescriptorProto")] + public partial class DescriptorProto : global::ProtoBuf.IExtensible + { + public DescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + private readonly global::System.Collections.Generic.List _field = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(2, Name=@"field", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List field + { + get { return _field; } + } + + private readonly global::System.Collections.Generic.List _extension = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(6, Name=@"extension", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List extension + { + get { return _extension; } + } + + private readonly global::System.Collections.Generic.List _nested_type = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(3, Name=@"nested_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List nested_type + { + get { return _nested_type; } + } + + private readonly global::System.Collections.Generic.List _enum_type = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(4, Name=@"enum_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List enum_type + { + get { return _enum_type; } + } + + private readonly global::System.Collections.Generic.List _extension_range = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(5, Name=@"extension_range", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List extension_range + { + get { return _extension_range; } + } + + + private google.protobuf.MessageOptions _options = null; + [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.MessageOptions options + { + get { return _options; } + set { _options = value; } + } + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ExtensionRange")] + public partial class ExtensionRange : global::ProtoBuf.IExtensible + { + public ExtensionRange() {} + + + private int _start = default(int); + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"start", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int start + { + get { return _start; } + set { _start = value; } + } + + private int _end = default(int); + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"end", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int end + { + get { return _end; } + set { _end = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"FieldDescriptorProto")] + public partial class FieldDescriptorProto : global::ProtoBuf.IExtensible + { + public FieldDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + + private int _number = default(int); + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"number", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int number + { + get { return _number; } + set { _number = value; } + } - private google.protobuf.EnumOptions _options = null; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.EnumOptions options - { - get { return _options; } - set { _options = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"EnumValueDescriptorProto")] - public partial class EnumValueDescriptorProto : global::ProtoBuf.IExtensible - { - public EnumValueDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - - private int _number = default(int); - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"number", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(int))] - public int number - { - get { return _number; } - set { _number = value; } - } - - private google.protobuf.EnumValueOptions _options = null; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.EnumValueOptions options - { - get { return _options; } - set { _options = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"ServiceDescriptorProto")] - public partial class ServiceDescriptorProto : global::ProtoBuf.IExtensible - { - public ServiceDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - private readonly global::System.Collections.Generic.List _method = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(2, Name = @"method", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List method - { - get { return _method; } - } - - - private google.protobuf.ServiceOptions _options = null; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.ServiceOptions options - { - get { return _options; } - set { _options = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"MethodDescriptorProto")] - public partial class MethodDescriptorProto : global::ProtoBuf.IExtensible - { - public MethodDescriptorProto() { } - - - private string _name = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string name - { - get { return _name; } - set { _name = value; } - } - - private string _input_type = ""; - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"input_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string input_type - { - get { return _input_type; } - set { _input_type = value; } - } - - private string _output_type = ""; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"output_type", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string output_type - { - get { return _output_type; } - set { _output_type = value; } - } - - private google.protobuf.MethodOptions _options = null; - [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name = @"options", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public google.protobuf.MethodOptions options - { - get { return _options; } - set { _options = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"FileOptions")] - public partial class FileOptions : global::ProtoBuf.IExtensible - { - public FileOptions() { } - - - private string _java_package = ""; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"java_package", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string java_package - { - get { return _java_package; } - set { _java_package = value; } - } - - private string _java_outer_classname = ""; - [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name = @"java_outer_classname", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string java_outer_classname - { - get { return _java_outer_classname; } - set { _java_outer_classname = value; } - } - - private bool _java_multiple_files = (bool)false; - [global::ProtoBuf.ProtoMember(10, IsRequired = false, Name = @"java_multiple_files", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue((bool)false)] - public bool java_multiple_files - { - get { return _java_multiple_files; } - set { _java_multiple_files = value; } - } - - private google.protobuf.FileOptions.OptimizeMode _optimize_for = google.protobuf.FileOptions.OptimizeMode.SPEED; - [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name = @"optimize_for", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(google.protobuf.FileOptions.OptimizeMode.SPEED)] - public google.protobuf.FileOptions.OptimizeMode optimize_for - { - get { return _optimize_for; } - set { _optimize_for = value; } - } - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - - private string _namespace = ""; - [global::ProtoBuf.ProtoMember(52500, IsRequired = false, Name = @"namespace", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string @namespace - { - get { return _namespace; } - set { _namespace = value; } - } - [global::ProtoBuf.ProtoContract(Name = @"OptimizeMode")] - public enum OptimizeMode - { - - [global::ProtoBuf.ProtoEnum(Name = @"SPEED", Value = 1)] - SPEED = 1, - - [global::ProtoBuf.ProtoEnum(Name = @"CODE_SIZE", Value = 2)] - CODE_SIZE = 2 - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"MessageOptions")] - public partial class MessageOptions : global::ProtoBuf.IExtensible - { - public MessageOptions() { } - - - private bool _message_set_wire_format = (bool)false; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"message_set_wire_format", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue((bool)false)] - public bool message_set_wire_format - { - get { return _message_set_wire_format; } - set { _message_set_wire_format = value; } - } - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"FieldOptions")] - public partial class FieldOptions : global::ProtoBuf.IExtensible - { - public FieldOptions() { } - - - private google.protobuf.FieldOptions.CType _ctype = google.protobuf.FieldOptions.CType.CORD; - [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"ctype", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(google.protobuf.FieldOptions.CType.CORD)] - public google.protobuf.FieldOptions.CType ctype - { - get { return _ctype; } - set { _ctype = value; } - } - - private bool _packed = default(bool); - [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = @"packed", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(default(bool))] - public bool packed - { - get { return _packed; } - set { _packed = value; } - } - - private bool _deprecated = (bool)false; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"deprecated", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue((bool)false)] - public bool deprecated - { - get { return _deprecated; } - set { _deprecated = value; } - } - - private string _experimental_map_key = ""; - [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name = @"experimental_map_key", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string experimental_map_key - { - get { return _experimental_map_key; } - set { _experimental_map_key = value; } - } - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - [global::ProtoBuf.ProtoContract(Name = @"CType")] - public enum CType - { - - [global::ProtoBuf.ProtoEnum(Name = @"CORD", Value = 1)] - CORD = 1, - - [global::ProtoBuf.ProtoEnum(Name = @"STRING_PIECE", Value = 2)] - STRING_PIECE = 2 - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"EnumOptions")] - public partial class EnumOptions : global::ProtoBuf.IExtensible - { - public EnumOptions() { } - - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"EnumValueOptions")] - public partial class EnumValueOptions : global::ProtoBuf.IExtensible - { - public EnumValueOptions() { } - - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"ServiceOptions")] - public partial class ServiceOptions : global::ProtoBuf.IExtensible - { - public ServiceOptions() { } - - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"MethodOptions")] - public partial class MethodOptions : global::ProtoBuf.IExtensible - { - public MethodOptions() { } - - private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(999, Name = @"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List uninterpreted_option - { - get { return _uninterpreted_option; } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"UninterpretedOption")] - public partial class UninterpretedOption : global::ProtoBuf.IExtensible - { - public UninterpretedOption() { } - - private readonly global::System.Collections.Generic.List _name = new global::System.Collections.Generic.List(); - [global::ProtoBuf.ProtoMember(2, Name = @"name", DataFormat = global::ProtoBuf.DataFormat.Default)] - public global::System.Collections.Generic.List name - { - get { return _name; } - } - - - private string _identifier_value = ""; - [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = @"identifier_value", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue("")] - public string identifier_value - { - get { return _identifier_value; } - set { _identifier_value = value; } - } - - private ulong _positive_int_value = default(ulong); - [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name = @"positive_int_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(ulong))] - public ulong positive_int_value - { - get { return _positive_int_value; } - set { _positive_int_value = value; } - } - - private long _negative_int_value = default(long); - [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name = @"negative_int_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(long))] - public long negative_int_value - { - get { return _negative_int_value; } - set { _negative_int_value = value; } - } - - private double _double_value = default(double); - [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name = @"double_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] - [global::System.ComponentModel.DefaultValue(default(double))] - public double double_value - { - get { return _double_value; } - set { _double_value = value; } - } - - private byte[] _string_value = null; - [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name = @"string_value", DataFormat = global::ProtoBuf.DataFormat.Default)] - [global::System.ComponentModel.DefaultValue(null)] - public byte[] string_value - { - get { return _string_value; } - set { _string_value = value; } - } - [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = @"NamePart")] - public partial class NamePart : global::ProtoBuf.IExtensible - { - public NamePart() { } - - private string _name_part; - [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name = @"name_part", DataFormat = global::ProtoBuf.DataFormat.Default)] - public string name_part - { - get { return _name_part; } - set { _name_part = value; } - } - private bool _is_extension; - [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name = @"is_extension", DataFormat = global::ProtoBuf.DataFormat.Default)] - public bool is_extension - { - get { return _is_extension; } - set { _is_extension = value; } - } - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } - } - - private global::ProtoBuf.IExtension extensionObject; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + private google.protobuf.FieldDescriptorProto.Label _label = google.protobuf.FieldDescriptorProto.Label.LABEL_OPTIONAL; + [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"label", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(google.protobuf.FieldDescriptorProto.Label.LABEL_OPTIONAL)] + public google.protobuf.FieldDescriptorProto.Label label + { + get { return _label; } + set { _label = value; } + } + + private google.protobuf.FieldDescriptorProto.Type _type = google.protobuf.FieldDescriptorProto.Type.TYPE_DOUBLE; + [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"type", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(google.protobuf.FieldDescriptorProto.Type.TYPE_DOUBLE)] + public google.protobuf.FieldDescriptorProto.Type type + { + get { return _type; } + set { _type = value; } + } + + private string _type_name = ""; + [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"type_name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string type_name + { + get { return _type_name; } + set { _type_name = value; } } + private string _extendee = ""; + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"extendee", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string extendee + { + get { return _extendee; } + set { _extendee = value; } + } + + private string _default_value = ""; + [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"default_value", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string default_value + { + get { return _default_value; } + set { _default_value = value; } + } + + private google.protobuf.FieldOptions _options = null; + [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.FieldOptions options + { + get { return _options; } + set { _options = value; } + } + [global::ProtoBuf.ProtoContract(Name=@"Type")] + public enum Type + { + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_DOUBLE", Value=1)] + TYPE_DOUBLE = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_FLOAT", Value=2)] + TYPE_FLOAT = 2, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_INT64", Value=3)] + TYPE_INT64 = 3, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_UINT64", Value=4)] + TYPE_UINT64 = 4, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_INT32", Value=5)] + TYPE_INT32 = 5, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_FIXED64", Value=6)] + TYPE_FIXED64 = 6, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_FIXED32", Value=7)] + TYPE_FIXED32 = 7, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_BOOL", Value=8)] + TYPE_BOOL = 8, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_STRING", Value=9)] + TYPE_STRING = 9, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_GROUP", Value=10)] + TYPE_GROUP = 10, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_MESSAGE", Value=11)] + TYPE_MESSAGE = 11, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_BYTES", Value=12)] + TYPE_BYTES = 12, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_UINT32", Value=13)] + TYPE_UINT32 = 13, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_ENUM", Value=14)] + TYPE_ENUM = 14, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_SFIXED32", Value=15)] + TYPE_SFIXED32 = 15, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_SFIXED64", Value=16)] + TYPE_SFIXED64 = 16, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_SINT32", Value=17)] + TYPE_SINT32 = 17, + + [global::ProtoBuf.ProtoEnum(Name=@"TYPE_SINT64", Value=18)] + TYPE_SINT64 = 18 + } + + [global::ProtoBuf.ProtoContract(Name=@"Label")] + public enum Label + { + + [global::ProtoBuf.ProtoEnum(Name=@"LABEL_OPTIONAL", Value=1)] + LABEL_OPTIONAL = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"LABEL_REQUIRED", Value=2)] + LABEL_REQUIRED = 2, + + [global::ProtoBuf.ProtoEnum(Name=@"LABEL_REPEATED", Value=3)] + LABEL_REPEATED = 3 + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EnumDescriptorProto")] + public partial class EnumDescriptorProto : global::ProtoBuf.IExtensible + { + public EnumDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + private readonly global::System.Collections.Generic.List _value = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(2, Name=@"value", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List value + { + get { return _value; } + } + + + private google.protobuf.EnumOptions _options = null; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.EnumOptions options + { + get { return _options; } + set { _options = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EnumValueDescriptorProto")] + public partial class EnumValueDescriptorProto : global::ProtoBuf.IExtensible + { + public EnumValueDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + + private int _number = default(int); + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"number", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(int))] + public int number + { + get { return _number; } + set { _number = value; } + } + + private google.protobuf.EnumValueOptions _options = null; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.EnumValueOptions options + { + get { return _options; } + set { _options = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ServiceDescriptorProto")] + public partial class ServiceDescriptorProto : global::ProtoBuf.IExtensible + { + public ServiceDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + private readonly global::System.Collections.Generic.List _method = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(2, Name=@"method", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List method + { + get { return _method; } + } + + + private google.protobuf.ServiceOptions _options = null; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.ServiceOptions options + { + get { return _options; } + set { _options = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MethodDescriptorProto")] + public partial class MethodDescriptorProto : global::ProtoBuf.IExtensible + { + public MethodDescriptorProto() {} + + + private string _name = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string name + { + get { return _name; } + set { _name = value; } + } + + private string _input_type = ""; + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"input_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string input_type + { + get { return _input_type; } + set { _input_type = value; } + } + + private string _output_type = ""; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"output_type", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string output_type + { + get { return _output_type; } + set { _output_type = value; } + } + + private google.protobuf.MethodOptions _options = null; + [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"options", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public google.protobuf.MethodOptions options + { + get { return _options; } + set { _options = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"FileOptions")] + public partial class FileOptions : global::ProtoBuf.IExtensible + { + public FileOptions() {} + + + private string _java_package = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"java_package", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string java_package + { + get { return _java_package; } + set { _java_package = value; } + } + + private string _java_outer_classname = ""; + [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name=@"java_outer_classname", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string java_outer_classname + { + get { return _java_outer_classname; } + set { _java_outer_classname = value; } + } + + private bool _java_multiple_files = (bool)false; + [global::ProtoBuf.ProtoMember(10, IsRequired = false, Name=@"java_multiple_files", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue((bool)false)] + public bool java_multiple_files + { + get { return _java_multiple_files; } + set { _java_multiple_files = value; } + } + + private google.protobuf.FileOptions.OptimizeMode _optimize_for = google.protobuf.FileOptions.OptimizeMode.SPEED; + [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name=@"optimize_for", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(google.protobuf.FileOptions.OptimizeMode.SPEED)] + public google.protobuf.FileOptions.OptimizeMode optimize_for + { + get { return _optimize_for; } + set { _optimize_for = value; } + } + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + + private string _namespace = ""; + [global::ProtoBuf.ProtoMember(52500, IsRequired = false, Name=@"namespace", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string @namespace + { + get { return _namespace; } + set { _namespace = value; } + } + [global::ProtoBuf.ProtoContract(Name=@"OptimizeMode")] + public enum OptimizeMode + { + + [global::ProtoBuf.ProtoEnum(Name=@"SPEED", Value=1)] + SPEED = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"CODE_SIZE", Value=2)] + CODE_SIZE = 2 + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MessageOptions")] + public partial class MessageOptions : global::ProtoBuf.IExtensible + { + public MessageOptions() {} + + + private bool _message_set_wire_format = (bool)false; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"message_set_wire_format", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue((bool)false)] + public bool message_set_wire_format + { + get { return _message_set_wire_format; } + set { _message_set_wire_format = value; } + } + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"FieldOptions")] + public partial class FieldOptions : global::ProtoBuf.IExtensible + { + public FieldOptions() {} + + + private google.protobuf.FieldOptions.CType _ctype = google.protobuf.FieldOptions.CType.CORD; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"ctype", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(google.protobuf.FieldOptions.CType.CORD)] + public google.protobuf.FieldOptions.CType ctype + { + get { return _ctype; } + set { _ctype = value; } + } + + private bool _packed = default(bool); + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"packed", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(default(bool))] + public bool packed + { + get { return _packed; } + set { _packed = value; } + } + + private bool _deprecated = (bool)false; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"deprecated", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue((bool)false)] + public bool deprecated + { + get { return _deprecated; } + set { _deprecated = value; } + } + + private string _experimental_map_key = ""; + [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name=@"experimental_map_key", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string experimental_map_key + { + get { return _experimental_map_key; } + set { _experimental_map_key = value; } + } + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + [global::ProtoBuf.ProtoContract(Name=@"CType")] + public enum CType + { + + [global::ProtoBuf.ProtoEnum(Name=@"CORD", Value=1)] + CORD = 1, + + [global::ProtoBuf.ProtoEnum(Name=@"STRING_PIECE", Value=2)] + STRING_PIECE = 2 + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EnumOptions")] + public partial class EnumOptions : global::ProtoBuf.IExtensible + { + public EnumOptions() {} + + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EnumValueOptions")] + public partial class EnumValueOptions : global::ProtoBuf.IExtensible + { + public EnumValueOptions() {} + + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ServiceOptions")] + public partial class ServiceOptions : global::ProtoBuf.IExtensible + { + public ServiceOptions() {} + + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MethodOptions")] + public partial class MethodOptions : global::ProtoBuf.IExtensible + { + public MethodOptions() {} + + private readonly global::System.Collections.Generic.List _uninterpreted_option = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(999, Name=@"uninterpreted_option", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List uninterpreted_option + { + get { return _uninterpreted_option; } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"UninterpretedOption")] + public partial class UninterpretedOption : global::ProtoBuf.IExtensible + { + public UninterpretedOption() {} + + private readonly global::System.Collections.Generic.List _name = new global::System.Collections.Generic.List(); + [global::ProtoBuf.ProtoMember(2, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + public global::System.Collections.Generic.List name + { + get { return _name; } + } + + + private string _identifier_value = ""; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"identifier_value", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string identifier_value + { + get { return _identifier_value; } + set { _identifier_value = value; } + } + + private ulong _positive_int_value = default(ulong); + [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"positive_int_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(ulong))] + public ulong positive_int_value + { + get { return _positive_int_value; } + set { _positive_int_value = value; } + } + + private long _negative_int_value = default(long); + [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"negative_int_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(long))] + public long negative_int_value + { + get { return _negative_int_value; } + set { _negative_int_value = value; } + } + + private double _double_value = default(double); + [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"double_value", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.ComponentModel.DefaultValue(default(double))] + public double double_value + { + get { return _double_value; } + set { _double_value = value; } + } + + private byte[] _string_value = null; + [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"string_value", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public byte[] string_value + { + get { return _string_value; } + set { _string_value = value; } + } + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"NamePart")] + public partial class NamePart : global::ProtoBuf.IExtensible + { + public NamePart() {} + + private string _name_part; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"name_part", DataFormat = global::ProtoBuf.DataFormat.Default)] + public string name_part + { + get { return _name_part; } + set { _name_part = value; } + } + private bool _is_extension; + [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"is_extension", DataFormat = global::ProtoBuf.DataFormat.Default)] + public bool is_extension + { + get { return _is_extension; } + set { _is_extension = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + } // Generated from: protobuf-net.proto // Note: requires additional types generated from: descriptor.proto diff --git a/WcfPerfTest/Demo.sln b/WcfPerfTest/Demo.sln index 18ca31132..dbafd3f07 100644 --- a/WcfPerfTest/Demo.sln +++ b/WcfPerfTest/Demo.sln @@ -5,10 +5,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WcfServer", "WcfServer\WcfS EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WcfClient", "WcfClient\WcfClient.csproj", "{2FA62B40-8557-4CFB-952C-2A2122173479}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "protobuf-net", "..\protobuf-net\protobuf-net.csproj", "{8374E4D7-2A91-48F1-9360-09B09CF27C3F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Net20|Any CPU = Net20|Any CPU + Profile|Any CPU = Profile|Any CPU Release|Any CPU = Release|Any CPU Silverlight2|Any CPU = Silverlight2|Any CPU EndGlobalSection @@ -17,6 +20,8 @@ Global {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Debug|Any CPU.Build.0 = Debug|Any CPU {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Net20|Any CPU.ActiveCfg = Release|Any CPU {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Net20|Any CPU.Build.0 = Release|Any CPU + {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Profile|Any CPU.ActiveCfg = Release|Any CPU + {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Profile|Any CPU.Build.0 = Release|Any CPU {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Release|Any CPU.ActiveCfg = Release|Any CPU {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Release|Any CPU.Build.0 = Release|Any CPU {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD}.Silverlight2|Any CPU.ActiveCfg = Release|Any CPU @@ -25,10 +30,22 @@ Global {2FA62B40-8557-4CFB-952C-2A2122173479}.Debug|Any CPU.Build.0 = Debug|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Net20|Any CPU.ActiveCfg = Release|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Net20|Any CPU.Build.0 = Release|Any CPU + {2FA62B40-8557-4CFB-952C-2A2122173479}.Profile|Any CPU.ActiveCfg = Release|Any CPU + {2FA62B40-8557-4CFB-952C-2A2122173479}.Profile|Any CPU.Build.0 = Release|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Release|Any CPU.ActiveCfg = Release|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Release|Any CPU.Build.0 = Release|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Silverlight2|Any CPU.ActiveCfg = Release|Any CPU {2FA62B40-8557-4CFB-952C-2A2122173479}.Silverlight2|Any CPU.Build.0 = Release|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Net20|Any CPU.ActiveCfg = Net20|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Net20|Any CPU.Build.0 = Net20|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Profile|Any CPU.ActiveCfg = Profile|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Profile|Any CPU.Build.0 = Profile|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Release|Any CPU.Build.0 = Release|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Silverlight2|Any CPU.ActiveCfg = Silverlight2|Any CPU + {8374E4D7-2A91-48F1-9360-09B09CF27C3F}.Silverlight2|Any CPU.Build.0 = Silverlight2|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/WcfPerfTest/Demo.suo b/WcfPerfTest/Demo.suo new file mode 100644 index 0000000000000000000000000000000000000000..bb0dc480779f540368ce86c397e5aa1df23ce5e4 GIT binary patch literal 55296 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 literal 0 HcmV?d00001 diff --git a/WcfPerfTest/WcfClient/Form1.Designer.cs b/WcfPerfTest/WcfClient/Form1.Designer.cs index 1af859ce7..e171f5fc5 100644 --- a/WcfPerfTest/WcfClient/Form1.Designer.cs +++ b/WcfPerfTest/WcfClient/Form1.Designer.cs @@ -54,7 +54,7 @@ private void InitializeComponent() // // button2 // - this.button2.Location = new System.Drawing.Point(92, 13); + this.button2.Location = new System.Drawing.Point(192, 13); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(46, 23); this.button2.TabIndex = 1; @@ -96,7 +96,7 @@ private void InitializeComponent() this.dataGridView1.Location = new System.Drawing.Point(175, 42); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.ReadOnly = true; - this.dataGridView1.Size = new System.Drawing.Size(353, 265); + this.dataGridView1.Size = new System.Drawing.Size(521, 265); this.dataGridView1.TabIndex = 3; // // orderIDDataGridViewTextBoxColumn @@ -150,19 +150,19 @@ private void InitializeComponent() // this.button3.Location = new System.Drawing.Point(12, 13); this.button3.Name = "button3"; - this.button3.Size = new System.Drawing.Size(34, 23); + this.button3.Size = new System.Drawing.Size(83, 23); this.button3.TabIndex = 5; - this.button3.Text = "Foo"; + this.button3.Text = "vanilla WCF"; this.button3.UseVisualStyleBackColor = true; this.button3.Click += new System.EventHandler(this.button3_Click); // // button4 // - this.button4.Location = new System.Drawing.Point(52, 13); + this.button4.Location = new System.Drawing.Point(101, 13); this.button4.Name = "button4"; - this.button4.Size = new System.Drawing.Size(34, 23); + this.button4.Size = new System.Drawing.Size(85, 23); this.button4.TabIndex = 6; - this.button4.Text = "Bar"; + this.button4.Text = "protobuf-net"; this.button4.UseVisualStyleBackColor = true; this.button4.Click += new System.EventHandler(this.button4_Click); // @@ -170,7 +170,7 @@ private void InitializeComponent() // this.checkBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.checkBox1.AutoSize = true; - this.checkBox1.Location = new System.Drawing.Point(476, 17); + this.checkBox1.Location = new System.Drawing.Point(644, 17); this.checkBox1.Name = "checkBox1"; this.checkBox1.Size = new System.Drawing.Size(52, 17); this.checkBox1.TabIndex = 7; @@ -181,9 +181,9 @@ private void InitializeComponent() // this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.Location = new System.Drawing.Point(144, 13); + this.progressBar1.Location = new System.Drawing.Point(244, 13); this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(211, 22); + this.progressBar1.Size = new System.Drawing.Size(279, 22); this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; this.progressBar1.TabIndex = 8; this.progressBar1.Value = 25; @@ -193,7 +193,7 @@ private void InitializeComponent() // this.checkBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.checkBox2.AutoSize = true; - this.checkBox2.Location = new System.Drawing.Point(407, 17); + this.checkBox2.Location = new System.Drawing.Point(575, 17); this.checkBox2.Name = "checkBox2"; this.checkBox2.Size = new System.Drawing.Size(63, 17); this.checkBox2.TabIndex = 9; @@ -203,7 +203,7 @@ private void InitializeComponent() // numericUpDown1 // this.numericUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.numericUpDown1.Location = new System.Drawing.Point(361, 14); + this.numericUpDown1.Location = new System.Drawing.Point(529, 14); this.numericUpDown1.Maximum = new decimal(new int[] { 150, 0, @@ -222,7 +222,7 @@ private void InitializeComponent() // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(540, 319); + this.ClientSize = new System.Drawing.Size(708, 319); this.Controls.Add(this.numericUpDown1); this.Controls.Add(this.checkBox2); this.Controls.Add(this.progressBar1); diff --git a/WcfPerfTest/WcfClient/Form1.cs b/WcfPerfTest/WcfClient/Form1.cs index 6feb57375..17838a7ab 100644 --- a/WcfPerfTest/WcfClient/Form1.cs +++ b/WcfPerfTest/WcfClient/Form1.cs @@ -48,7 +48,7 @@ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) int count = cheekyCount; copy = set; - string key = "Foo via " + config; + string key = "Vanilla WCF via " + config; Stopwatch fooWatch = Stopwatch.StartNew(); for (int i = 0; i < count; i++) { @@ -60,7 +60,7 @@ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) } fooWatch.Stop(); copy = set; - key = "Bar via " + config; + key = "protobuf-net via " + config; Stopwatch barWatch = Stopwatch.StartNew(); for (int i = 0; i < count; i++) { @@ -74,7 +74,7 @@ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) decimal pc = (barWatch.ElapsedMilliseconds * 100.0M) / fooWatch.ElapsedMilliseconds; - e.Result = string.Format("x{2} via {3} - Foo: {0:###,##0}ms, Bar: {1:###,##0}ms ({4:##.#}%)", + e.Result = string.Format("x{2} via {3} - Vanilla WCF: {0:###,##0}ms, protobuf-net: {1:###,##0}ms ({4:##.#}%)", fooWatch.ElapsedMilliseconds, barWatch.ElapsedMilliseconds, count, config, pc); } } @@ -95,10 +95,14 @@ private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerComple private void button3_Click(object sender, EventArgs e) { + using (var client = new NWindServiceClient(ConfigName)) { - nwindSource.DataSource = client.LoadFoo(); - Text = "Loaded Foo via " + ConfigName; + Stopwatch watch = Stopwatch.StartNew(); + var data = client.LoadFoo(); + watch.Stop(); + nwindSource.DataSource = data; + Text = "Loaded Vanilla WCF via " + ConfigName + " (" + watch.ElapsedMilliseconds + "ms)"; } } @@ -106,8 +110,11 @@ private void button4_Click(object sender, EventArgs e) { using (var client = new NWindServiceClient(ConfigName)) { - nwindSource.DataSource = client.LoadBar(); - Text = "Loaded Bar via " + ConfigName; + Stopwatch watch = Stopwatch.StartNew(); + var data = client.LoadBar(); + watch.Stop(); + nwindSource.DataSource = data; + Text = "Loaded protobuf-net via " + ConfigName + " (" + watch.ElapsedMilliseconds + "ms)"; } } } diff --git a/WcfPerfTest/WcfClient/WcfClient.csproj b/WcfPerfTest/WcfClient/WcfClient.csproj index d31819cd3..f7e156b0c 100644 --- a/WcfPerfTest/WcfClient/WcfClient.csproj +++ b/WcfPerfTest/WcfClient/WcfClient.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - 9.0.30428 + 9.0.30729 2.0 {2FA62B40-8557-4CFB-952C-2A2122173479} WinExe @@ -31,6 +31,10 @@ 4 + + False + ..\..\..\..\Program Files\protobuf-net\protobuf-net-VS9\protobuf-net.dll + 3.5 diff --git a/WcfPerfTest/WcfClient/app.config b/WcfPerfTest/WcfClient/app.config index 92137b9a1..8241b58d3 100644 --- a/WcfPerfTest/WcfClient/app.config +++ b/WcfPerfTest/WcfClient/app.config @@ -1,6 +1,14 @@  + + \ No newline at end of file diff --git a/WcfPerfTest/WcfServer/BasicMessage.cs b/WcfPerfTest/WcfServer/BasicMessage.cs new file mode 100644 index 000000000..e7d2472f7 --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicMessage.cs @@ -0,0 +1,204 @@ + +// Option: data-contract serialization ([DataContract]/[DataMember]) enabled + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from: BasicMessage.proto +namespace BasicProtoDemo +{ + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"BasicMessage")] + [global::System.Runtime.Serialization.DataContract(Name=@"BasicMessage")] + + public partial class BasicMessage : global::ProtoBuf.IExtensible + { + public BasicMessage() {} + + private int _id; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"id", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)] + [global::System.Runtime.Serialization.DataMember(Name=@"id", Order = 1, IsRequired = true)] + + public int Id + { + get { return _id; } + set { _id = value; } + } + private string _name; + [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.Runtime.Serialization.DataMember(Name=@"name", Order = 2, IsRequired = true)] + + public string Name + { + get { return _name; } + set { _name = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"BasicOperationResponse")] + [global::System.Runtime.Serialization.DataContract(Name=@"BasicOperationResponse")] + + public partial class BasicOperationResponse : global::ProtoBuf.IExtensible + { + public BasicOperationResponse() {} + + private BasicProtoDemo.BasicMessage _result; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"result", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.Runtime.Serialization.DataMember(Name=@"result", Order = 1, IsRequired = true)] + + public BasicProtoDemo.BasicMessage Result + { + get { return _result; } + set { _result = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"BasicOperationRequest")] + [global::System.Runtime.Serialization.DataContract(Name=@"BasicOperationRequest")] + + public partial class BasicOperationRequest : global::ProtoBuf.IExtensible + { + public BasicOperationRequest() {} + + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + + [global::System.ServiceModel.ServiceContract(Name = @"BasicService")] + public interface IBasicService + { + + [global::System.ServiceModel.OperationContract(Name = @"BasicOperation")] + [global::ProtoBuf.ServiceModel.ProtoBehavior] + BasicProtoDemo.BasicOperationResponse BasicOperation(BasicProtoDemo.BasicOperationRequest request); + + [global::System.ServiceModel.OperationContract(AsyncPattern = true, Name = @"BasicOperation")] + global::System.IAsyncResult BeginBasicOperation(BasicProtoDemo.BasicOperationRequest request, global::System.AsyncCallback callback, object state); + BasicProtoDemo.BasicOperationResponse EndBasicOperation(global::System.IAsyncResult ar); + + } + + + public partial class BasicOperationCompletedEventArgs : global::System.ComponentModel.AsyncCompletedEventArgs + { + private object[] results; + + public BasicOperationCompletedEventArgs(object[] results, global::System.Exception exception, bool cancelled, object userState) + : base(exception, cancelled, userState) + { + this.results = results; + } + + public BasicProtoDemo.BasicOperationResponse Result + { + get { + base.RaiseExceptionIfNecessary(); + return (BasicProtoDemo.BasicOperationResponse)(this.results[0]); + } + } + } + + + [global::System.Diagnostics.DebuggerStepThroughAttribute()] + public partial class BasicServiceClient : global::System.ServiceModel.ClientBase, IBasicService + { + + public BasicServiceClient() + {} + public BasicServiceClient(string endpointConfigurationName) + : base(endpointConfigurationName) + {} + public BasicServiceClient(string endpointConfigurationName, string remoteAddress) + : base(endpointConfigurationName, remoteAddress) + {} + public BasicServiceClient(string endpointConfigurationName, global::System.ServiceModel.EndpointAddress remoteAddress) + : base(endpointConfigurationName, remoteAddress) + {} + public BasicServiceClient(global::System.ServiceModel.Channels.Binding binding, global::System.ServiceModel.EndpointAddress remoteAddress) + : base(binding, remoteAddress) + {} + + + private BeginOperationDelegate onBeginBasicOperationDelegate; + private EndOperationDelegate onEndBasicOperationDelegate; + private global::System.Threading.SendOrPostCallback onBasicOperationCompletedDelegate; + + public event global::System.EventHandler BasicOperationCompleted; + + public BasicProtoDemo.BasicOperationResponse BasicOperation(BasicProtoDemo.BasicOperationRequest request) + { + return base.Channel.BasicOperation(request); + } + + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public global::System.IAsyncResult BeginBasicOperation(BasicProtoDemo.BasicOperationRequest request, global::System.AsyncCallback callback, object asyncState) + { + return base.Channel.BeginBasicOperation(request, callback, asyncState); + } + + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public BasicProtoDemo.BasicOperationResponse EndBasicOperation(global::System.IAsyncResult result) + { + return base.Channel.EndBasicOperation(result); + } + + private global::System.IAsyncResult OnBeginBasicOperation(object[] inValues, global::System.AsyncCallback callback, object asyncState) + { + BasicProtoDemo.BasicOperationRequest request = ((BasicProtoDemo.BasicOperationRequest)(inValues[0])); + return this.BeginBasicOperation(request, callback, asyncState); + } + + private object[] OnEndBasicOperation(global::System.IAsyncResult result) + { + BasicProtoDemo.BasicOperationResponse retVal = this.EndBasicOperation(result); + return new object[] { + retVal}; + } + + private void OnBasicOperationCompleted(object state) + { + if ((this.BasicOperationCompleted != null)) + { + InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state)); + this.BasicOperationCompleted(this, new BasicOperationCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState)); + } + } + + public void BasicOperationAsync(BasicProtoDemo.BasicOperationRequest request) + { + this.BasicOperationAsync(request, null); + } + + public void BasicOperationAsync(BasicProtoDemo.BasicOperationRequest request, object userState) + { + if ((this.onBeginBasicOperationDelegate == null)) + { + this.onBeginBasicOperationDelegate = new BeginOperationDelegate(this.OnBeginBasicOperation); + } + if ((this.onEndBasicOperationDelegate == null)) + { + this.onEndBasicOperationDelegate = new EndOperationDelegate(this.OnEndBasicOperation); + } + if ((this.onBasicOperationCompletedDelegate == null)) + { + this.onBasicOperationCompletedDelegate = new global::System.Threading.SendOrPostCallback(this.OnBasicOperationCompleted); + } + base.InvokeAsync(this.onBeginBasicOperationDelegate, new object[] { + request}, this.onEndBasicOperationDelegate, this.onBasicOperationCompletedDelegate, userState); + } + + } + +} diff --git a/WcfPerfTest/WcfServer/BasicMessage.proto b/WcfPerfTest/WcfServer/BasicMessage.proto new file mode 100644 index 000000000..f4f42315f --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicMessage.proto @@ -0,0 +1,13 @@ +package BasicProtoDemo; +message BasicMessage { + required int32 id = 1; + required string name = 2; +} +message BasicOperationResponse { + required BasicMessage result = 1; +} +message BasicOperationRequest { +} +service BasicService { + rpc BasicOperation (BasicOperationRequest) returns (BasicOperationResponse); +} \ No newline at end of file diff --git a/WcfPerfTest/WcfServer/BasicService.asmx b/WcfPerfTest/WcfServer/BasicService.asmx new file mode 100644 index 000000000..225a134dd --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicService.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="BasicService.asmx.cs" Class="WcfServer.BasicService1" %> diff --git a/WcfPerfTest/WcfServer/BasicService.asmx.cs b/WcfPerfTest/WcfServer/BasicService.asmx.cs new file mode 100644 index 000000000..ffae8b3be --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicService.asmx.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Services; + +namespace WcfServer +{ + /// + /// Summary description for BasicService1 + /// + [WebService(Namespace = "http://tempuri.org/")] + [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] + [System.ComponentModel.ToolboxItem(false)] + // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. + // [System.Web.Script.Services.ScriptService] + public class BasicService1 : System.Web.Services.WebService + { + + [WebMethod] + public BasicType BasicOperation() + { + return new BasicType { Id = 123, Name = "abc" }; + } + } +} diff --git a/WcfPerfTest/WcfServer/BasicService.svc b/WcfPerfTest/WcfServer/BasicService.svc new file mode 100644 index 000000000..0d6424af6 --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicService.svc @@ -0,0 +1 @@ +<%@ ServiceHost Language="C#" Debug="true" Service="WcfServer.BasicService" CodeBehind="BasicService.svc.cs" %> diff --git a/WcfPerfTest/WcfServer/BasicService.svc.cs b/WcfPerfTest/WcfServer/BasicService.svc.cs new file mode 100644 index 000000000..55aa8b8de --- /dev/null +++ b/WcfPerfTest/WcfServer/BasicService.svc.cs @@ -0,0 +1,12 @@ + +namespace WcfServer +{ + // NOTE: If you change the class name "BasicService" here, you must also update the reference to "BasicService" in Web.config. + public class BasicService : IBasicService + { + public BasicType BasicOperation() + { + return new BasicType { Id = 123, Name = "abc" }; + } + } +} diff --git a/WcfPerfTest/WcfServer/IBasicService.cs b/WcfPerfTest/WcfServer/IBasicService.cs new file mode 100644 index 000000000..3d0a52aff --- /dev/null +++ b/WcfPerfTest/WcfServer/IBasicService.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace WcfServer +{ + // NOTE: If you change the interface name "IBasicService" here, you must also update the reference to "IBasicService" in Web.config. + [ServiceContract] + public interface IBasicService + { + [OperationContract] + BasicType BasicOperation(); + } + + [DataContract] + public class BasicType + { + [DataMember] + public int Id { get; set; } + + [DataMember] + public string Name { get; set; } + } +} diff --git a/WcfPerfTest/WcfServer/WcfServer.csproj b/WcfPerfTest/WcfServer/WcfServer.csproj index 4dac39f25..ba611e986 100644 --- a/WcfPerfTest/WcfServer/WcfServer.csproj +++ b/WcfPerfTest/WcfServer/WcfServer.csproj @@ -2,7 +2,7 @@ Debug AnyCPU - 9.0.30428 + 9.0.30729 2.0 {BA39F9B3-F49E-4BC4-A0F6-E6738CAAC3BD} {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} @@ -83,11 +83,28 @@ + + ProtoBufTool + BasicMessage.cs + %3bfixCase%3bdatacontract%3bclientProxy%3basynchronous + NWind.dbml + + True + True + True + BasicMessage.proto + + + + {8374E4D7-2A91-48F1-9360-09B09CF27C3F} + protobuf-net + + diff --git a/WcfPerfTest/WcfServer/Web.config b/WcfPerfTest/WcfServer/Web.config index 7982fe1fa..b4a6111ee 100644 --- a/WcfPerfTest/WcfServer/Web.config +++ b/WcfPerfTest/WcfServer/Web.config @@ -1,42 +1,42 @@ - - - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -100,23 +100,52 @@ - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/buildkit35.build b/buildkit35.build index 057fdb240..250110e01 100644 --- a/buildkit35.build +++ b/buildkit35.build @@ -48,7 +48,7 @@ - + @@ -140,7 +140,7 @@ + ToolPath="C:\Program Files\NUnit 2.5.2\bin\net-2.0" /> diff --git a/demo-rpc-client-silverlight/Service References/Northwind/Reference.cs b/demo-rpc-client-silverlight/Service References/Northwind/Reference.cs index 947f30b86..706fa688d 100644 --- a/demo-rpc-client-silverlight/Service References/Northwind/Reference.cs +++ b/demo-rpc-client-silverlight/Service References/Northwind/Reference.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3082 +// Runtime Version:2.0.50727.4927 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -9,7 +9,7 @@ //------------------------------------------------------------------------------ // -// This code was auto-generated by Microsoft.Silverlight.ServiceReference, version 2.0.5.0 +// This code was auto-generated by Microsoft.Silverlight.ServiceReference, version 3.0.40624.0 // namespace demo_rpc_client_silverlight.Northwind { using System.Runtime.Serialization; @@ -644,6 +644,28 @@ public partial class NorthwindClient : System.ServiceModel.ClientBase(); + if ((httpCookieContainerManager != null)) { + return httpCookieContainerManager.CookieContainer; + } + else { + return null; + } + } + set { + System.ServiceModel.Channels.IHttpCookieContainerManager httpCookieContainerManager = this.InnerChannel.GetProperty(); + if ((httpCookieContainerManager != null)) { + httpCookieContainerManager.CookieContainer = value; + } + else { + throw new System.InvalidOperationException("Unable to set the CookieContainer. Please make sure the binding contains an HttpC" + + "ookieContainerBindingElement."); + } + } + } + public event System.EventHandler GetCustomersCompleted; public event System.EventHandler GetOrdersCompleted; diff --git a/demo-rpc-client-silverlight/demo-rpc-client-silverlight.csproj b/demo-rpc-client-silverlight/demo-rpc-client-silverlight.csproj index e3873b041..aca3a721a 100644 --- a/demo-rpc-client-silverlight/demo-rpc-client-silverlight.csproj +++ b/demo-rpc-client-silverlight/demo-rpc-client-silverlight.csproj @@ -23,6 +23,26 @@ true true false + + + 3.5 + + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true true @@ -73,11 +93,11 @@ - MSBuild:MarkupCompilePass1 + MSBuild:Compile Designer - MSBuild:MarkupCompilePass1 + MSBuild:Compile Designer @@ -102,19 +122,51 @@ - - - {35032FC5-65E0-4FE4-8DBC-A31F0694EC14} - protobuf-net_Silverlight - - - + + + False + .NET Framework Client Profile + false + + + False + .NET Framework 2.0 %28x86%29 + false + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + {35032FC5-65E0-4FE4-8DBC-A31F0694EC14} + protobuf-net_Silverlight + + + 6qTGPg>s^#`|oacDLK&%IWbWRt{%82 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

cOa4w|7N@rb$O9ipnf_A5@jz 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 diff --git a/protobuf-net.Extensions/Properties/AssemblyInfo.cs b/protobuf-net.Extensions/Properties/AssemblyInfo.cs index 0cb0ed0d4..6a643cced 100644 --- a/protobuf-net.Extensions/Properties/AssemblyInfo.cs +++ b/protobuf-net.Extensions/Properties/AssemblyInfo.cs @@ -32,8 +32,8 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.262")] +[assembly: AssemblyVersion("1.0.0.264")] #if !CF -[assembly: AssemblyFileVersion("1.0.0.262")] +[assembly: AssemblyFileVersion("1.0.0.264")] #endif [assembly: CLSCompliant(true)] \ No newline at end of file diff --git a/protobuf-net.Extensions/protobuf-net.Extensions.csproj b/protobuf-net.Extensions/protobuf-net.Extensions.csproj index 142c61a31..ab0531548 100644 --- a/protobuf-net.Extensions/protobuf-net.Extensions.csproj +++ b/protobuf-net.Extensions/protobuf-net.Extensions.csproj @@ -41,6 +41,7 @@ + 3.5 diff --git a/protobuf-net/Properties/AssemblyInfo.cs b/protobuf-net/Properties/AssemblyInfo.cs index c1bf06258..1208801fb 100644 --- a/protobuf-net/Properties/AssemblyInfo.cs +++ b/protobuf-net/Properties/AssemblyInfo.cs @@ -33,8 +33,8 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.262")] +[assembly: AssemblyVersion("1.0.0.264")] #if !CF -[assembly: AssemblyFileVersion("1.0.0.262")] +[assembly: AssemblyFileVersion("1.0.0.264")] #endif [assembly: CLSCompliant(true)] \ No newline at end of file diff --git a/protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs b/protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs new file mode 100644 index 000000000..8e340d7ab --- /dev/null +++ b/protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs @@ -0,0 +1,43 @@ +#if NET_3_0 && !SILVERLIGHT +using System; +using System.Collections.Generic; +using System.ServiceModel.Configuration; +using System.Text; + +namespace ProtoBuf.ServiceModel +{ + ///

+ /// Configuration element to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint. + /// + /// + public class ProtoBehaviorExtension : BehaviorExtensionElement + { + /// + /// Creates a new ProtoBehaviorExtension instance. + /// + public ProtoBehaviorExtension() + { + } + + /// + /// Gets the type of behavior. + /// + public override Type BehaviorType + { + get + { + return typeof(ProtoEndpointBehavior); + } + } + + /// + /// Creates a behavior extension based on the current configuration settings. + /// + /// The behavior extension. + protected override object CreateBehavior() + { + return new ProtoEndpointBehavior(); + } + } +} +#endif \ No newline at end of file diff --git a/protobuf-net/ServiceModel/ProtoEndpointBehavior.cs b/protobuf-net/ServiceModel/ProtoEndpointBehavior.cs new file mode 100644 index 000000000..e0f1eee5b --- /dev/null +++ b/protobuf-net/ServiceModel/ProtoEndpointBehavior.cs @@ -0,0 +1,82 @@ +#if NET_3_0 && !SILVERLIGHT +using System.ServiceModel.Description; + +namespace ProtoBuf.ServiceModel +{ + /// + /// Behavior to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint. + /// + /// Add the following to the server and client app.config in the system.serviceModel section: + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// Configure your endpoints to have a behaviorConfiguration as follows: + /// + /// + /// + /// + /// + /// + /// + /// + /// + public class ProtoEndpointBehavior : IEndpointBehavior + { + #region IEndpointBehavior Members + + void IEndpointBehavior.AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) + { + } + + void IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime) + { + ReplaceDataContractSerializerOperationBehavior(endpoint); + } + + void IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher) + { + ReplaceDataContractSerializerOperationBehavior(endpoint); + } + + void IEndpointBehavior.Validate(ServiceEndpoint endpoint) + { + } + + private static void ReplaceDataContractSerializerOperationBehavior(ServiceEndpoint serviceEndpoint) + { + foreach (var operationDescription in serviceEndpoint.Contract.Operations) + { + ReplaceDataContractSerializerOperationBehavior(operationDescription); + } + } + + + private static void ReplaceDataContractSerializerOperationBehavior(OperationDescription description) + { + DataContractSerializerOperationBehavior dcsOperationBehavior = description.Behaviors.Find(); + if (dcsOperationBehavior != null) + { + description.Behaviors.Remove(dcsOperationBehavior); + description.Behaviors.Add(new ProtoOperationBehavior(description)); + } + } + + + #endregion + } + +} +#endif \ No newline at end of file diff --git a/protobuf-net/protobuf-net.csproj b/protobuf-net/protobuf-net.csproj index 6ef79fc4b..973f3896b 100644 --- a/protobuf-net/protobuf-net.csproj +++ b/protobuf-net/protobuf-net.csproj @@ -81,6 +81,7 @@
+ @@ -217,6 +218,8 @@ + + diff --git a/protobuf-net_Silverlight/protobuf-net_Silverlight.csproj b/protobuf-net_Silverlight/protobuf-net_Silverlight.csproj index 64806cb5a..3742f1633 100644 --- a/protobuf-net_Silverlight/protobuf-net_Silverlight.csproj +++ b/protobuf-net_Silverlight/protobuf-net_Silverlight.csproj @@ -16,6 +16,11 @@ false true ../ProtoBuf.snk + + + 3.5 + + true @@ -58,7 +63,7 @@ PreserveNewest - +