Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: third_party/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.cs

Issue 1983203003: Update third_party/protobuf to protobuf-v3.0.0-beta-3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: owners Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #region Copyright notice and license 1 #region Copyright notice and license
2 // Protocol Buffers - Google's data interchange format 2 // Protocol Buffers - Google's data interchange format
3 // Copyright 2008 Google Inc. All rights reserved. 3 // Copyright 2008 Google Inc. All rights reserved.
4 // https://developers.google.com/protocol-buffers/ 4 // https://developers.google.com/protocol-buffers/
5 // 5 //
6 // Redistribution and use in source and binary forms, with or without 6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are 7 // modification, are permitted provided that the following conditions are
8 // met: 8 // met:
9 // 9 //
10 // * Redistributions of source code must retain the above copyright 10 // * Redistributions of source code must retain the above copyright
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 /// this does not include combined "write tag and value" methods. Generated 48 /// this does not include combined "write tag and value" methods. Generated
49 /// code knows the exact byte representations of the tags they're going to w rite, 49 /// code knows the exact byte representations of the tags they're going to w rite,
50 /// so there's no need to re-encode them each time. Manually-written code ca lling 50 /// so there's no need to re-encode them each time. Manually-written code ca lling
51 /// this class should just call one of the <c>WriteTag</c> overloads before each value. 51 /// this class should just call one of the <c>WriteTag</c> overloads before each value.
52 /// </para> 52 /// </para>
53 /// <para> 53 /// <para>
54 /// Repeated fields and map fields are not handled by this class; use <c>Rep eatedField&lt;T&gt;</c> 54 /// Repeated fields and map fields are not handled by this class; use <c>Rep eatedField&lt;T&gt;</c>
55 /// and <c>MapField&lt;TKey, TValue&gt;</c> to serialize such fields. 55 /// and <c>MapField&lt;TKey, TValue&gt;</c> to serialize such fields.
56 /// </para> 56 /// </para>
57 /// </remarks> 57 /// </remarks>
58 public sealed partial class CodedOutputStream 58 public sealed partial class CodedOutputStream : IDisposable
59 { 59 {
60 // "Local" copy of Encoding.UTF8, for efficiency. (Yes, it makes a diffe rence.) 60 // "Local" copy of Encoding.UTF8, for efficiency. (Yes, it makes a diffe rence.)
61 internal static readonly Encoding Utf8Encoding = Encoding.UTF8; 61 internal static readonly Encoding Utf8Encoding = Encoding.UTF8;
62 62
63 /// <summary> 63 /// <summary>
64 /// The buffer size used by CreateInstance(Stream). 64 /// The buffer size used by CreateInstance(Stream).
65 /// </summary> 65 /// </summary>
66 public static readonly int DefaultBufferSize = 4096; 66 public static readonly int DefaultBufferSize = 4096;
67 67
68 private readonly bool leaveOpen;
68 private readonly byte[] buffer; 69 private readonly byte[] buffer;
69 private readonly int limit; 70 private readonly int limit;
70 private int position; 71 private int position;
71 private readonly Stream output; 72 private readonly Stream output;
72 73
73 #region Construction 74 #region Construction
74 /// <summary> 75 /// <summary>
75 /// Creates a new CodedOutputStream that writes directly to the given 76 /// Creates a new CodedOutputStream that writes directly to the given
76 /// byte array. If more bytes are written than fit in the array, 77 /// byte array. If more bytes are written than fit in the array,
77 /// OutOfSpaceException will be thrown. 78 /// OutOfSpaceException will be thrown.
78 /// </summary> 79 /// </summary>
79 public CodedOutputStream(byte[] flatArray) : this(flatArray, 0, flatArra y.Length) 80 public CodedOutputStream(byte[] flatArray) : this(flatArray, 0, flatArra y.Length)
80 { 81 {
81 } 82 }
82 83
83 /// <summary> 84 /// <summary>
84 /// Creates a new CodedOutputStream that writes directly to the given 85 /// Creates a new CodedOutputStream that writes directly to the given
85 /// byte array slice. If more bytes are written than fit in the array, 86 /// byte array slice. If more bytes are written than fit in the array,
86 /// OutOfSpaceException will be thrown. 87 /// OutOfSpaceException will be thrown.
87 /// </summary> 88 /// </summary>
88 private CodedOutputStream(byte[] buffer, int offset, int length) 89 private CodedOutputStream(byte[] buffer, int offset, int length)
89 { 90 {
90 this.output = null; 91 this.output = null;
91 this.buffer = buffer; 92 this.buffer = buffer;
92 this.position = offset; 93 this.position = offset;
93 this.limit = offset + length; 94 this.limit = offset + length;
94 } 95 leaveOpen = true; // Simple way of avoiding trying to dispose of a n ull reference
95 96 }
96 private CodedOutputStream(Stream output, byte[] buffer) 97
97 { 98 private CodedOutputStream(Stream output, byte[] buffer, bool leaveOpen)
98 this.output = output; 99 {
100 this.output = ProtoPreconditions.CheckNotNull(output, nameof(output) );
99 this.buffer = buffer; 101 this.buffer = buffer;
100 this.position = 0; 102 this.position = 0;
101 this.limit = buffer.Length; 103 this.limit = buffer.Length;
102 } 104 this.leaveOpen = leaveOpen;
103 105 }
104 /// <summary> 106
105 /// Creates a new CodedOutputStream which write to the given stream. 107 /// <summary>
106 /// </summary> 108 /// Creates a new <see cref="CodedOutputStream" /> which write to the gi ven stream, and disposes of that
107 public CodedOutputStream(Stream output) : this(output, DefaultBufferSize ) 109 /// stream when the returned <c>CodedOutputStream</c> is disposed.
110 /// </summary>
111 /// <param name="output">The stream to write to. It will be disposed whe n the returned <c>CodedOutputStream is disposed.</c></param>
112 public CodedOutputStream(Stream output) : this(output, DefaultBufferSize , false)
108 { 113 {
109 } 114 }
110 115
111 /// <summary> 116 /// <summary>
112 /// Creates a new CodedOutputStream which write to the given stream and uses 117 /// Creates a new CodedOutputStream which write to the given stream and uses
113 /// the specified buffer size. 118 /// the specified buffer size.
114 /// </summary> 119 /// </summary>
115 public CodedOutputStream(Stream output, int bufferSize) : this(output, n ew byte[bufferSize]) 120 /// <param name="output">The stream to write to. It will be disposed whe n the returned <c>CodedOutputStream is disposed.</c></param>
116 { 121 /// <param name="bufferSize">The size of buffer to use internally.</para m>
117 } 122 public CodedOutputStream(Stream output, int bufferSize) : this(output, n ew byte[bufferSize], false)
123 {
124 }
125
126 /// <summary>
127 /// Creates a new CodedOutputStream which write to the given stream.
128 /// </summary>
129 /// <param name="output">The stream to write to.</param>
130 /// <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;
131 /// if <c>false</c>, the provided stream is disposed as well.</param>
132 public CodedOutputStream(Stream output, bool leaveOpen) : this(output, D efaultBufferSize, leaveOpen)
133 {
134 }
135
136 /// <summary>
137 /// Creates a new CodedOutputStream which write to the given stream and uses
138 /// the specified buffer size.
139 /// </summary>
140 /// <param name="output">The stream to write to.</param>
141 /// <param name="bufferSize">The size of buffer to use internally.</para m>
142 /// <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;
143 /// if <c>false</c>, the provided stream is disposed as well.</param>
144 public CodedOutputStream(Stream output, int bufferSize, bool leaveOpen) : this(output, new byte[bufferSize], leaveOpen)
145 {
146 }
118 #endregion 147 #endregion
119 148
120 /// <summary> 149 /// <summary>
121 /// Returns the current position in the stream, or the position in the o utput buffer 150 /// Returns the current position in the stream, or the position in the o utput buffer
122 /// </summary> 151 /// </summary>
123 public long Position 152 public long Position
124 { 153 {
125 get 154 get
126 { 155 {
127 if (output != null) 156 if (output != null)
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 /// </summary> 682 /// </summary>
654 public sealed class OutOfSpaceException : IOException 683 public sealed class OutOfSpaceException : IOException
655 { 684 {
656 internal OutOfSpaceException() 685 internal OutOfSpaceException()
657 : base("CodedOutputStream was writing to a flat byte array and r an out of space.") 686 : base("CodedOutputStream was writing to a flat byte array and r an out of space.")
658 { 687 {
659 } 688 }
660 } 689 }
661 690
662 /// <summary> 691 /// <summary>
692 /// Flushes any buffered data and optionally closes the underlying strea m, if any.
693 /// </summary>
694 /// <remarks>
695 /// <para>
696 /// By default, any underlying stream is closed by this method. To confi gure this behaviour,
697 /// use a constructor overload with a <c>leaveOpen</c> parameter. If thi s instance does not
698 /// have an underlying stream, this method does nothing.
699 /// </para>
700 /// <para>
701 /// For the sake of efficiency, calling this method does not prevent fut ure write calls - but
702 /// if a later write ends up writing to a stream which has been disposed , that is likely to
703 /// fail. It is recommend that you not call any other methods after this .
704 /// </para>
705 /// </remarks>
706 public void Dispose()
707 {
708 Flush();
709 if (!leaveOpen)
710 {
711 output.Dispose();
712 }
713 }
714
715 /// <summary>
663 /// Flushes any buffered data to the underlying stream (if there is one) . 716 /// Flushes any buffered data to the underlying stream (if there is one) .
664 /// </summary> 717 /// </summary>
665 public void Flush() 718 public void Flush()
666 { 719 {
667 if (output != null) 720 if (output != null)
668 { 721 {
669 RefreshBuffer(); 722 RefreshBuffer();
670 } 723 }
671 } 724 }
672 725
(...skipping 25 matching lines...) Expand all
698 } 751 }
699 else 752 else
700 { 753 {
701 throw new InvalidOperationException( 754 throw new InvalidOperationException(
702 "SpaceLeft can only be called on CodedOutputStreams that are " + 755 "SpaceLeft can only be called on CodedOutputStreams that are " +
703 "writing to a flat array."); 756 "writing to a flat array.");
704 } 757 }
705 } 758 }
706 } 759 }
707 } 760 }
708 } 761 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698