本文整理汇总了C#中MongoDB.Bson.IO.BsonBinaryWriter.WriteStartDocument方法的典型用法代码示例。如果您正苦于以下问题:C# BsonBinaryWriter.WriteStartDocument方法的具体用法?C# BsonBinaryWriter.WriteStartDocument怎么用?C# BsonBinaryWriter.WriteStartDocument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MongoDB.Bson.IO.BsonBinaryWriter
的用法示例。
在下文中一共展示了BsonBinaryWriter.WriteStartDocument方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BsonBinaryReader_should_support_reading_more_than_2GB
public void BsonBinaryReader_should_support_reading_more_than_2GB()
{
RequireEnvironmentVariable.IsDefined("EXPLICIT");
var binaryData = new BsonBinaryData(new byte[1024 * 1024]);
var tempFileName = Path.GetTempFileName();
try
{
using (var stream = new FileStream(tempFileName, FileMode.Open))
{
using (var binaryWriter = new BsonBinaryWriter(stream))
{
while (stream.Position < (long)int.MaxValue * 4)
{
binaryWriter.WriteStartDocument();
binaryWriter.WriteName("x");
binaryWriter.WriteBinaryData(binaryData);
binaryWriter.WriteEndDocument();
}
}
var endOfFilePosition = stream.Position;
stream.Position = 0;
using (var binaryReader = new BsonBinaryReader(stream))
{
while (!binaryReader.IsAtEndOfFile())
{
binaryReader.ReadStartDocument();
var bookmark = binaryReader.GetBookmark();
binaryReader.ReadName("x");
binaryReader.ReturnToBookmark(bookmark);
binaryReader.ReadName("x");
var readBinaryData = binaryReader.ReadBinaryData();
Assert.Equal(binaryData.Bytes.Length, readBinaryData.Bytes.Length);
binaryReader.ReadEndDocument();
}
}
Assert.Equal(endOfFilePosition, stream.Position);
}
}
finally
{
try
{
File.Delete(tempFileName);
}
catch
{
// ignore exceptions
}
}
}
示例2: SerializeRequest
// protected methods
protected override void SerializeRequest(BsonBinaryWriter bsonWriter, WriteRequest request)
{
var deleteRequest = (DeleteRequest)request;
bsonWriter.PushMaxDocumentSize(MaxDocumentSize);
bsonWriter.WriteStartDocument();
bsonWriter.WriteName("q");
BsonSerializer.Serialize(bsonWriter, deleteRequest.Query ?? new QueryDocument());
bsonWriter.WriteInt32("limit", deleteRequest.Limit);
bsonWriter.WriteEndDocument();
bsonWriter.PopMaxDocumentSize();
}
示例3: Test1ChunkPlus1
public void Test1ChunkPlus1()
{
var stream = new MemoryStream();
using (var bsonWriter = new BsonBinaryWriter(stream))
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteBytes("Data", new byte[16 * 1024 - 15]);
bsonWriter.WriteEndDocument();
bsonWriter.Close();
}
}
示例4: TestFlushAndClose
public void TestFlushAndClose()
{
var stream = new MemoryStream();
using (var bsonWriter = new BsonBinaryWriter(stream))
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteEndDocument();
bsonWriter.Flush();
bsonWriter.Close();
}
}
示例5: WriteBodyTo
// internal methods
internal override void WriteBodyTo(BsonStreamWriter streamWriter)
{
using (var bsonWriter = new BsonBinaryWriter(streamWriter.BaseStream, WriterSettings))
{
bsonWriter.PushMaxDocumentSize(_maxDocumentSize);
if (_query == null)
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteEndDocument();
}
else
{
BsonSerializer.Serialize(bsonWriter, _query.GetType(), _query, b => b.SerializeIdFirst = true);
}
bsonWriter.PopMaxDocumentSize();
}
}
示例6: WriteBodyTo
// internal methods
internal override void WriteBodyTo(BsonBuffer buffer)
{
using (var bsonWriter = new BsonBinaryWriter(buffer, false, WriterSettings))
{
bsonWriter.PushMaxDocumentSize(_maxDocumentSize);
if (_query == null)
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteEndDocument();
}
else
{
BsonSerializer.Serialize(bsonWriter, _query.GetType(), _query, DocumentSerializationOptions.SerializeIdFirstInstance);
}
bsonWriter.PopMaxDocumentSize();
}
}
示例7: BackpatchSize_should_throw_when_size_is_larger_than_2GB
public void BackpatchSize_should_throw_when_size_is_larger_than_2GB()
{
using (var stream = new NullBsonStream())
using (var binaryWriter = new BsonBinaryWriter(stream))
{
var bytes = new byte[int.MaxValue / 2]; // 1GB
var binaryData = new BsonBinaryData(bytes);
binaryWriter.WriteStartDocument();
binaryWriter.WriteName("array");
binaryWriter.WriteStartArray();
binaryWriter.WriteBinaryData(binaryData);
binaryWriter.WriteBinaryData(binaryData);
Action action = () => binaryWriter.WriteEndArray(); // indirectly calls private BackpatchSize method
action.ShouldThrow<FormatException>();
}
}
示例8: WriteBody
// protected methods
protected override void WriteBody(BsonBuffer buffer)
{
buffer.WriteInt32(0); // reserved
buffer.WriteCString(_collectionFullName);
buffer.WriteInt32((int)_flags);
using (var bsonWriter = new BsonBinaryWriter(buffer, false, WriterSettings))
{
if (_query == null)
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteEndDocument();
}
else
{
BsonSerializer.Serialize(bsonWriter, _query.GetType(), _query, DocumentSerializationOptions.SerializeIdFirstInstance);
}
}
}
示例9: SerializeRequest
// protected methods
protected override void SerializeRequest(BsonBinaryWriter bsonWriter, WriteRequest request)
{
var updateRequest = (UpdateRequest)request;
bsonWriter.PushMaxDocumentSize(MaxWireDocumentSize);
bsonWriter.WriteStartDocument();
bsonWriter.WriteName("q");
BsonSerializer.Serialize(bsonWriter, updateRequest.Query ?? new QueryDocument());
bsonWriter.WriteName("u");
BsonSerializer.Serialize(bsonWriter, updateRequest.Update);
if (updateRequest.IsMultiUpdate.HasValue)
{
bsonWriter.WriteBoolean("multi", updateRequest.IsMultiUpdate.Value);
}
if (updateRequest.IsUpsert.HasValue)
{
bsonWriter.WriteBoolean("upsert", updateRequest.IsUpsert.Value);
}
bsonWriter.WriteEndDocument();
bsonWriter.PopMaxDocumentSize();
}
示例10: BsonBinaryWriter_should_support_writing_multiple_documents
public void BsonBinaryWriter_should_support_writing_multiple_documents(
[Range(0, 3)]
int numberOfDocuments)
{
var document = new BsonDocument("x", 1);
var bson = document.ToBson();
var expectedResult = Enumerable.Repeat(bson, numberOfDocuments).Aggregate(Enumerable.Empty<byte>(), (a, b) => a.Concat(b)).ToArray();
using (var stream = new MemoryStream())
using (var binaryWriter = new BsonBinaryWriter(stream))
{
for (var n = 0; n < numberOfDocuments; n++)
{
binaryWriter.WriteStartDocument();
binaryWriter.WriteName("x");
binaryWriter.WriteInt32(1);
binaryWriter.WriteEndDocument();
}
var result = stream.ToArray();
result.Should().Equal(expectedResult);
}
}
示例11: WriteBody
// protected methods
protected override void WriteBody(BsonBuffer buffer)
{
buffer.WriteInt32((int)_flags);
buffer.WriteCString(new UTF8Encoding(false, true), _collectionFullName);
buffer.WriteInt32(_numberToSkip);
buffer.WriteInt32(_numberToReturn);
using (var bsonWriter = new BsonBinaryWriter(buffer, false, WriterSettings))
{
if (_query == null)
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteEndDocument();
}
else
{
BsonSerializer.Serialize(bsonWriter, _query.GetType(), _query, DocumentSerializationOptions.SerializeIdFirstInstance);
}
if (_fields != null)
{
BsonSerializer.Serialize(bsonWriter, _fields);
}
}
}
示例12: ReadRawBsonArray
/// <summary>
/// Reads a raw BSON array.
/// </summary>
/// <returns>The raw BSON array.</returns>
public virtual IByteBuffer ReadRawBsonArray()
{
// overridden in BsonBinaryReader to read the raw bytes from the stream
// for all other streams, deserialize the array and reserialize it using a BsonBinaryWriter to get the raw bytes
var deserializationContext = BsonDeserializationContext.CreateRoot(this);
var array = BsonArraySerializer.Instance.Deserialize(deserializationContext);
using (var memoryStream = new MemoryStream())
using (var bsonWriter = new BsonBinaryWriter(memoryStream, BsonBinaryWriterSettings.Defaults))
{
var serializationContext = BsonSerializationContext.CreateRoot(bsonWriter);
bsonWriter.WriteStartDocument();
var startPosition = memoryStream.Position + 3; // just past BsonType, "x" and null byte
bsonWriter.WriteName("x");
BsonArraySerializer.Instance.Serialize(serializationContext, array);
var endPosition = memoryStream.Position;
bsonWriter.WriteEndDocument();
byte[] memoryStreamBuffer;
#if NETSTANDARD1_5 || NETSTANDARD1_6
memoryStreamBuffer = memoryStream.ToArray();
#else
memoryStreamBuffer = memoryStream.GetBuffer();
#endif
var buffer = new ByteArrayBuffer(memoryStreamBuffer, (int)memoryStream.Length, isReadOnly: true);
return new ByteBufferSlice(buffer, (int)startPosition, (int)(endPosition - startPosition));
}
}
示例13: TestSpecHelloWorldWithBsonWriter
public void TestSpecHelloWorldWithBsonWriter()
{
// this test is from http://bsonspec.org/#/specification
var stream = new MemoryStream();
using (var bsonWriter = new BsonBinaryWriter(stream))
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteString("hello", "world");
bsonWriter.WriteEndDocument();
}
byte[] bytes = stream.ToArray();
AssertAreEqual(@"\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00", bytes);
}
示例14: TestSpecBsonAwesomeWithBsonWriter
public void TestSpecBsonAwesomeWithBsonWriter()
{
// this test is from http://bsonspec.org/#/specification
var stream = new MemoryStream();
using (var bsonWriter = new BsonBinaryWriter(stream))
{
bsonWriter.WriteStartDocument();
bsonWriter.WriteStartArray("BSON");
bsonWriter.WriteString("awesome");
bsonWriter.WriteDouble(5.05);
bsonWriter.WriteInt32(1986);
bsonWriter.WriteEndArray();
bsonWriter.WriteEndDocument();
}
byte[] bytes = stream.ToArray();
AssertAreEqual(@"1\x00\x00\x00\x04BSON\x00&\x00\x00\x00\x020\x00\x08\x00\x00\x00awesome\x00\x011\x00333333\[email protected]\x102\x00\xc2\x07\x00\x00\x00\x00", bytes);
}
示例15: ReadRawBsonArray
/// <summary>
/// Reads a raw BSON array.
/// </summary>
/// <returns>The raw BSON array.</returns>
public virtual IByteBuffer ReadRawBsonArray()
{
// overridden in BsonBinaryReader to read the raw bytes from the stream
// for all other streams, deserialize the array and reserialize it using a BsonBinaryWriter to get the raw bytes
var deserializationContext = BsonDeserializationContext.CreateRoot<BsonArray>(this);
var array = BsonArraySerializer.Instance.Deserialize(deserializationContext);
using (var memoryStream = new MemoryStream())
using (var bsonWriter = new BsonBinaryWriter(memoryStream, BsonBinaryWriterSettings.Defaults))
{
var serializationContext = BsonSerializationContext.CreateRoot<BsonDocument>(bsonWriter);
bsonWriter.WriteStartDocument();
var startPosition = memoryStream.Position + 3; // just past BsonType, "x" and null byte
bsonWriter.WriteName("x");
serializationContext.SerializeWithChildContext(BsonArraySerializer.Instance, array);
var endPosition = memoryStream.Position;
bsonWriter.WriteEndDocument();
var bytes = memoryStream.ToArray();
return new ByteArrayBuffer(bytes, (int)startPosition, (int)(endPosition - startPosition), true);
}
}