/// <summary> /// Implementation of the refresh method on RBroker interface /// /// </summary> /// <param name="config">Pooled Broker Configuration object</param> /// <remarks></remarks> public new void refresh(RBrokerConfig config) { if (!status().isIdle) { throw new Exception("RBroker is not idle, refresh not permitted."); } if (!(config is PooledBrokerConfig)) { throw new Exception("PooledTaskBroker refresh requires PooledBrokerConfig."); } PooledBrokerConfig pooledConfig = (PooledBrokerConfig)config; try { /* * Temporarily disable RBroker to permit * configuration refresh. */ Interlocked.Exchange(ref m_refreshingConfig, 1); ProjectExecutionOptions options = ROptionsTranslator.migrate(pooledConfig.poolCreationOptions); foreach (Object resourceToken in m_resourceTokenPool) { RProject rProject = (RProject)resourceToken; /* * Recycle project to remove all existing * workspace objects and directory files. */ rProject.recycle(); /* * Execute code to cause workspace and directory * preloads and adoptions to take place. */ rProject.executeCode("# Refresh project on PooledTaskBroker.", options); } } catch (Exception rex) { throw new Exception("RBroker refresh failed with unexpected error=" + rex.ToString()); } finally { /* * Re-enabled RBroker following * configuration refresh. */ Interlocked.Exchange(ref m_refreshingConfig, 0); } }
static public void Execute() { Console.WriteLine("AuthProjectExecuteCode - start"); // // 1. Connect to the DeployR Server // RClient rClient = Utility.Connect(); // // 2. Authenticate the user // RUser rUser = Utility.Authenticate(rClient); // // 3. Create a temporary project (R session). // // Optionally: // ProjectCreationOptions options = new ProjectCreationOptions(); // // Populate options as needed, then: // // rProject = rUser.createProject(options); // RProject rProject = rUser.createProject(); Console.WriteLine("AuthProjectExecuteCode: created temporary R session, rProject=" + rProject); // 4. Execute an analytics Web service based on an arbitrary // block of R code. // // Optionally: // ProjectExecutionOptions options = new ProjectExecutionOptions(); // // Populate options as needed, then: // // exec = rProject.executeCode(rCode, options); // String rCode = "demo(graphics)"; exec = rProject.executeCode(rCode); Console.WriteLine("AuthProjectExecuteCode: R code execution completed, exec=" + exec); // // 5. Retrieve code execution results. // console = exec.about().console; plots = exec.about().results; files = exec.about().artifacts; objects = exec.about().workspaceObjects; // // 6. Cleanup // rProject.close(); Utility.Cleanup(rUser, rClient); Console.WriteLine("AuthProjectExecuteCode - end"); }
static public void Execute() { Console.WriteLine("AuthProjectWorkspace - start"); // // 1. Connect to the DeployR Server // RClient rClient = Utility.Connect(); // // 2. Authenticate the user // RUser rUser = Utility.Authenticate(rClient); // // 3. Create a temporary project (R session). // // Optionally: // ProjectCreationOptions options = new ProjectCreationOptions(); // // Populate options as needed, then: // // rProject = rUser.createProject(options); // RProject rProject = rUser.createProject(); Console.WriteLine("AuthProjectWorkspace: created temporary " + "R session, rProject=" + rProject); // // 4. Execute a block of R code to create an object // in the R session's workspace. // String rCode = "x <- T"; exec = rProject.executeCode(rCode); // // 5. Retrieve the object "x" from the R session's workspace. // RData encodedX = rProject.getObject("x"); if (encodedX is RBoolean) { Console.WriteLine("retrieved object x from workspace, x=" + (Boolean)encodedX.Value); } // // 6. Create R object data in the R sesssion's workspace // by pushing DeployR-encoded data from the client application. // // - Prepare sample R object vector data. // - Use RDataFactory to encode the sample R object vector data. // - Push encoded R object into the workspace. // List <Double?> vectorValues = new List <Double?>(); vectorValues.Add(10.0); vectorValues.Add(11.1); vectorValues.Add(12.2); vectorValues.Add(13.3); vectorValues.Add(14.4); RData encodedY = RDataFactory.createNumericVector("y", vectorValues); rProject.pushObject(encodedY); // // 7. Retrieve the DeployR-encoding of the R object // from the R session's workspace. // encodedY = rProject.getObject("y"); if (encodedY is RNumericVector) { List <Double?> numVectorValues = (List <Double?>)encodedY.Value; StringBuilder str = new StringBuilder(); foreach (Double?val in numVectorValues) { str.Append(val + " "); } Console.WriteLine("retrieved object y from workspace, encodedY=" + str.ToString()); } // // 8. Retrieve a list of R objects in the R session's workspace. // // Optionally: // ProjectWorkspaceOptions options = new ProjectWorkspaceOptions(); // // Populate options as needed, then: // // objs = rProject.listObjects(options); // /// objs = rProject.listObjects(); // // 9. Cleanup // rProject.close(); Utility.Cleanup(rUser, rClient); Console.WriteLine("AuthProjectWorkspace - end"); }