-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
IBsonWriter.cs
234 lines (197 loc) · 7.17 KB
/
IBsonWriter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
/* Copyright 2010-present MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
namespace MongoDB.Bson.IO
{
/// <summary>
/// Represents a BSON writer.
/// </summary>
/// <seealso cref="System.IDisposable" />
public interface IBsonWriter : IDisposable
{
// properties
/// <summary>
/// Gets the position.
/// Not all writers are able to report the position. Those that can't simply return zero.
/// </summary>
/// <value>
/// The position.
/// </value>
long Position { get; }
/// <summary>
/// Gets the current serialization depth.
/// </summary>
int SerializationDepth { get; }
/// <summary>
/// Gets the settings of the writer.
/// </summary>
BsonWriterSettings Settings { get; }
// methods
/// <summary>
/// Gets the current state of the writer.
/// </summary>
BsonWriterState State { get; }
// methods
/// <summary>
/// Closes the writer.
/// </summary>
void Close();
/// <summary>
/// Flushes any pending data to the output destination.
/// </summary>
void Flush();
/// <summary>
/// Pops the element name validator.
/// </summary>
/// <returns>The popped element validator.</returns>
void PopElementNameValidator();
/// <summary>
/// Pops the settings.
/// </summary>
void PopSettings();
/// <summary>
/// Pushes the element name validator.
/// </summary>
/// <param name="validator">The validator.</param>
void PushElementNameValidator(IElementNameValidator validator);
/// <summary>
/// Pushes new settings for the writer.
/// </summary>
/// <param name="configurator">The settings configurator.</param>
void PushSettings(Action<BsonWriterSettings> configurator);
/// <summary>
/// Writes BSON binary data to the writer.
/// </summary>
/// <param name="binaryData">The binary data.</param>
void WriteBinaryData(BsonBinaryData binaryData);
/// <summary>
/// Writes a BSON Boolean to the writer.
/// </summary>
/// <param name="value">The Boolean value.</param>
void WriteBoolean(bool value);
/// <summary>
/// Writes BSON binary data to the writer.
/// </summary>
/// <param name="bytes">The bytes.</param>
void WriteBytes(byte[] bytes);
/// <summary>
/// Writes a BSON DateTime to the writer.
/// </summary>
/// <param name="value">The number of milliseconds since the Unix epoch.</param>
void WriteDateTime(long value);
/// <summary>
/// Writes a BSON Decimal128 to the writer.
/// </summary>
/// <param name="value">The <see cref="Decimal128"/> value.</param>
void WriteDecimal128(Decimal128 value);
/// <summary>
/// Writes a BSON Double to the writer.
/// </summary>
/// <param name="value">The Double value.</param>
void WriteDouble(double value);
/// <summary>
/// Writes the end of a BSON array to the writer.
/// </summary>
void WriteEndArray();
/// <summary>
/// Writes the end of a BSON document to the writer.
/// </summary>
void WriteEndDocument();
/// <summary>
/// Writes a BSON Int32 to the writer.
/// </summary>
/// <param name="value">The Int32 value.</param>
void WriteInt32(int value);
/// <summary>
/// Writes a BSON Int64 to the writer.
/// </summary>
/// <param name="value">The Int64 value.</param>
void WriteInt64(long value);
/// <summary>
/// Writes a BSON JavaScript to the writer.
/// </summary>
/// <param name="code">The JavaScript code.</param>
void WriteJavaScript(string code);
/// <summary>
/// Writes a BSON JavaScript to the writer (call WriteStartDocument to start writing the scope).
/// </summary>
/// <param name="code">The JavaScript code.</param>
void WriteJavaScriptWithScope(string code);
/// <summary>
/// Writes a BSON MaxKey to the writer.
/// </summary>
void WriteMaxKey();
/// <summary>
/// Writes a BSON MinKey to the writer.
/// </summary>
void WriteMinKey();
/// <summary>
/// Writes the name of an element to the writer.
/// </summary>
/// <param name="name">The name of the element.</param>
void WriteName(string name);
/// <summary>
/// Writes a BSON null to the writer.
/// </summary>
void WriteNull();
/// <summary>
/// Writes a BSON ObjectId to the writer.
/// </summary>
/// <param name="objectId">The ObjectId.</param>
void WriteObjectId(ObjectId objectId);
/// <summary>
/// Writes a raw BSON array.
/// </summary>
/// <param name="slice">The byte buffer containing the raw BSON array.</param>
void WriteRawBsonArray(IByteBuffer slice);
/// <summary>
/// Writes a raw BSON document.
/// </summary>
/// <param name="slice">The byte buffer containing the raw BSON document.</param>
void WriteRawBsonDocument(IByteBuffer slice);
/// <summary>
/// Writes a BSON regular expression to the writer.
/// </summary>
/// <param name="regex">A BsonRegularExpression.</param>
void WriteRegularExpression(BsonRegularExpression regex);
/// <summary>
/// Writes the start of a BSON array to the writer.
/// </summary>
void WriteStartArray();
/// <summary>
/// Writes the start of a BSON document to the writer.
/// </summary>
void WriteStartDocument();
/// <summary>
/// Writes a BSON String to the writer.
/// </summary>
/// <param name="value">The String value.</param>
void WriteString(string value);
/// <summary>
/// Writes a BSON Symbol to the writer.
/// </summary>
/// <param name="value">The symbol.</param>
void WriteSymbol(string value);
/// <summary>
/// Writes a BSON timestamp to the writer.
/// </summary>
/// <param name="value">The combined timestamp/increment value.</param>
void WriteTimestamp(long value);
/// <summary>
/// Writes a BSON undefined to the writer.
/// </summary>
void WriteUndefined();
}
}