From: Henrique Mendonça Date: Sat, 1 Jun 2013 09:33:25 +0000 (+0200) Subject: THRIFT-1973 TCompactProtocol in C# lib does not serialize and deserialize negative... X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=8d22c10a47767f37eae8be3778dc40baa89713db;p=common%2Fthrift.git THRIFT-1973 TCompactProtocol in C# lib does not serialize and deserialize negative int32 and int64 number correctly Patch: Eric Ding --- diff --git a/lib/csharp/Makefile.am b/lib/csharp/Makefile.am index ee71bc9d..7bc161d8 100644 --- a/lib/csharp/Makefile.am +++ b/lib/csharp/Makefile.am @@ -61,16 +61,7 @@ THRIFTCODE= \ src/TProcessor.cs \ src/TApplicationException.cs -THRIFTTESTCODE = \ - test/ThriftTest/Program.cs \ - test/ThriftTest/TestClient.cs \ - test/ThriftTest/TestServer.cs \ - test/ThriftTest/RoundTripTest.cs \ - test/ThriftTest/Thrift/Test/*.cs - CSC=gmcs -NUNIT=nunit-console -THRIFT=../../compiler/cpp/thrift if NET_2_0 MONO_DEFINES=/d:NET_2_0 @@ -81,15 +72,6 @@ all-local: Thrift.dll Thrift.dll: $(THRIFTCODE) $(CSC) $(THRIFTCODE) /out:Thrift.dll /target:library /reference:System.Web $(MONO_DEFINES) -test/ThriftTest/Thrift/Test/*.cs: ../../test/ThriftTest.thrift - $(THRIFT) -gen csharp:hashcode -out test/ThriftTest ../../test/ThriftTest.thrift - -ThriftTest.exe: Thrift.dll $(THRIFTTESTCODE) - $(CSC) $(THRIFTTESTCODE) /out:ThriftTest.exe /target:exe /reference:nunit.framework /reference:Thrift.dll $(MONO_DEFINES) - -check-local: ThriftTest.exe - $(NUNIT) ThriftTest.exe - clean-local: $(RM) Thrift.dll diff --git a/lib/csharp/src/Thrift.sln b/lib/csharp/src/Thrift.sln index 5c210a5c..ee0a3e7d 100644 --- a/lib/csharp/src/Thrift.sln +++ b/lib/csharp/src/Thrift.sln @@ -1,35 +1,38 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thrift", "Thrift.csproj", "{499EB63C-D74C-47E8-AE48-A2FC94538E9D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThriftMSBuildTask", "..\ThriftMSBuildTask\ThriftMSBuildTask.csproj", "{EC0A0231-66EA-4593-A792-C6CA3BB8668E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThriftTest", "..\test\ThriftTest\ThriftTest.csproj", "{48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Release|Any CPU.Build.0 = Release|Any CPU - {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.Build.0 = Release|Any CPU - {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = Thrift.csproj - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thrift", "Thrift.csproj", "{499EB63C-D74C-47E8-AE48-A2FC94538E9D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThriftTest", "..\test\ThriftTest\ThriftTest.csproj", "{48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}" + ProjectSection(ProjectDependencies) = postProject + {499EB63C-D74C-47E8-AE48-A2FC94538E9D} = {499EB63C-D74C-47E8-AE48-A2FC94538E9D} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThriftMSBuildTask", "..\ThriftMSBuildTask\ThriftMSBuildTask.csproj", "{EC0A0231-66EA-4593-A792-C6CA3BB8668E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {499EB63C-D74C-47E8-AE48-A2FC94538E9D}.Release|Any CPU.Build.0 = Release|Any CPU + {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48DD757F-CA95-4DD7-BDA4-58DB6F108C2C}.Release|Any CPU.Build.0 = Release|Any CPU + {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC0A0231-66EA-4593-A792-C6CA3BB8668E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = Thrift.csproj + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/lib/csharp/src/Transport/TMemoryBuffer.cs b/lib/csharp/src/Transport/TMemoryBuffer.cs index b2e67db6..c6e72f1c 100644 --- a/lib/csharp/src/Transport/TMemoryBuffer.cs +++ b/lib/csharp/src/Transport/TMemoryBuffer.cs @@ -23,6 +23,7 @@ using Thrift.Protocol; namespace Thrift.Transport { public class TMemoryBuffer : TTransport { + private readonly MemoryStream byteStream; public TMemoryBuffer() { @@ -59,12 +60,8 @@ namespace Thrift.Transport { } public static byte[] Serialize(TBase s) { - return Serialize(s, new TBinaryProtocol.Factory()); - } - - public static byte[] Serialize(TBase s, TProtocolFactory factory) { var t = new TMemoryBuffer(); - var p = factory.GetProtocol(t); + var p = new TBinaryProtocol(t); s.Write(p); @@ -72,13 +69,9 @@ namespace Thrift.Transport { } public static T DeSerialize(byte[] buf) where T : TBase, new() { - return DeSerialize(buf, new TBinaryProtocol.Factory()); - } - - public static T DeSerialize(byte[] buf, TProtocolFactory factory) where T : TBase, new() { var t = new T(); var trans = new TMemoryBuffer(buf); - var p = factory.GetProtocol(trans); + var p = new TBinaryProtocol(trans); t.Read(p); return t; } diff --git a/lib/csharp/test/ThriftTest/ThriftTest.csproj b/lib/csharp/test/ThriftTest/ThriftTest.csproj index 0187eedc..87178763 100644 --- a/lib/csharp/test/ThriftTest/ThriftTest.csproj +++ b/lib/csharp/test/ThriftTest/ThriftTest.csproj @@ -1,4 +1,4 @@ - +