예제 #1
0
        public override async Task <CreateResp> Create(CreateReq request, ServerCallContext context)
        {
            var createPersistentSubscriptionSource = new TaskCompletionSource <CreateResp>();
            var settings      = request.Options.Settings;
            var correlationId = Guid.NewGuid();

            var user = context.GetHttpContext().User;

            if (!await _authorizationProvider.CheckAccessAsync(user,
                                                               CreateOperation, context.CancellationToken).ConfigureAwait(false))
            {
                throw AccessDenied();
            }
            _publisher.Publish(new ClientMessage.CreatePersistentSubscription(
                                   correlationId,
                                   correlationId,
                                   new CallbackEnvelope(HandleCreatePersistentSubscriptionCompleted),
                                   request.Options.StreamIdentifier,
                                   request.Options.GroupName,
                                   settings.ResolveLinks,
                                   new StreamRevision(settings.Revision).ToInt64(),
                                   settings.MessageTimeoutCase switch {
                CreateReq.Types.Settings.MessageTimeoutOneofCase.MessageTimeoutMs => settings.MessageTimeoutMs,
                CreateReq.Types.Settings.MessageTimeoutOneofCase.MessageTimeoutTicks => (int)TimeSpan
                .FromTicks(settings.MessageTimeoutTicks).TotalMilliseconds,
                _ => 0
            },
        public override async Task <CreateResp> Create(CreateReq request, ServerCallContext context)
        {
            var createPersistentSubscriptionSource = new TaskCompletionSource <CreateResp>();
            var settings      = request.Options.Settings;
            var correlationId = Guid.NewGuid();

            var user = await GetUser(_authenticationProvider, context.RequestHeaders).ConfigureAwait(false);

            _queue.Publish(new ClientMessage.CreatePersistentSubscription(
                               correlationId,
                               correlationId,
                               new CallbackEnvelope(HandleCreatePersistentSubscriptionCompleted),
                               request.Options.StreamName,
                               request.Options.GroupName,
                               settings.ResolveLinks,
                               new StreamRevision(settings.Revision).ToInt64(),
                               (int)TimeSpan.FromTicks(settings.MessageTimeout).TotalMilliseconds,
                               settings.ExtraStatistics,
                               settings.MaxRetryCount,
                               settings.HistoryBufferSize,
                               settings.LiveBufferSize,
                               settings.ReadBatchSize,
                               (int)TimeSpan.FromTicks(settings.CheckpointAfter).TotalMilliseconds,
                               settings.MinCheckpointCount,
                               settings.MaxCheckpointCount,
                               settings.MaxSubscriberCount,
                               settings.NamedConsumerStrategy.ToString(),
                               user,