protected override int PickOutputChannel(Infrastructure.ChannelMessageEventArgs e) { if (e.Message.Headers.ContainsKey("ProductType")) { return((string)e.Message.Headers["ProductType"] == "Cars" ? 0 : 1); } else { return(base.PickOutputChannel(e)); } }
void ControlChannels_MessageReceivedOnChannel(object sender, Infrastructure.ChannelMessageEventArgs e) { if (e.Message != null && e.Message.Headers.ContainsKey(HeaderName.PressureValue) && e.Message.Headers.ContainsKey(HeaderName.PressureChannel)) { string name = (string)e.Message.Headers[HeaderName.PressureChannel]; if (!mChannelPressure.ContainsKey(name)) { mChannelPressure.Add(name, 0); } mChannelPressure[name] += (double)e.Message.Headers[HeaderName.PressureValue]; } }
protected override int PickOutputChannel(Infrastructure.ChannelMessageEventArgs e) { for (int i = 0; i < OutputChannels.Count; i++) //TODO: not nice { if (!mChannelPressure.ContainsKey(OutputChannels[i].Name)) { mChannelPressure.Add(OutputChannels[i].Name, 0); } } double minPressure = double.MaxValue; string minKey = ""; foreach (string key in mChannelPressure.Keys) { if (mChannelPressure[key] <= minPressure) { minPressure = mChannelPressure[key]; minKey = key; } } mChannelPressure[minKey] += (double)e.Message.Headers[HeaderName.PressureValue]; return(OutputChannels.IndexOf(minKey)); }