diff options
author | Jon Skeet <skeet@pobox.com> | 2009-01-16 10:57:40 +0000 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2009-01-16 10:57:40 +0000 |
commit | 8f8186a30b9b8d865c6211eb91a4df8aae1f40d5 (patch) | |
tree | 8448e4c52607cd39f2035a06196cfe4247942f06 /src/ProtoDump/Program.cs | |
parent | 0c89aa1fdba0158d8dee3aef9cfe815afe4cc494 (diff) | |
download | protobuf-8f8186a30b9b8d865c6211eb91a4df8aae1f40d5.tar.gz protobuf-8f8186a30b9b8d865c6211eb91a4df8aae1f40d5.tar.bz2 protobuf-8f8186a30b9b8d865c6211eb91a4df8aae1f40d5.zip |
Benchmarking, dumping and munging
Diffstat (limited to 'src/ProtoDump/Program.cs')
-rw-r--r-- | src/ProtoDump/Program.cs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/ProtoDump/Program.cs b/src/ProtoDump/Program.cs new file mode 100644 index 00000000..0c66c930 --- /dev/null +++ b/src/ProtoDump/Program.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; +using System.Reflection; +using Google.ProtocolBuffers; + +namespace ProtoDump { + /// <summary> + /// Small utility to load a binary message and dump it in text form + /// </summary> + class Program { + static int Main(string[] args) { + if (args.Length != 2) { + Console.Error.WriteLine("Usage: ProtoDump <descriptor type name> <input data>"); + Console.Error.WriteLine("The descriptor type name is the fully-qualified message name,"); + Console.Error.WriteLine("including assembly e.g. ProjectNamespace.Message,Company.Project"); + return 1; + } + IMessage defaultMessage; + try { + defaultMessage = MessageUtil.GetDefaultMessage(args[0]); + } catch (ArgumentException e) { + Console.Error.WriteLine(e.Message); + return 1; + } + try { + IBuilder builder = defaultMessage.WeakCreateBuilderForType(); + if (builder == null) { + Console.Error.WriteLine("Unable to create builder"); + return 1; + } + byte[] inputData = File.ReadAllBytes(args[1]); + builder.WeakMergeFrom(ByteString.CopyFrom(inputData)); + Console.WriteLine(TextFormat.PrintToString(builder.WeakBuild())); + return 0; + } catch (Exception e) { + Console.Error.WriteLine("Error: {0}", e.Message); + Console.Error.WriteLine(); + Console.Error.WriteLine("Detailed exception information: {0}", e); + return 1; + } + } + } +} |