Beispiel #1
0
    /// <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);
        }
    }
Beispiel #2
0
    /// <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);
    }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
    /// <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);
            }
        }
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
 public TestPMFrequencyCounter(Ubii.Processing.ProcessingModule specs) : base(specs)
 {
     this.Specs.ProcessingMode = this.Specs.ProcessingMode != null ? this.Specs.ProcessingMode : TestPMFrequencyCounter.specs.ProcessingMode;
 }
Beispiel #7
0
 public ProcessingModule CreateInstance(Ubii.Processing.ProcessingModule specs)
 {
     return(new TestPMFrequencyCounter(specs));
 }
Beispiel #8
0
    /// <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();
    }