private static UnregisterMessageRouteMessage CreateUnregisterMessageRoutePayload(byte[] receiverNodeIdentity, byte[] receiverIdentity = null) { var payload = new UnregisterMessageRouteMessage { Routes = EnumerableExtensions .Produce(Randomizer.Int32(2, 5), () => new RouteRegistration { MessageContracts = EnumerableExtensions .Produce(Randomizer.Int32(2, 5), () => new MessageContract { Identity = Guid.NewGuid().ToByteArray(), Version = Randomizer.UInt16(), Partition = Guid.NewGuid().ToByteArray() }) .ToArray(), ReceiverIdentity = receiverIdentity ?? Guid.NewGuid().ToByteArray() }) .ToArray(), ReceiverNodeIdentity = receiverNodeIdentity }; return(payload); }
private IEnumerable <ExternalRouteRemoval> GetUnregistrationRoutes(UnregisterMessageRouteMessage payload, string domain) { foreach (var route in payload.Routes.SelectMany(r => r.MessageContracts.Select(mc => new MessageRoute { Receiver = new ReceiverIdentifier(r.ReceiverIdentity), Message = new MessageIdentifier(mc.Identity, mc.Version, mc.Partition) }))) { if (route.Receiver.IsMessageHub() || securityProvider.GetDomain(route.Message.Identity) == domain) { yield return(new ExternalRouteRemoval { Route = route, NodeIdentifier = payload.ReceiverNodeIdentity }); } else { logger.Warn($"MessageIdentity {route.Message} doesn't belong to requested Domain {domain}!"); } } }