@ -44,14 +44,8 @@ namespace Google.Protobuf
/// </summary>
/// <param name="message">The message to merge the data into.</param>
/// <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>
public static void MergeFrom ( this IMessage message , byte [ ] data )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = new CodedInputStream ( data ) ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
public static void MergeFrom ( this IMessage message , byte [ ] data ) = >
MergeFrom ( message , data , false ) ;
/// <summary>
/// Merges data from the given byte array slice into an existing message.
@ -60,42 +54,24 @@ namespace Google.Protobuf
/// <param name="data">The data containing the slice to merge, which must be protobuf-encoded binary data.</param>
/// <param name="offset">The offset of the slice to merge.</param>
/// <param name="length">The length of the slice to merge.</param>
public static void MergeFrom ( this IMessage message , byte [ ] data , int offset , int length )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = new CodedInputStream ( data , offset , length ) ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
public static void MergeFrom ( this IMessage message , byte [ ] data , int offset , int length ) = >
MergeFrom ( message , data , offset , length , false ) ;
/// <summary>
/// Merges data from the given byte string into an existing message.
/// </summary>
/// <param name="message">The message to merge the data into.</param>
/// <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>
public static void MergeFrom ( this IMessage message , ByteString data )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = data . CreateCodedInput ( ) ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
public static void MergeFrom ( this IMessage message , ByteString data ) = >
MergeFrom ( message , data , false ) ;
/// <summary>
/// Merges data from the given stream into an existing message.
/// </summary>
/// <param name="message">The message to merge the data into.</param>
/// <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>
public static void MergeFrom ( this IMessage message , Stream input )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( input , "input" ) ;
CodedInputStream codedInput = new CodedInputStream ( input ) ;
message . MergeFrom ( codedInput ) ;
codedInput . CheckReadEndOfStreamTag ( ) ;
}
public static void MergeFrom ( this IMessage message , Stream input ) = >
MergeFrom ( message , input , false ) ;
/// <summary>
/// Merges length-delimited data from the given stream into an existing message.
@ -106,14 +82,8 @@ namespace Google.Protobuf
/// </remarks>
/// <param name="message">The message to merge the data into.</param>
/// <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>
public static void MergeDelimitedFrom ( this IMessage message , Stream input )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( input , "input" ) ;
int size = ( int ) CodedInputStream . ReadRawVarint32 ( input ) ;
Stream limitedStream = new LimitedInputStream ( input , size ) ;
message . MergeFrom ( limitedStream ) ;
}
public static void MergeDelimitedFrom ( this IMessage message , Stream input ) = >
MergeDelimitedFrom ( message , input , false ) ;
/// <summary>
/// Converts the given message into a byte array in protobuf encoding.
@ -168,6 +138,56 @@ namespace Google.Protobuf
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
return ByteString . AttachBytes ( message . ToByteArray ( ) ) ;
}
}
// Implementations allowing unknown fields to be discarded.
internal static void MergeFrom ( this IMessage message , byte [ ] data , bool discardUnknownFields )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = new CodedInputStream ( data ) ;
input . DiscardUnknownFields = discardUnknownFields ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
internal static void MergeFrom ( this IMessage message , byte [ ] data , int offset , int length , bool discardUnknownFields )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = new CodedInputStream ( data , offset , length ) ;
input . DiscardUnknownFields = discardUnknownFields ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
internal static void MergeFrom ( this IMessage message , ByteString data , bool discardUnknownFields )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( data , "data" ) ;
CodedInputStream input = data . CreateCodedInput ( ) ;
input . DiscardUnknownFields = discardUnknownFields ;
message . MergeFrom ( input ) ;
input . CheckReadEndOfStreamTag ( ) ;
}
internal static void MergeFrom ( this IMessage message , Stream input , bool discardUnknownFields )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( input , "input" ) ;
CodedInputStream codedInput = new CodedInputStream ( input ) ;
codedInput . DiscardUnknownFields = discardUnknownFields ;
message . MergeFrom ( codedInput ) ;
codedInput . CheckReadEndOfStreamTag ( ) ;
}
internal static void MergeDelimitedFrom ( this IMessage message , Stream input , bool discardUnknownFields )
{
ProtoPreconditions . CheckNotNull ( message , "message" ) ;
ProtoPreconditions . CheckNotNull ( input , "input" ) ;
int size = ( int ) CodedInputStream . ReadRawVarint32 ( input ) ;
Stream limitedStream = new LimitedInputStream ( input , size ) ;
MergeFrom ( message , limitedStream , discardUnknownFields ) ;
}
}
}