private ManagedGroup CreateGroup(List <Car> cars) { var id = _groups.Count; var queue = new MessageQueue(); var processor = _messageProcessorFactory.Create(queue); var thread = CreateThread(processor, id); var group = new ManagedGroup { id = id, Cars = cars, MessageProcessor = processor, MessageQueue = queue, Thread = thread }; _groups.Add(id, group); foreach (var car in cars) { _queueLookup.Add(car, queue); } return(group); }
private void RebuildManagedGroup(ManagedGroup group) { var queue = new MessageQueue(); var processor = _messageProcessorFactory.Create(queue); var thread = CreateThread(processor, group.id); group.MessageQueue = queue; group.MessageProcessor = processor; group.Thread = thread; //remove old mapping foreach (var car in group.Cars) { _queueLookup.Remove(car); } //add new mapping foreach (var car in group.Cars) { _queueLookup.Add(car, queue); } thread.Start(); }
private ManagedGroup CreateGroup(List<Car> cars) { var id = _groups.Count; var queue = new MessageQueue(); var processor = _messageProcessorFactory.Create(queue); var thread = CreateThread(processor, id); var group = new ManagedGroup { id = id, Cars = cars, MessageProcessor = processor, MessageQueue = queue, Thread = thread }; _groups.Add(id, group); foreach (var car in cars) { _queueLookup.Add(car, queue); } return group; }