Exemple #1
0
        public ISignalOrPortDescriptor GetSignal(EBinderFlags flags, EPortUsage portUsage, string name, string domainID, object initialValue)
        {
            if (portUsage == EPortUsage.Clock)
            {
                return(FindClock(domainID).Descriptor);
            }
            else if (portUsage == EPortUsage.State)
            {
                throw new NotSupportedException("State signal is not supported by default auto-binder");
            }
            else
            {
                if (flags.HasFlag(EBinderFlags.ExistingSignal))
                {
                    var result = _host.Descriptor.FindSignal(name);
                    if (result != null)
                    {
                        return(null);
                    }
                }

                if (flags.HasFlag(EBinderFlags.CreateNewPort))
                {
                    EFlowDirection dir = EFlowDirection.In;
                    if (flags.HasFlag(EBinderFlags.In))
                    {
                        dir = EFlowDirection.In;
                    }
                    if (flags.HasFlag(EBinderFlags.Out))
                    {
                        dir = EFlowDirection.Out;
                    }
                    if (flags.HasFlag(EBinderFlags.InOut))
                    {
                        dir = EFlowDirection.InOut;
                    }
                    int id   = _id++;
                    var port = _host.Descriptor.CreatePort("agp" + id + "_" + name, dir,
                                                           TypeDescriptor.GetTypeOf(initialValue));
                    return(port);
                }

                if (flags.HasFlag(EBinderFlags.CreateNewSignal))
                {
                    int id     = _id++;
                    var signal = _host.Descriptor.CreateSignalInstance("ags" + id + "_" + name,
                                                                       TypeDescriptor.GetTypeOf(initialValue));
                    return(signal);
                }

                return(null);
            }
        }
 public ISignalOrPortDescriptor GetSignal(EBinderFlags flags, EPortUsage portUsage, string name, string domainID, object initialValue)
 {
     return(_orgBinder.GetSignal(flags, portUsage, name, domainID, initialValue));
 }
 public ISignalOrPortDescriptor GetSignal(EBinderFlags flags, EPortUsage portUsage, string name, string domainID, object initialValue)
 {
     return _orgBinder.GetSignal(flags, portUsage, name, domainID, initialValue);
 }
Exemple #4
0
 /// <summary>
 /// Retrieves an existing or creates a new typed signal/port, depending on specified flags.
 /// </summary>
 /// <typeparam name="T">type of signal data</typeparam>
 /// <param name="binder">binder service</param>
 /// <param name="flags">creation flags</param>
 /// <param name="portUsage">intended usage</param>
 /// <param name="portName">desired name</param>
 /// <param name="domainID">reserved for future extensions</param>
 /// <param name="initialValue">initial data value</param>
 public static Signal <T> GetSignal <T>(this IAutoBinder binder, EBinderFlags flags, EPortUsage portUsage, string portName, string domainID, T initialValue)
 {
     return((Signal <T>)binder.GetSignal(flags, portUsage, portName, domainID, initialValue));
 }