コード例 #1
0
        /// <summary>
        /// Constructor for specifying a Discrete Instance of RBroker
        /// </summary>
        /// <param name="brokerConfig">Discrete Broker Configuration object</param>
        /// <remarks></remarks>
        public DiscreteTaskBroker(DiscreteBrokerConfig brokerConfig)
            : base((RBrokerConfig)brokerConfig)
        {
            m_rClient = RClientFactory.createClient(brokerConfig.deployrEndpoint, brokerConfig.maxConcurrentTaskLimit);

            if (brokerConfig.userCredentials != null)
            {
                m_rUser = m_rClient.login(brokerConfig.userCredentials);
            }
            else
            {
                m_rUser = null;
            }

            /*
             * Prep the base RBrokerEngine.
             */

            initEngine(brokerConfig.maxConcurrentTaskLimit);

            /*
             * Initialize the resourceTokenPool with Integer
             * based resourceTokens.
             */
            for (int i = 0; i < brokerConfig.maxConcurrentTaskLimit; i++)
            {
                m_resourceTokenPool.TryAdd(i);
            }
        }
コード例 #2
0
        public static void Execute()
        {
            try {

                /*
                 * 1. Create RBroker instance using RBrokerFactory.
                 *
                 * This example creates a DiscreteTaskBroker.
                 */

                DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT);
                RBroker rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig);

                /*
                 * 2. Register RTaskListener for asynchronous
                 * notifications on RTask completion.
                 */

                SampleTaskBrokerListener sampleListeners = new SampleTaskBrokerListener(rBroker);

                rBroker.addTaskListener(sampleListeners);
                rBroker.addBrokerListener(sampleListeners);

                /*
                 * 3. Define RTask
                 *
                 * This example creates a DiscreteTask that will
                 * execute an R script, /testuser/tutorial-rbroker/5SecondNoOp.
                 */

                RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT,
                                                        Program.TUTORIAL_REPO_DIRECTORY,
                                                        Program.TUTORIAL_REPO_OWNER,
                                                        "",
                                                        null);

                /*
                 * 4. Submit RTask to RBroker for execution.
                 *
                 * The RTaskToken is returned immediately. You can
                 * use the token to track the progress of RTask
                 * and/or block while waiting for a result.
                 *
                 * However, in this example we are going to allow
                 * the RTaskListener handle the result so
                 * there is nothing further for us to do here after
                 * we submit the RTask.
                 */

                RTaskToken rTaskToken = rBroker.submit(rTask);

                Console.WriteLine("DiscreteProfiling: submitted " + rTask +
                        " for execution on RBroker.");

            }
            catch(Exception tex)
            {
                Console.WriteLine("DiscreteProfiling: ex=" + tex.ToString());
            }
        }
コード例 #3
0
        /// <summary>
        /// Constructor for specifying a Discrete Instance of RBroker
        /// </summary>
        /// <param name="brokerConfig">Discrete Broker Configuration object</param>
        /// <remarks></remarks>
        public DiscreteTaskBroker(DiscreteBrokerConfig brokerConfig)
            : base((RBrokerConfig) brokerConfig)
        {
            m_rClient = RClientFactory.createClient(brokerConfig.deployrEndpoint, brokerConfig.maxConcurrentTaskLimit);

            if(brokerConfig.userCredentials != null)
            {
                m_rUser = m_rClient.login(brokerConfig.userCredentials);
            }
            else
            {
                m_rUser = null;
            }

            /*
             * Prep the base RBrokerEngine.
             */

            initEngine(brokerConfig.maxConcurrentTaskLimit);

            /*
             * Initialize the resourceTokenPool with Integer
             * based resourceTokens.
             */
            for(int i=0; i< brokerConfig.maxConcurrentTaskLimit; i++)
            {
                m_resourceTokenPool.TryAdd(i);
            }
        }
コード例 #4
0
        public static void Execute()
        {
            try
            {

                /*
                 * 1. Create RBroker instance using RBrokerFactory.
                 *
                 * This example creates an anonymous DiscreteTaskBroker.
                 */

                DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT, null, 5);

                RBroker rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig);

                /*
                 * 2. Create an instance of RTaskAppSimulator. It will drive
                 * RTasks through the RBroker.
                 */

                SampleAppSimulation simulation = new SampleAppSimulation(rBroker);

                /*
                 * 3. Launch RTaskAppSimulator simulation.
                 */
                rBroker.simulateApp(simulation);

                /*
                 * 4. Block until all tasks are complete, and shutdown has been called
                 */
                rBroker.waitUntilShutdown();

            }
            catch(Exception tex)
            {
                Console.WriteLine("constructor: ex=" + tex.ToString());
            }
        }
コード例 #5
0
 /// <summary>
 /// Utility function for creating a Discrete Instance of RBroker
 /// </summary>
 /// <param name="brokerConfig">Discrete Broker Configuration object</param>
 /// <returns>DiscreteTaskBroker instance</returns>
 /// <remarks></remarks>
 public static RBroker discreteTaskBroker(DiscreteBrokerConfig brokerConfig)
 {
     return new DiscreteTaskBroker(brokerConfig);
 }
コード例 #6
0
        public static void Execute()
        {
            RBroker rBroker = null;

            try {

                /*
                 * 1. Create RBroker instance using RBrokerFactory.
                 *
                 * This example creates a DiscreteTaskBroker.
                 */

                DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT);
                rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig);

                /*
                 * 2. Define RTask
                 *
                 * This example creates a DiscreteTask that will
                 * execute an R script, /testuser/tutorial-rbroker/5SecondNoOp.
                 */

                RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT,
                                                        Program.TUTORIAL_REPO_DIRECTORY,
                                                        Program.TUTORIAL_REPO_OWNER,
                                                        "",
                                                        null);

                /*
                 * 3. Submit RTask to RBroker for execution.
                 *
                 * Note, unlike an RClient.executeScript call or
                 * an RProject.executeScript call the RBroker.submit
                 * call is non-blocking.
                 *
                 * The RTaskToken is returned immediately. You can
                 * use the token to track the progress of RTask
                 * and/or block while waiting for a result.
                 */

                RTaskToken rTaskToken = rBroker.submit(rTask);

                Console.WriteLine("DiscretePolling: submitted " + rTask + " for execution on RBroker.");

                /*
                 * 4. Demonstrate polling for an RTask result.
                 */

                while(!rTaskToken.isDone())
                {

                    Console.WriteLine("DiscretePolling: polling, " +
                        "result not yet available, sleeping, will try again in 1 second.");
                    try
                    {
                        Thread.Sleep(1000);
                    }
                    catch(Exception iex)
                    {
                        Console.WriteLine("Interupted exception: ex=" + iex.ToString());
                    }
                }

                /*
                 * 5. RTaskToken indicates RTask is done. We can now
                 * retrieve the result.
                 */

                Console.WriteLine("DiscretePolling: polling indicates result is now available.");

                /*
                 * 6. RTask is done, retrieve the RTaskResult.
                 *
                 * The call to getResult() will either return
                 * an RTaskResult or raise an Exception. An Exception
                 * indicates the RTask failed to complete and why.
                 */

                RTaskResult rTaskResult = rTaskToken.getResult();

                Console.WriteLine("DiscretePolling: " + rTask + " completed, result=" + rTaskResult.getTimeOnCall());

            }
            catch(Exception tex)
            {
                Console.WriteLine("DiscretePolling: ex=" + tex.ToString());
            }
            finally
            {
                /*
                 * Final Step: Shutdown RBroker to release
                 * all associated resources, connections.
                 */
                if(rBroker != null)
                {
                    rBroker.shutdown();
                    Console.WriteLine("DiscretePolling: rBroker has been shutdown.");
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// Utility function for creating a Discrete Instance of RBroker
 /// </summary>
 /// <param name="brokerConfig">Discrete Broker Configuration object</param>
 /// <returns>DiscreteTaskBroker instance</returns>
 /// <remarks></remarks>
 public static RBroker discreteTaskBroker(DiscreteBrokerConfig brokerConfig)
 {
     return(new DiscreteTaskBroker(brokerConfig));
 }