예제 #1
0
        // internal methods
        internal void ConfigureAutoEncryptionMessageEncoderSettings(MessageEncoderSettings messageEncoderSettings)
        {
            var autoEncryptionOptions = _settings.AutoEncryptionOptions;

            if (autoEncryptionOptions != null)
            {
                if (!autoEncryptionOptions.BypassAutoEncryption)
                {
                    messageEncoderSettings.Add(MessageEncoderSettingsName.BinaryDocumentFieldEncryptor, _libMongoCryptController);
                }
                messageEncoderSettings.Add(MessageEncoderSettingsName.BinaryDocumentFieldDecryptor, _libMongoCryptController);
            }
        }
        public void WriteMessage_should_not_exceed_MaxMessageSize()
        {
            var documents = new BsonDocument[]
            {
                new BsonDocument("x", 1),
                new BsonDocument("x", 2)
            };
            var type0Section    = CreateType0Section();
            var type1Section    = CreateType1Section("id", documents, canBeSplit: true);
            var message         = CreateMessage(sections: new CommandMessageSection[] { type0Section, type1Section });
            var messageBytes    = CreateMessageBytes(message);
            var maxMessageSize  = messageBytes.Length - 1;
            var encoderSettings = new MessageEncoderSettings();

            encoderSettings.Add(MessageEncoderSettingsName.MaxMessageSize, maxMessageSize);
            var stream  = new MemoryStream();
            var subject = CreateSubject(stream: stream, encoderSettings: encoderSettings);

            subject.WriteMessage(message);
            var result = stream.ToArray();

            result.Length.Should().BeLessOrEqualTo(maxMessageSize);
            var batch = type1Section.Documents;

            batch.AllItemsWereProcessed.Should().BeFalse();
            batch.Count.Should().Be(2); // no one has called AdvancePastProcessedItems yet
            batch.Offset.Should().Be(0);
            batch.ProcessedCount.Should().Be(1);
        }
예제 #3
0
        public void MaxMessageSize_should_return_expected_result(
            [Values(null, 1, 2)] int?maxMessageSize)
        {
            var encoderSettings = new MessageEncoderSettings();

            encoderSettings.Add(MessageEncoderSettingsName.MaxMessageSize, maxMessageSize);
            var subject = CreateSubject(encoderSettings: encoderSettings);

            var result = subject.MaxMessageSize();

            result.Should().Be(maxMessageSize);
        }
예제 #4
0
        // private methods
        private MessageEncoderSettings GetMessageEncoderSettings()
        {
            var messageEncoderSettings = new MessageEncoderSettings
            {
                { MessageEncoderSettingsName.ReadEncoding, _settings.ReadEncoding ?? Utf8Encodings.Strict },
                { MessageEncoderSettingsName.WriteEncoding, _settings.WriteEncoding ?? Utf8Encodings.Strict }
            };

#pragma warning disable 618
            if (BsonDefaults.GuidRepresentationMode == GuidRepresentationMode.V2)
            {
                messageEncoderSettings.Add(MessageEncoderSettingsName.GuidRepresentation, _settings.GuidRepresentation);
            }
#pragma warning restore 618
            return(messageEncoderSettings);
        }
예제 #5
0
        internal static MessageEncoderSettings GetMessageEncoderSettings <TFileId>(this IGridFSBucket <TFileId> bucket)
        {
            var databaseSettings       = bucket.Database.Settings;
            var messageEncoderSettings = new MessageEncoderSettings
            {
                { MessageEncoderSettingsName.ReadEncoding, databaseSettings.ReadEncoding ?? Utf8Encodings.Strict },
                { MessageEncoderSettingsName.WriteEncoding, databaseSettings.WriteEncoding ?? Utf8Encodings.Strict }
            };

#pragma warning disable 618
            if (BsonDefaults.GuidRepresentationMode == GuidRepresentationMode.V2)
            {
                messageEncoderSettings.Add(MessageEncoderSettingsName.GuidRepresentation, databaseSettings.GuidRepresentation);
            }
#pragma warning restore 618
            return(messageEncoderSettings);
        }
예제 #6
0
        // constructors
        public MongoDatabaseImpl(IMongoClient client, DatabaseNamespace databaseNamespace, MongoDatabaseSettings settings, ICluster cluster, IOperationExecutor operationExecutor)
        {
            _client            = Ensure.IsNotNull(client, nameof(client));
            _databaseNamespace = Ensure.IsNotNull(databaseNamespace, nameof(databaseNamespace));
            _settings          = Ensure.IsNotNull(settings, nameof(settings)).Freeze();
            _cluster           = Ensure.IsNotNull(cluster, nameof(cluster));
            _operationExecutor = Ensure.IsNotNull(operationExecutor, nameof(operationExecutor));

            _messageEncoderSettings = new MessageEncoderSettings
            {
                { MessageEncoderSettingsName.ReadEncoding, _settings.ReadEncoding ?? Utf8Encodings.Strict },
                { MessageEncoderSettingsName.WriteEncoding, _settings.WriteEncoding ?? Utf8Encodings.Strict }
            };
#pragma warning disable 618
            if (BsonDefaults.GuidRepresentationMode == GuidRepresentationMode.V2)
            {
                _messageEncoderSettings.Add(MessageEncoderSettingsName.GuidRepresentation, _settings.GuidRepresentation);
            }
#pragma warning restore 618
        }