private Bcl.IDictionary <ReceiverIdentifier, Bcl.HashSet <MessageIdentifier> > MapSocketToActor(InternalRouteRegistration routeRegistration) { if (!socketToActorMessagesMap.TryGetValue(routeRegistration.DestinationSocket, out var actorMessages)) { actorMessages = new Bcl.Dictionary <ReceiverIdentifier, Bcl.HashSet <MessageIdentifier> > { [routeRegistration.ReceiverIdentifier] = new Bcl.HashSet <MessageIdentifier>() }; socketToActorMessagesMap[routeRegistration.DestinationSocket] = actorMessages; } return(actorMessages); }
private Bcl.IEnumerable <MessageActorRoute> GetNodeActors(ReceiverIdentifier node) { return(GetNodeMessageToActorsMap() .Select(ma => new MessageActorRoute { Message = ma.Key, Actors = ma.Value .Select(a => new ReceiverIdentifierRegistration(a, false)) .ToList() }) .ToList()); Bcl.IDictionary <MessageIdentifier, Bcl.HashSet <ReceiverIdentifier> > GetNodeMessageToActorsMap() { var messageActors = new Bcl.Dictionary <MessageIdentifier, Bcl.HashSet <ReceiverIdentifier> >(); if (nodeActors.TryGetValue(node, out var actors)) { foreach (var actor in actors) { if (actorToMessageMap.TryGetValue(actor, out var actorMessages)) { foreach (var message in actorMessages) { if (!messageActors.TryGetValue(message, out var tmpActors)) { tmpActors = new Bcl.HashSet <ReceiverIdentifier>(); messageActors[message] = tmpActors; } tmpActors.Add(actor); } } } } return(messageActors); } }