private static IDictionary <AnyVersionMessageIdentifier, DomainPrivateKey> CreateMessageMapping(IDictionary <string, DomainPrivateKey> domainKeys, IDomainScopeResolver domainScopeResolver) { var mappings = new Dictionary <AnyVersionMessageIdentifier, DomainPrivateKey>(); var domainScopes = domainScopeResolver.GetDomainMessages(domainKeys.Select(dk => dk.Key)); foreach (var message in domainScopes.SelectMany(dm => dm.MessageIdentities, (dm, id) => new { Identity = id, Domain = dm.Domain })) { if (domainKeys.TryGetValue(message.Domain, out var key)) { var messageIdentifier = new AnyVersionMessageIdentifier(message.Identity.GetBytes()); DomainPrivateKey _; if (!mappings.TryGetValue(messageIdentifier, out _)) { mappings.Add(messageIdentifier, key); } else { throw new Exception($"Message {message.Identity} is already mapped to Domain {_.Domain}!"); } } else { throw new Exception($"PrivateKey for Domain {message.Domain} is not found!"); } } return(mappings); }
private DomainPrivateKey FindDomain(AnyVersionMessageIdentifier identity) { if (messageToDomainMap.TryGetValue(identity, out var domain)) { return(domain); } throw new MessageNotSupportedException(identity.ToString()); }