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); }
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); }
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); }