Esempio n. 1
0
        internal static IAccessorValue createValueAccessor(IAdsConnection connection, SymbolLoaderSettings settings)
        {
            IAccessorValue        value2       = null;
            AdsValueAccessor      inner        = null;
            IAccessorValueFactory valueFactory = null;

            if (settings.SymbolsLoadMode == SymbolsLoadMode.DynamicTree)
            {
                valueFactory = new DynamicValueFactory(settings.ValueCreation);
                inner        = new AdsValueAccessor(connection, settings.ValueAccessMode, valueFactory, NotificationSettings.Default);
                value2       = new DynamicValueAccessor(inner, valueFactory, settings.ValueCreation);
            }
            else
            {
                valueFactory = new ValueFactory(settings.ValueCreation);
                inner        = new AdsValueAccessor(connection, settings.ValueAccessMode, valueFactory, NotificationSettings.Default);
                value2       = inner;
            }
            IAccessorValueFactory2 factory2 = valueFactory as IAccessorValueFactory2;

            if (valueFactory != null)
            {
                factory2.SetValueAccessor(value2);
            }
            inner.AutomaticReconnection = settings.AutomaticReconnection;
            return(value2);
        }
Esempio n. 2
0
        public DynamicValueAccessor(IAccessorValue inner, IAccessorValueFactory factory, ValueCreationMode mode) : base(factory, ((ValueAccessor)inner).Connection)
        {
            this._mode  = ValueCreationMode.Default;
            this._mode  = mode;
            this._inner = inner;
            IAccessorNotification notification = inner as IAccessorNotification;

            if (notification != null)
            {
                base._notificationSettings = notification.DefaultNotificationSettings;
            }
        }
Esempio n. 3
0
        protected virtual object OnReadValue(int timeout)
        {
            DateTime time;

            if (!this.HasValue)
            {
                throw new CannotAccessVirtualSymbolException(this);
            }
            IAccessorValue      valueAccessor = (IAccessorValue)this.ValueAccessor;
            IAccessorConnection connection    = valueAccessor as IAccessorConnection;

            if ((timeout >= 0) && (connection != null))
            {
                using (new AdsTimeoutSetter(connection.Connection, timeout))
                {
                    return(valueAccessor.ReadValue(this, out time));
                }
            }
            return(valueAccessor.ReadValue(this, out time));
        }
Esempio n. 4
0
        protected virtual void OnWriteValue(object value, int timeout)
        {
            DateTime time;

            if (!this.HasValue)
            {
                throw new CannotAccessVirtualSymbolException(this);
            }
            IAccessorValue      valueAccessor = (IAccessorValue)this.ValueAccessor;
            IAccessorConnection connection    = valueAccessor as IAccessorConnection;

            if ((timeout >= 0) && (connection != null))
            {
                using (new AdsTimeoutSetter(connection.Connection, timeout))
                {
                    valueAccessor.WriteValue(this, value, out time);
                    return;
                }
            }
            valueAccessor.WriteValue(this, value, out time);
        }