public void AddChildIterator <TChildModel, TChildStatus, TChildKey>(ChildIterator <TModel, TStatus, TChildModel, TChildStatus, TChildKey> childIterator) { childIterators.Add(childIterator.VisitChildren); }
public static Compare <Broker, Messages.BrokerStatus, int> BuildAnalysisModel() { // Broker var brokerCompare = new Compare <Broker, Messages.BrokerStatus, int> { ModelKeySelector = m => m.Id, StatusKeySelector = m => m.BrokerId, OnUnchanged = CheckBrokerStatus }; // VHost var vhostCompare = new Compare <VHost, Messages.VHost, string> { ModelKeySelector = m => m.Name, StatusKeySelector = s => s.Name, OnModelDeleted = OnVHostDeleted, OnNewStatus = OnVHostCreated }; var vhostIterator = new ChildIterator <Broker, Messages.BrokerStatus, VHost, Messages.VHost, string> { ChildModelSelector = broker => broker.VHosts, ChildStatusSelector = brokerStatus => brokerStatus.VHosts, ChildCompare = vhostCompare }; brokerCompare.AddChildIterator(vhostIterator); // Connection var connectionCompare = new Compare <Connection, Messages.Connection, string> { ModelKeySelector = m => m.Name, StatusKeySelector = s => s.Name, OnModelDeleted = OnConnectionLost, OnNewStatus = OnConnectionEstablished }; var connectionIterator = new ChildIterator <VHost, Messages.VHost, Connection, Messages.Connection, string> { ChildModelSelector = vhost => vhost.Connections, ChildStatusSelector = vhost => vhost.Connections, ChildCompare = connectionCompare }; vhostCompare.AddChildIterator(connectionIterator); // Consumer var consumerCompare = new Compare <Consumer, Messages.Consumer, string> { ModelKeySelector = m => m.Tag, StatusKeySelector = s => s.Tag, OnModelDeleted = OnConsumerCancel, OnNewStatus = OnNewConsumer }; var consumerIterator = new ChildIterator <Connection, Messages.Connection, Consumer, Messages.Consumer, string> { ChildModelSelector = connection => connection.Consumers, ChildStatusSelector = connection => connection.Consumers, ChildCompare = consumerCompare }; connectionCompare.AddChildIterator(consumerIterator); // Queue var queueCompare = new Compare <Queue, Messages.Queue, string> { ModelKeySelector = m => m.Name, StatusKeySelector = s => s.Name, OnModelDeleted = OnQueueDeleted, OnNewStatus = OnNewQueue, OnUnchanged = OnQueueLevel }; var queueIterator = new ChildIterator <VHost, Messages.VHost, Queue, Messages.Queue, string> { ChildModelSelector = vhost => vhost.Queues, ChildStatusSelector = vhost => vhost.Queues, ChildCompare = queueCompare }; vhostCompare.AddChildIterator(queueIterator); return(brokerCompare); }