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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }