Commit b802a94f authored by Jon Skeet's avatar Jon Skeet Committed by unknown

Half way through CodedInputStream

committer: Jon Skeet <skeet@pobox.com>
parent 70ff8617
This diff is collapsed.
...@@ -5,6 +5,10 @@ using System.IO; ...@@ -5,6 +5,10 @@ using System.IO;
namespace Google.ProtocolBuffers { namespace Google.ProtocolBuffers {
public interface IBuilder {
void MergeFrom(CodedInputStream codedInputStream, ExtensionRegistry extensionRegistry);
}
/// <summary> /// <summary>
/// Interface implemented by Protocol Message builders. /// Interface implemented by Protocol Message builders.
/// TODO(jonskeet): Consider "SetXXX" methods returning the builder, as well as the properties. /// TODO(jonskeet): Consider "SetXXX" methods returning the builder, as well as the properties.
......
...@@ -2,6 +2,62 @@ ...@@ -2,6 +2,62 @@
using System.IO; using System.IO;
namespace Google.ProtocolBuffers { namespace Google.ProtocolBuffers {
/// <summary>
/// Thrown when a protocol message being parsed is invalid in some way,
/// e.g. it contains a malformed varint or a negative byte length.
///
/// TODO(jonskeet): Make the methods throw directly? Rename them?
/// </summary>
public class InvalidProtocolBufferException : IOException { public class InvalidProtocolBufferException : IOException {
private InvalidProtocolBufferException(string message)
: base(message) {
}
internal static InvalidProtocolBufferException TruncatedMessage() {
return new InvalidProtocolBufferException(
"While parsing a protocol message, the input ended unexpectedly " +
"in the middle of a field. This could mean either than the " +
"input has been truncated or that an embedded message " +
"misreported its own length.");
}
internal static InvalidProtocolBufferException NegativeSize() {
return new InvalidProtocolBufferException(
"CodedInputStream encountered an embedded string or message " +
"which claimed to have negative size.");
}
internal static InvalidProtocolBufferException MalformedVarint() {
return new InvalidProtocolBufferException(
"CodedInputStream encountered a malformed varint.");
}
internal static InvalidProtocolBufferException InvalidTag() {
return new InvalidProtocolBufferException(
"Protocol message contained an invalid tag (zero).");
}
internal static InvalidProtocolBufferException InvalidEndTag() {
return new InvalidProtocolBufferException(
"Protocol message end-group tag did not match expected tag.");
}
internal static InvalidProtocolBufferException InvalidWireType() {
return new InvalidProtocolBufferException(
"Protocol message tag had invalid wire type.");
}
internal static InvalidProtocolBufferException RecursionLimitExceeded() {
return new InvalidProtocolBufferException(
"Protocol message had too many levels of nesting. May be malicious. " +
"Use CodedInputStream.setRecursionLimit() to increase the depth limit.");
}
internal static InvalidProtocolBufferException SizeLimitExceeded() {
return new InvalidProtocolBufferException(
"Protocol message was too large. May be malicious. " +
"Use CodedInputStream.setSizeLimit() to increase the size limit.");
}
} }
} }
...@@ -9,5 +9,12 @@ namespace Google.ProtocolBuffers { ...@@ -9,5 +9,12 @@ namespace Google.ProtocolBuffers {
} }
public int SerializedSize { get { return 0; } } public int SerializedSize { get { return 0; } }
public class Builder
{
internal void MergeFrom(CodedInputStream codedInputStream) {
throw new NotImplementedException();
}
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment