Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            SendPool.SendingStarted += SendPool_SendingStarted;
            SendPool.SendingCompleted += SendPool_SendingCompleted;
            SendPool.SendingCancelled += SendPool_SendingCancelled;

            for (int i = 0; i < 10; i++)
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource = "(local)";
                builder.IntegratedSecurity = true;
                builder.InitialCatalog = "IrisData";

                SqlServerDataSource dataSource = new SqlServerDataSource(builder.ConnectionString, "mailing");
                dataSource.Limit = 5000;

                DataSchema schema = new DataSchema();
                var names = new DataSchemaIterator("Names", 2);
                names.AddChild(new DataSchemaIteratorValue("Name", new List<DataSchemaIteratorValueMappedColumn>()
                {
                    new DataSchemaIteratorValueMappedColumn(new Dictionary<DataSchemaIterator, int>()
                    {
                        {names, 0}
                    }, "Name"),
                    new DataSchemaIteratorValueMappedColumn(new Dictionary<DataSchemaIterator, int>()
                    {
                        {names, 1}
                    }, "FirstName")
                }));

                schema.Root.AddChild(names);
                schema.Root.AddChild(new DataSchemaValue("id", "id"));

                TemplateMessage message = new TemplateMessage
                {
                    Subject = "Salut @Model.id",
                    Email = "*****@*****.**",
                    MailFrom = "*****@*****.**",
                    NameFrom = "Thib",
                    HtmlBody = "Hey ça va ?"
                };

                MaillingCommunication com = new MaillingCommunication(dataSource, message, schema);

                com.CompileTemplate();

                SendPool.SendCommunication(com);
            }

            while (true)
            {
                long s = 0;
                foreach (MaillingCommunication c in SendPool.ActiveCommunications)
                    s += c.CurrentSpeed;
                Console.WriteLine("Speed : " + s);
                Thread.Sleep(1000);
            }

            Console.ReadLine();
        }
Ejemplo n.º 2
0
        private static void ParseNodeInternal(XElement element, DataSchemaKey key)
        {
            foreach (XElement el in element.Elements())
            {
                string name = el.Attribute("name").Value;
                switch (el.Name.LocalName)
                {
                    case "value" :
                        string mappedColumn = el.Value;
                        DataSchemaValue v = new DataSchemaValue(name, mappedColumn);
                        ParseNodeInternal(el, v);
                        key.AddChild(v);
                    break;

                    case "container" :
                        DataSchemaKey c = new DataSchemaKey(DataSchemaKeyType.Container, name);
                        ParseNodeInternal(el, c);
                        key.AddChild(c);
                    break;

                    case "iterator" :
                        int max = Int32.Parse(el.Attribute("maxItemCount").Value);
                        DataSchemaIterator i = new DataSchemaIterator(name, max);
                        ParseNodeInternal(el, i);
                        key.AddChild(i);
                    break;

                    case "iteratorValue" :
                        Dictionary<DataSchemaIterator,int> iterators = new Dictionary<DataSchemaIterator,int>();
                        FindIterators(key, iterators);
                        iterators.Reverse();
                        List<DataSchemaIteratorValueMappedColumn> columns = new List<DataSchemaIteratorValueMappedColumn>();
                        string tmpl = el.Value;
                        GenCoulumns(tmpl, iterators, columns, 0);
                        DataSchemaIteratorValue iv = new DataSchemaIteratorValue(name, columns);
                        ParseNodeInternal(el, iv);
                        key.AddChild(iv);
                    break;
                }
            }
        }