Exemplo n.º 1
0
        private bool SaveSetting()
        {
            ResponserWrapper w = this.comboBoxResponser.SelectedItem as ResponserWrapper;

            if (w == null)
            {
                return(false);
            }

            if (_cfgList != null)
            {
                foreach (PullChannelConfig cfg in _cfgList)
                {
                    if (cfg == _channelConfig)
                    {
                        continue;
                    }
                    if (cfg.ReceiverEntityID == w.Responser.EntityID)
                    {
                        MessageBox.Show(this, "Responser \"" + w.Responser.Name + "\" is already in the list.",
                                        this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.comboBoxResponser.Focus();
                        return(false);
                    }
                }
            }

            _channelConfig.ReceiverEntityID   = w.Responser.EntityID;
            _channelConfig.ReceiverEntityName = w.Responser.Name;

            _channelConfig.ProtocolType = _protocolTypeCtrl.GetValue();
            switch (_channelConfig.ProtocolType)
            {
            case ProtocolType.LPC:
                ChannelHelper.GenerateLPCChannel(_channelConfig);
                break;

            case ProtocolType.RPC_NamedPipe:
                if (_needToGenerateURI)
                {
                    ChannelHelper.GenerateWCFNamedPipeChannel(_channelConfig);
                }
                break;

            case ProtocolType.RPC_SOAP:
                if (_needToGenerateURI)
                {
                    ChannelHelper.GenerateWCFSoapChannel(_channelConfig);
                }
                break;

            case ProtocolType.RPC_TCP:
                if (_needToGenerateURI)
                {
                    ChannelHelper.GenerateWCFTcpChannel(_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.RequestContract.Type = routType;
            if (routType == RoutingRuleType.MessageType)
            {
                _channelConfig.RequestContract.MessageTypePairs.Clear();
                foreach (MessageTypePair t in this.checkedListBoxMessageType.CheckedItems)
                {
                    _channelConfig.RequestContract.MessageTypePairs.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 requesting message content.",
                                    this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.textBoxXPath.Focus();
                    return(false);
                }

                _channelConfig.RequestContract.MessageTypeList.Clear();
                _channelConfig.RequestContract.ContentCriteria.XPath = xpath;
                _channelConfig.RequestContract.ContentCriteria.XPathPrefixDefinition = this.textBoxPrefix.Text.Trim();
                _channelConfig.RequestContract.ContentCriteria.RegularExpression     = this.textBoxRegExp.Text;
            }

            return(true);
        }
Exemplo n.º 2
0
        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);
        }