本文整理汇总了C#中IByteBuffer.WriteTo方法的典型用法代码示例。如果您正苦于以下问题:C# IByteBuffer.WriteTo方法的具体用法?C# IByteBuffer.WriteTo怎么用?C# IByteBuffer.WriteTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IByteBuffer
的用法示例。
在下文中一共展示了IByteBuffer.WriteTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteRawBsonDocument
/// <summary>
/// Writes a raw BSON document.
/// </summary>
/// <param name="slice">The byte buffer containing the raw BSON document.</param>
public override void WriteRawBsonDocument(IByteBuffer slice)
{
if (Disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
if (State != BsonWriterState.Initial && State != BsonWriterState.Value && State != BsonWriterState.ScopeDocument && State != BsonWriterState.Done)
{
ThrowInvalidState("WriteRawBsonDocument", BsonWriterState.Initial, BsonWriterState.Value, BsonWriterState.ScopeDocument, BsonWriterState.Done);
}
if (State == BsonWriterState.Value)
{
_streamWriter.WriteBsonType(BsonType.Document);
WriteNameHelper();
}
slice.WriteTo(_streamWriter.BaseStream); // assumes byteBuffer is a valid raw BSON document
if (_context == null)
{
State = BsonWriterState.Done;
}
else
{
if (_context.ContextType == ContextType.JavaScriptWithScope)
{
BackpatchSize(); // size of the JavaScript with scope value
_context = _context.ParentContext;
}
State = GetNextState();
}
}
示例2: WriteRawBsonArray
/// <summary>
/// Writes a raw BSON array.
/// </summary>
/// <param name="slice">The byte buffer containing the raw BSON array.</param>
public virtual void WriteRawBsonArray(IByteBuffer slice)
{
// overridden in BsonBinaryWriter to write the raw bytes to the stream
// for all other streams, deserialize the raw bytes and serialize the resulting array instead
var documentLength = slice.Length + 8;
using (var memoryStream = new MemoryStream(documentLength))
{
// wrap the array in a fake document so we can deserialize it
var streamWriter = new BsonStreamWriter(memoryStream, Utf8Helper.StrictUtf8Encoding);
streamWriter.WriteInt32(documentLength);
streamWriter.WriteBsonType(BsonType.Array);
streamWriter.WriteByte((byte)'x');
streamWriter.WriteByte(0);
slice.WriteTo(streamWriter.BaseStream);
streamWriter.WriteByte(0);
memoryStream.Position = 0;
using (var bsonReader = new BsonBinaryReader(memoryStream, BsonBinaryReaderSettings.Defaults))
{
var deserializationContext = BsonDeserializationContext.CreateRoot<BsonDocument>(bsonReader);
bsonReader.ReadStartDocument();
bsonReader.ReadName("x");
var array = deserializationContext.DeserializeWithChildContext(BsonArraySerializer.Instance);
bsonReader.ReadEndDocument();
var serializationContext = BsonSerializationContext.CreateRoot<BsonArray>(this);
BsonArraySerializer.Instance.Serialize(serializationContext, array);
}
}
}
示例3: WriteRawBsonArray
/// <summary>
/// Writes a raw BSON array.
/// </summary>
/// <param name="slice">The byte buffer containing the raw BSON array.</param>
public override void WriteRawBsonArray(IByteBuffer slice)
{
if (Disposed) { throw new ObjectDisposedException("BsonBinaryWriter"); }
if (State != BsonWriterState.Value)
{
ThrowInvalidState("WriteRawBsonArray", BsonWriterState.Value);
}
_streamWriter.WriteBsonType(BsonType.Array);
WriteNameHelper();
slice.WriteTo(_streamWriter.BaseStream); // assumes byteBuffer is a valid raw BSON array
State = GetNextState();
}