Skip to content

Commit

Permalink
Provide length when getting serialization buffer writer
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesNK committed Oct 20, 2019
1 parent 2d80e83 commit d8d2721
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/csharp/Grpc.Core.Api/SerializationContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ public virtual void Complete(byte[] payload)
/// Gets buffer writer that can be used to write the serialized data. Once serialization is finished,
/// <c>Complete()</c> needs to be called.
/// </summary>
public virtual IBufferWriter<byte> GetBufferWriter()
/// <param name="payloadLength">The total length of the payload in bytes.</param>
public virtual IBufferWriter<byte> GetBufferWriter(int payloadLength)
{
throw new NotImplementedException();
}
Expand All @@ -52,7 +53,6 @@ public virtual IBufferWriter<byte> GetBufferWriter()
public virtual void Complete()
{
throw new NotImplementedException();

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public void BufferWriter_OneSegment(int payloadSize)
var context = scope.Context;
var origPayload = GetTestBuffer(payloadSize);

var bufferWriter = context.GetBufferWriter();
var bufferWriter = context.GetBufferWriter(payloadSize);
origPayload.AsSpan().CopyTo(bufferWriter.GetSpan(payloadSize));
bufferWriter.Advance(payloadSize);
context.Complete();
Expand All @@ -106,7 +106,7 @@ public void BufferWriter_OneSegment_GetMemory(int payloadSize)
var context = scope.Context;
var origPayload = GetTestBuffer(payloadSize);

var bufferWriter = context.GetBufferWriter();
var bufferWriter = context.GetBufferWriter(payloadSize);
origPayload.AsSpan().CopyTo(bufferWriter.GetMemory(payloadSize).Span);
bufferWriter.Advance(payloadSize);
context.Complete();
Expand All @@ -131,7 +131,7 @@ public void BufferWriter_MultipleSegments(int payloadSize, int maxSliceSize)
var context = scope.Context;
var origPayload = GetTestBuffer(payloadSize);

var bufferWriter = context.GetBufferWriter();
var bufferWriter = context.GetBufferWriter(payloadSize);
for (int offset = 0; offset < payloadSize; offset += maxSliceSize)
{
var sliceSize = Math.Min(maxSliceSize, payloadSize - offset);
Expand Down Expand Up @@ -165,7 +165,7 @@ public void ContextIsReusable()

var origPayload2 = GetTestBuffer(20);

var bufferWriter = context.GetBufferWriter();
var bufferWriter = context.GetBufferWriter(20);
origPayload2.AsSpan().CopyTo(bufferWriter.GetMemory(origPayload2.Length).Span);
bufferWriter.Advance(origPayload2.Length);
context.Complete();
Expand All @@ -185,7 +185,7 @@ public void GetBufferWriterThrowsForCompletedContext()
var context = scope.Context;
context.Complete(GetTestBuffer(10));

Assert.Throws(typeof(InvalidOperationException), () => context.GetBufferWriter());
Assert.Throws(typeof(InvalidOperationException), () => context.GetBufferWriter(10));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public override void Complete(byte[] payload)
/// <summary>
/// Expose serializer as buffer writer
/// </summary>
public override IBufferWriter<byte> GetBufferWriter()
public override IBufferWriter<byte> GetBufferWriter(int payloadLength)
{
GrpcPreconditions.CheckState(!isComplete);
return sliceBuffer;
Expand Down

0 comments on commit d8d2721

Please sign in to comment.