/// <summary> /// Creates a PM from given specs and adds it to the dictionary on success /// </summary> /// <param name="specs">PM specs</param> /// <returns>Created PM</returns> public ProcessingModule CreateModule(Ubii.Processing.ProcessingModule specs) { ProcessingModule pm = null; if (pmDatabase.HasEntry(specs.Name)) { Ubii.Processing.ProcessingModule detailedSpecs = pmDatabase.GetEntry(specs.Name).GetSpecifications(); detailedSpecs.Id = specs.Id; detailedSpecs.NodeId = specs.NodeId; detailedSpecs.SessionId = specs.SessionId; pm = pmDatabase.CreateInstance(detailedSpecs); } else { if (specs.OnProcessingStringified == null || specs.OnProcessingStringified == string.Empty) { Debug.Log("ProcessingModuleManager can't create PM " + specs.Name + " based on specs, missing OnProcessing definition."); return(null); } pm = new ProcessingModule(specs); } bool success = AddModule(pm); if (!success) { return(null); } else { pm.OnCreated(); return(pm); } }
/// <summary> /// /// </summary> /// <param name="pmSpecs"></param> /// <param name="sessionID"></param> /// <returns>Processing module matching given specs</returns> public ProcessingModule GetModuleBySpecs(Ubii.Processing.ProcessingModule pmSpecs, string sessionID) { ProcessingModule module = GetModuleByID(pmSpecs.Id); if (module == null) { module = GetModuleByName(pmSpecs.Name, sessionID); } return(module); }
public ProcessingModule CreateInstance(Ubii.Processing.ProcessingModule specs) { try { IProcessingModuleDatabaseEntry entry = GetEntry(specs.Name); return(entry.CreateInstance(specs)); } catch (Exception e) { Debug.LogError(e.ToString()); return(null); } }
/// <summary> /// Stops module and unsubscribes its tokens from the topic data proxy /// </summary> /// <param name="pmSpec">Processing module to stop</param> public void StopModule(Ubii.Processing.ProcessingModule pmSpec) { ProcessingModule pm = processingModules[pmSpec.Id]; pm?.Stop(); List <SubscriptionToken> subs = pmTopicSubscriptions[pmSpec.Id]; if (subs != null) { foreach (SubscriptionToken token in subs) { topicDataProxy.Unsubscribe(token); } } }
private void CreateSpecs() { this.inputTopic = "/" + ubiiNode.GetID() + "/test-sessions/input/vec3"; this.outputTopic = "/" + ubiiNode.GetID() + "/test-sessions/output/vec3"; this.pmSpecs = new Ubii.Processing.ProcessingModule { Name = "Unity3D-Client-TestSessions-PM-01", OnProcessingStringified = "(inputs, outputs, state) => { outputs.outVec3 = inputs.inVec3; }", ProcessingMode = new Ubii.Processing.ProcessingMode { Frequency = new Ubii.Processing.ProcessingMode.Types.Frequency { Hertz = 10 } } }; this.pmSpecs.Inputs.Add(new Ubii.Processing.ModuleIO { InternalName = "inVec3", MessageFormat = "ubii.dataStructure.Vector3" }); this.pmSpecs.Outputs.Add(new Ubii.Processing.ModuleIO { InternalName = "outVec3", MessageFormat = "ubii.dataStructure.Vector3" }); this.pmSpecs.Authors.Add("Sandro Weber"); this.sessionSpecs = new Ubii.Sessions.Session { Name = "Unity3D-Client-TestSessions-Session-01" }; this.sessionSpecs.Authors.Add("Sandro Weber"); this.sessionSpecs.ProcessingModules.Add(this.pmSpecs); Ubii.Sessions.IOMapping ioMapping = new Ubii.Sessions.IOMapping { ProcessingModuleName = this.pmSpecs.Name }; ioMapping.InputMappings.Add(new Ubii.Sessions.TopicInputMapping { InputName = "inVec3", Topic = this.inputTopic }); ioMapping.OutputMappings.Add(new Ubii.Sessions.TopicOutputMapping { OutputName = "outVec3", Topic = this.outputTopic }); this.sessionSpecs.IoMappings.Add(ioMapping); }
public TestPMFrequencyCounter(Ubii.Processing.ProcessingModule specs) : base(specs) { this.Specs.ProcessingMode = this.Specs.ProcessingMode != null ? this.Specs.ProcessingMode : TestPMFrequencyCounter.specs.ProcessingMode; }
public ProcessingModule CreateInstance(Ubii.Processing.ProcessingModule specs) { return(new TestPMFrequencyCounter(specs)); }
/// <summary> /// Starts processing module /// </summary> /// <param name="pmSpec">Processing module to start</param> public void StartModule(Ubii.Processing.ProcessingModule pmSpec) { ProcessingModule pm = processingModules[pmSpec.Id]; pm?.Start(); }