Changes from code review

pull/288/head
csharptest 14 years ago committed by rogerk
parent c4d1d9dfc9
commit 353b0fad90
  1. 19
      src/ProtocolBuffers.Serialization/AbstractWriter.cs
  2. 2
      src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs
  3. 18
      src/ProtocolBuffers.Serialization/JsonFormatWriter.cs
  4. 16
      src/ProtocolBuffers.Serialization/XmlFormatReader.cs
  5. 18
      src/ProtocolBuffers.Serialization/XmlFormatWriter.cs
  6. 2
      src/ProtocolBuffers.Test/TestWriterFormatJson.cs
  7. 2
      src/ProtocolBuffers.Test/TestWriterFormatXml.cs
  8. 14
      src/ProtocolBuffers/CodedOutputStream.cs
  9. 2
      src/ProtocolBuffers/ICodedOutputStream.cs

@ -12,18 +12,8 @@ namespace Google.ProtocolBuffers.Serialization
/// <summary>
/// Provides a base class for writers that performs some basic type dispatching
/// </summary>
public abstract class AbstractWriter : ICodedOutputStream, IDisposable
public abstract class AbstractWriter : ICodedOutputStream
{
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
GC.SuppressFinalize(this);
Flush();
Dispose(true);
}
/// <summary>
/// Completes any pending write operations
/// </summary>
@ -31,13 +21,6 @@ namespace Google.ProtocolBuffers.Serialization
{
}
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
protected virtual void Dispose(bool disposing)
{
}
/// <summary>
/// Writes the message to the the formatted stream.
/// </summary>

@ -8,7 +8,7 @@ namespace Google.ProtocolBuffers.Serialization.Http
/// <summary>
/// Defines control information for the various formatting used with HTTP services
/// </summary>
public struct MessageFormatOptions
public class MessageFormatOptions
{
/// <summary>The mime type for xml content</summary>
/// <remarks>Other valid xml mime types include: application/binary, application/x-protobuf</remarks>

@ -239,27 +239,11 @@ namespace Google.ProtocolBuffers.Serialization
/// <summary> Gets or sets the whitespace to use to separate the text, default = empty </summary>
public string Whitespace { get; set; }
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
while (_counter.Count > 1)
{
WriteMessageEnd();
}
}
base.Dispose(disposing);
}
private void Seperator()
{
if (_counter.Count == 0)
{
throw new InvalidOperationException("Missmatched open/close in Json writer.");
throw new InvalidOperationException("Mismatched open/close in Json writer.");
}
int index = _counter.Count - 1;

@ -14,16 +14,16 @@ namespace Google.ProtocolBuffers.Serialization
{
public const string DefaultRootElementName = XmlFormatWriter.DefaultRootElementName;
private readonly XmlReader _input;
private readonly Stack<ElementStack> _elements;
private readonly Stack<ElementStackEntry> _elements;
private string _rootElementName;
private struct ElementStack
private struct ElementStackEntry
{
public readonly string LocalName;
public readonly int Depth;
public readonly bool IsEmpty;
public ElementStack(string localName, int depth, bool isEmpty) : this()
public ElementStackEntry(string localName, int depth, bool isEmpty) : this()
{
LocalName = localName;
IsEmpty = isEmpty;
@ -87,7 +87,7 @@ namespace Google.ProtocolBuffers.Serialization
{
_input = input;
_rootElementName = DefaultRootElementName;
_elements = new Stack<ElementStack>();
_elements = new Stack<ElementStackEntry>();
Options = XmlReaderOptions.None;
}
@ -144,7 +144,7 @@ namespace Google.ProtocolBuffers.Serialization
continue;
}
Assert(_input.IsStartElement() && _input.LocalName == element);
_elements.Push(new ElementStack(element, _input.Depth, _input.IsEmptyElement));
_elements.Push(new ElementStackEntry(element, _input.Depth, _input.IsEmptyElement));
_input.Read();
}
@ -156,7 +156,7 @@ namespace Google.ProtocolBuffers.Serialization
{
Assert(_elements.Count > 0);
ElementStack stop = _elements.Peek();
ElementStackEntry stop = _elements.Peek();
while (_input.NodeType != XmlNodeType.EndElement && _input.NodeType != XmlNodeType.Element
&& _input.Depth > stop.Depth && _input.Read())
{
@ -211,10 +211,10 @@ namespace Google.ProtocolBuffers.Serialization
/// </remarks>
protected override bool PeekNext(out string field)
{
ElementStack stopNode;
ElementStackEntry stopNode;
if (_elements.Count == 0)
{
stopNode = new ElementStack(null, _input.Depth - 1, false);
stopNode = new ElementStackEntry(null, _input.Depth - 1, false);
}
else
{

@ -71,24 +71,6 @@ namespace Google.ProtocolBuffers.Serialization
_rootElementName = DefaultRootElementName;
}
/// <summary>
/// Closes the underlying XmlTextWriter
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
while (_messageOpenCount > 0)
{
WriteMessageEnd();
}
_output.Close();
}
base.Dispose(disposing);
}
/// <summary>
/// Gets or sets the default element name to use when using the Merge&lt;TBuilder>()
/// </summary>

@ -43,8 +43,8 @@ namespace Google.ProtocolBuffers
.Build();
using (TextWriter output = new StringWriter())
using (AbstractWriter writer = JsonFormatWriter.CreateInstance(output))
{
ICodedOutputStream writer = JsonFormatWriter.CreateInstance(output);
writer.WriteMessageStart(); //manually begin the message, output is '{'
writer.Flush();

@ -46,8 +46,8 @@ namespace Google.ProtocolBuffers
.Build();
using (TextWriter output = new StringWriter())
using (AbstractWriter writer = XmlFormatWriter.CreateInstance(output))
{
ICodedOutputStream writer = XmlFormatWriter.CreateInstance(output);
writer.WriteMessageStart(); //manually begin the message, output is '{'
ICodedOutputStream stream = writer;

@ -57,7 +57,7 @@ namespace Google.ProtocolBuffers
/// methods are taken from the protocol buffer type names, not .NET types.
/// (Hence WriteFloat instead of WriteSingle, and WriteBool instead of WriteBoolean.)
/// </remarks>
public sealed partial class CodedOutputStream : ICodedOutputStream, IDisposable
public sealed partial class CodedOutputStream : ICodedOutputStream
{
/// <summary>
/// The buffer size used by CreateInstance(Stream).
@ -126,18 +126,6 @@ namespace Google.ProtocolBuffers
#endregion
public void Dispose()
{
if (output != null)
{
if (position > 0)
{
Flush();
}
output.Dispose();
}
}
void ICodedOutputStream.WriteMessageStart() { }
void ICodedOutputStream.WriteMessageEnd() { Flush(); }

@ -49,7 +49,7 @@ namespace Google.ProtocolBuffers
/// in their binary form by creating a instance via the CodedOutputStream.CreateInstance
/// static factory.
/// </summary>
public interface ICodedOutputStream : IDisposable
public interface ICodedOutputStream
{
/// <summary>
/// Writes any message initialization data needed to the output stream

Loading…
Cancel
Save