private bool SaveSetting() { PublisherWrapper w = this.comboBoxPublisher.SelectedItem as PublisherWrapper; if (w == null) { return(false); } if (_cfgList != null) { foreach (PushChannelConfig cfg in _cfgList) { if (cfg == _channelConfig) { continue; } if (cfg.SenderEntityID == w.Publisher.EntityID) { MessageBox.Show(this, "Publisher \"" + w.Publisher.Name + "\" is already in the list.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); this.comboBoxPublisher.Focus(); return(false); } } } _channelConfig.SenderEntityID = w.Publisher.EntityID; _channelConfig.SenderEntityName = w.Publisher.Name; _channelConfig.ProtocolType = _protocolTypeCtrl.GetValue(); switch (_channelConfig.ProtocolType) { case ProtocolType.LPC: ChannelHelper.GenerateLPCChannel(_channelConfig); break; case ProtocolType.MSMQ: if (_needToGenerateURI) { ChannelHelper.GenerateMSMQChannel(_channelConfig); } break; default: MessageBox.Show(this, "Following protocol type is not supported by now.\r\n\r\n" + this.comboBoxProtocolType.Text, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); this.comboBoxProtocolType.Focus(); return(false); } RoutingRuleType routType = _routTypeCtrl.GetValue(); _channelConfig.Subscription.Type = routType; if (routType == RoutingRuleType.MessageType) { _channelConfig.Subscription.MessageTypeList.Clear(); foreach (MessageType t in this.checkedListBoxMessageType.CheckedItems) { _channelConfig.Subscription.MessageTypeList.Add(t); } } else if (routType == RoutingRuleType.ContentBased) { string xpath = this.textBoxXPath.Text.Trim(); if (xpath == null || xpath.Length < 1) { MessageBox.Show(this, "Please input the XPath to access the message content.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); this.textBoxXPath.Focus(); return(false); } _channelConfig.Subscription.MessageTypeList.Clear(); _channelConfig.Subscription.ContentCriteria.XPath = xpath; _channelConfig.Subscription.ContentCriteria.XPathPrefixDefinition = this.textBoxPrefix.Text.Trim(); _channelConfig.Subscription.ContentCriteria.RegularExpression = this.textBoxRegExp.Text; } return(true); }
static void AddAndApplyChannel(string[] args) { int count = 6; if (args.Length < count) { Program.Log.Write("Arguement is not enough."); return; } try { string type = args[1]; string entityID = args[2]; string entityName = args[3]; string messageType = args[4]; string protocolType = args[5]; switch (type.ToLowerInvariant()) { case "publisher": { MessageType mt = MessageType.Parse(messageType); if (mt == null) { Program.Log.Write("Message Type can not be parse from: " + messageType); return; } PushChannelConfig c = new PushChannelConfig(); c.ReceiverEntityID = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.EntityID; c.ReceiverEntityName = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.Name; c.ProtocolType = (ProtocolType)Enum.Parse(typeof(ProtocolType), protocolType); c.Subscription.Type = RoutingRuleType.MessageType; c.Subscription.MessageTypeList.Add(mt); c.SenderEntityID = new Guid(entityID); c.SenderEntityName = entityName; switch (c.ProtocolType) { case ProtocolType.LPC: ChannelHelper.GenerateLPCChannel(c); break; case ProtocolType.MSMQ: ChannelHelper.GenerateMSMQChannel(c); break; default: Program.Log.Write("Following protocol type is not supported by now: " + c.ProtocolType.ToString()); return; } EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log); if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument)) { EntityConfigBase cfg = agent.EntityConfig; if (cfg == null) { Program.Log.Write("Cannot read configuration file."); } else { if (cfg.SubscribeConfig == null) { cfg.SubscribeConfig = new SubscribeConfig(); } cfg.SubscribeConfig.Channels.Add(c); if (agent.EntityConfigInstance.SaveConfiguration()) { Program.Log.Write("Write configuration file successfully."); } else { Program.Log.Write("Cannot write configuration file."); } } agent.Uninitialize(); } break; } case "responser": { PullChannelConfig c = new PullChannelConfig(); c.ReceiverEntityID = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.EntityID; c.ReceiverEntityName = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.Name; c.ProtocolType = (ProtocolType)Enum.Parse(typeof(ProtocolType), protocolType); c.SenderEntityID = new Guid(entityID); c.SenderEntityName = entityName; switch (c.ProtocolType) { case ProtocolType.LPC: ChannelHelper.GenerateLPCChannel(c); break; default: Program.Log.Write("Following protocol type is not supported by now: " + c.ProtocolType.ToString()); return; } EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log); if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument)) { EntityConfigBase cfg = agent.EntityConfig; if (cfg == null) { Program.Log.Write("Cannot read configuration file."); } else { if (cfg.RequestConfig == null) { cfg.RequestConfig = new RequestConfig(); } cfg.RequestConfig.Channels.Add(c); if (agent.EntityConfigInstance.SaveConfiguration()) { Program.Log.Write("Write configuration file successfully."); } else { Program.Log.Write("Cannot write configuration file."); } } agent.Uninitialize(); } break; } } } catch (Exception err) { Program.Log.Write(err); } ApplyChannelConfigurations(false); }