/// <summary> /// Writes the message. /// </summary> /// <param name="message">The message.</param> public void WriteMessage(GetMoreMessage message) { Ensure.IsNotNull(message, "message"); var messageDocument = new BsonDocument { { "opcode", "getMore" }, { "requestId", message.RequestId }, { "database", message.CollectionNamespace.DatabaseNamespace.DatabaseName }, { "collection", message.CollectionNamespace.CollectionName }, { "cursorId", message.CursorId }, { "batchSize", message.BatchSize } }; var jsonWriter = CreateJsonWriter(); var messageContext = BsonSerializationContext.CreateRoot(jsonWriter); BsonDocumentSerializer.Instance.Serialize(messageContext, messageDocument); }
/// <summary> /// Writes the message. /// </summary> /// <param name="message">The message.</param> public void WriteMessage(GetMoreMessage message) { Ensure.IsNotNull(message, "message"); var binaryWriter = CreateBinaryWriter(); var stream = binaryWriter.BsonStream; var startPosition = stream.Position; stream.WriteInt32(0); // messageSize stream.WriteInt32(message.RequestId); stream.WriteInt32(0); // responseTo stream.WriteInt32((int)Opcode.GetMore); stream.WriteInt32(0); // reserved stream.WriteCString(message.CollectionNamespace.FullName); stream.WriteInt32(message.BatchSize); stream.WriteInt64(message.CursorId); stream.BackpatchSize(startPosition); }
private void ProcessGetMoreMessage(GetMoreMessage originalMessage, ConnectionId connectionId, Stopwatch stopwatch) { var commandName = "getMore"; var operationId = EventContext.OperationId; if (_startedEvent != null) { var command = new BsonDocument { { commandName, originalMessage.CursorId }, { "collection", originalMessage.CollectionNamespace.CollectionName }, { "batchSize", originalMessage.BatchSize, originalMessage.BatchSize > 0 } }; var @event = new CommandStartedEvent( "getMore", command, originalMessage.CollectionNamespace.DatabaseNamespace, operationId, originalMessage.RequestId, connectionId); _startedEvent(@event); } if (_shouldTrackState) { _state.TryAdd(originalMessage.RequestId, new CommandState { CommandName = commandName, OperationId = operationId, Stopwatch = stopwatch, QueryNamespace = originalMessage.CollectionNamespace, ExpectedResponseType = ExpectedResponseType.Query }); } }