Пример #1
0
        public async Task <AnswerCreateCommandResult> ExecuteAsync(AnswerCreateCommand command, SimpleQAIdentity user, CancellationToken cancel)
        {
            var result = await _channel.ExecuteAsync(
                "CreateAnswer {question} @qid @data",
                new
            {
                qid  = command.QuestionId,
                data = GetAnswerData(command, command.QuestionId, user)
            }).ConfigureAwait(false);

            result = result[0].AsResults();
            var aid         = result[0].GetString();
            var quesionData = result[1].GetStringArray();
            var slug        = quesionData[0];
            var ownerId     = quesionData[1];

            if (ownerId != user.Id)
            {
                _channel.Dispatch("NotifyQuestionUpdate {user} @qid @uid",
                                  new
                {
                    qid = command.QuestionId,
                    uid = user.Id
                });
            }
            return(new AnswerCreateCommandResult(command.QuestionId, slug, aid));
        }
Пример #2
0
        public Task SendMessageAsync(PushSubscriptionRequest request, CancellationToken cancel)
        {
            CheckInit();
            var topic = GetRedisTopic(request.Topic);

            _channel.Dispatch("subscribe @topic", new { topic });
            return(Task.FromResult <Object>(null));
        }
Пример #3
0
 public Task <EndSessionCommandResult> ExecuteAsync(EndSessionCommand command, SimpleQAIdentity user, CancellationToken cancel)
 {
     _channel.Dispatch("EndSession {user} @SessionId", new { command.SessionId });
     return(Task.FromResult(EndSessionCommandResult.Instance));
 }
 public Task <VisitQuestionCommandResult> ExecuteAsync(VisitQuestionCommand command, SimpleQAIdentity user, CancellationToken cancel)
 {
     _channel.Dispatch("VisitQuestion {question} @QuestionId @Views", command);
     return(Task.FromResult(VisitQuestionCommandResult.Nothing));
 }
Пример #5
0
 /// <summary>
 /// Executes the given command without waiting.
 /// </summary>
 /// <param name="channel"><see cref="IRedisChannel"/></param>
 /// <param name="command">The Redis command.</param>
 public static void Dispatch(this IRedisChannel channel, String command)
 {
     channel.Dispatch <Object>(command, null);
 }