Exemple #1
0
        protected virtual MessageStatus HandlePing(ApolloQueue targetQueue, IMessage message, CancellationToken?token)
        {
            var response = MessageFactory.CreateAcknowledgment(message);

            response[nameof(PingStats.ServedBy)] = Communicator.GetState <string>(ApolloConstants.RegisteredAsKey);
            response[nameof(PingStats.TimeRequestEnqueuedUtc)] = message.EnqueuedTimeUtc;
            Communicator.SendToClientsAsync(response);
            return(MessageStatus.Complete);
        }
Exemple #2
0
 private MessageStatus AliasOwnershipRequestReceived(ApolloQueue queue, IMessage m, CancellationToken?cancelToken)
 {
     if (_storage.CheckOwnership(m.GetStringProperty(DesiredAliasKey), Guid.Parse(m.GetStringProperty(AliasTokenKey)), m.ReplyToSession))
     {
         var reply = MessageFactory.CreateAcknowledgment(m);
         reply.CopyPropertiesFrom(m);
         Communicator.SendToClientsAsync(reply);
         Logger.Info($"{m.Identifier} granted ownership of alias '{m.GetStringProperty(DesiredAliasKey)}'");
     }
     else
     {
         Logger.Info($"{m.Identifier} denied ownership of alias '{m.GetStringProperty(DesiredAliasKey)}'");
         Communicator.SendToClientsAsync(MessageFactory.CreateNegativeAcknowledgment(m, $"Token did not match the one registered for {m.GetStringProperty(DesiredAliasKey)}"));
     }
     return(MessageStatus.Complete);
 }
Exemple #3
0
        private MessageStatus AliasOwnershipClaimReceived(ApolloQueue queue, IMessage m, CancellationToken?cancelToken)
        {
            var oldOwner = _storage.TakeOwnership(m.GetStringProperty(DesiredAliasKey), Guid.Parse(m.GetStringProperty(AliasTokenKey)), m.ReplyToSession);

            if (oldOwner != null)
            {
                var lostOwnershipMessage = MessageFactory.CreateNewMessage("Lost Alias Ownership");
                lostOwnershipMessage.TargetSession    = oldOwner;
                lostOwnershipMessage[DesiredAliasKey] = m.GetStringProperty(DesiredAliasKey);
                Communicator.SendToClientsAsync(lostOwnershipMessage);
            }
            var reply = MessageFactory.CreateAcknowledgment(m);

            reply.CopyPropertiesFrom(m);
            Communicator.SendToClientsAsync(reply);
            return(MessageStatus.Complete);
        }