Пример #1
0
        public void ContainsReturnsTrue_WhenIdIsPresent()
        {
            var client = new Mock <ISubscriptionClientProxy>().Object;
            var idSet  = new ClientTrackedMessageIdSet();

            var result = idSet.ReserveMessageId("abc123");

            Assert.IsTrue(result);
            Assert.IsTrue(idSet.Contains("abc123"));
        }
Пример #2
0
        public void DuplicateIdIsRejected()
        {
            var client = new Mock <ISubscriptionClientProxy>().Object;
            var idSet  = new ClientTrackedMessageIdSet();

            var result = idSet.ReserveMessageId("abc123");

            Assert.IsTrue(result);

            result = idSet.ReserveMessageId("abc123");
            Assert.IsFalse(result);
        }
Пример #3
0
        public void ReleasedIdIsAllowedToBeAdded()
        {
            var client = new Mock <ISubscriptionClientProxy>().Object;
            var idSet  = new ClientTrackedMessageIdSet();

            var result = idSet.ReserveMessageId("abc123");

            Assert.IsTrue(result);

            idSet.ReleaseMessageId("abc123");
            result = idSet.ReserveMessageId("abc123");
            Assert.IsTrue(result);
        }
Пример #4
0
        public void ClearDropsAllIds()
        {
            var client = new Mock <ISubscriptionClientProxy>().Object;
            var idSet  = new ClientTrackedMessageIdSet();

            var result = idSet.ReserveMessageId("abc123");

            Assert.IsTrue(result);
            result = idSet.ReserveMessageId("abc1234");
            Assert.IsTrue(result);

            idSet.Clear();
            Assert.IsFalse(idSet.Contains("abc123"));
            Assert.IsFalse(idSet.Contains("abc1234"));
        }
Пример #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApolloClientProxy{TSchema}" /> class.
        /// </summary>
        /// <param name="clientConnection">The underlying client connection for apollo to manage.</param>
        /// <param name="options">The options used to configure the registration.</param>
        /// <param name="messageConverter">The message converter factory that will generate
        /// json converters for the various <see cref="ApolloMessage" /> the proxy shuttles to the client.</param>
        /// <param name="logger">The logger to record client level events to, if any.</param>
        /// <param name="enableMetrics">if set to <c>true</c> any queries this client
        /// executes will have metrics attached.</param>
        public ApolloClientProxy(
            IClientConnection clientConnection,
            SubscriptionServerOptions <TSchema> options,
            ApolloMessageConverterFactory messageConverter,
            IGraphEventLogger logger = null,
            bool enableMetrics       = false)
        {
            _connection         = Validation.ThrowIfNullOrReturn(clientConnection, nameof(clientConnection));
            _options            = Validation.ThrowIfNullOrReturn(options, nameof(options));
            _messageConverter   = Validation.ThrowIfNullOrReturn(messageConverter, nameof(messageConverter));
            _reservedMessageIds = new ClientTrackedMessageIdSet();
            _subscriptions      = new ApolloSubscriptionCollection <TSchema>();
            _enableKeepAlive    = options.KeepAliveInterval != TimeSpan.Zero;

            _logger        = logger != null ? new ApolloClientEventLogger <TSchema>(this, logger) : null;
            _enableMetrics = enableMetrics;
        }