예제 #1
0
        static void Main(string[] args)
        {
            //TODO: validade input

            //processName processURL site routingtype order puppetMasterURL -p parentURL -c childURL -b backupURL
            string processName     = args[0];
            string processURL      = args[1];
            string site            = args[2];
            string routing         = args[3];
            string ordering        = args[4];
            string puppetMasterURL = args[5];
            string loggingLevel    = args[6];
            bool   faultTolerant   = Boolean.Parse(args[7]);

            List <string> childList  = new List <string>();
            List <string> parentList = new List <string>();
            List <string> subList    = new List <string>();
            List <string> backupList = new List <string>();

            for (int i = 8; i < args.Length; i += 2)
            {
                switch (args[i])
                {
                case "-p":
                    parentList.Add(args[i + 1]);
                    break;

                case "-c":
                    childList.Add(args[i + 1]);
                    break;

                case "-s":
                    subList.Add(args[i + 1]);
                    break;

                case "-b":
                    backupList.Add(args[i + 1]);
                    break;
                }
            }

            //initialization of data finished
            Broker b = new Broker(processName, processURL, site, routing, ordering, puppetMasterURL, loggingLevel, faultTolerant);

            foreach (string c in childList)
            {
                b.addChildUrl(c);
            }
            foreach (string p in parentList)
            {
                b.addParentUrl(p);
            }
            foreach (string s in subList)
            {
                b.addSubscriberUrl(s);
            }
            foreach (string backup in backupList)
            {
                b.addBackupUrl(backup);
            }
            b.publishToPuppetMaster();

            // This thread will monitor the received messages queue and pass the messages to the send
            // queue apropriately
            while (true)
            {
                b.processQueue();
                Thread.Sleep(50);
            }
        }