public void WriteMessage(MsgMessage message, IBufferWriter <byte> output) { var span = output.GetSpan(); var writer = new BsonWriter(output); writer.WriteInt32(0); // size writer.WriteInt32(message.RequestNumber); writer.WriteInt32(0); // responseTo writer.WriteInt32((int)message.Opcode); writer.WriteInt32((int)CreateFlags(message)); writer.WriteByte((byte)message.Type); writer.WriteDocument(message.Document); writer.Commit(); BinaryPrimitives.WriteInt32LittleEndian(span, writer.Written); }
public void WriteMessage(GetMoreMessage message, IBufferWriter <byte> output) { var span = output.GetSpan(); var writer = new BsonWriter(output); writer.WriteInt32(0); // size writer.WriteInt32(message.RequestNumber); writer.WriteInt32(0); // responseTo writer.WriteInt32((int)message.Opcode); writer.WriteInt32(0); // 0 - reserved for future use writer.WriteCString(message.FullCollectionName); writer.WriteInt32(message.NumberToReturn); writer.WriteInt64(message.CursorId); writer.Commit(); BinaryPrimitives.WriteInt32LittleEndian(span, writer.Written); }
public void WriteMessage(QueryMessage message, IBufferWriter <byte> output) { var span = output.GetSpan(); var writer = new BsonWriter(output); writer.WriteInt32(0); // size writer.WriteInt32(message.RequestNumber); writer.WriteInt32(0); // responseTo writer.WriteInt32((int)message.Opcode); writer.WriteInt32((int)BuildQueryFlags(message)); writer.WriteCString(message.FullCollectionName); writer.WriteInt32(0); // message.Skip writer.WriteInt32(-1); // message.BatchSize writer.WriteDocument(message.Document); // WriteOptionalFields(binaryWriter, message.Fields); writer.Commit(); BinaryPrimitives.WriteInt32LittleEndian(span, writer.Written); }