Exemple #1
0
        public void SetUp()
        {
            _container = SupportContainer.Reset();
            var rLock = _container.LockManager().CreateLock(GetType());

            _list = new VersionedValueList <String>("abc", 2, "a", 1000, 10000, rLock, 10, true);
        }
Exemple #2
0
 public VariableReader(VariableMetaData variableMetaData, VariableVersionThreadLocal versionThreadLocal, VersionedValueList <Object> versionsLow)
 {
     _variableMetaData   = variableMetaData;
     _versionThreadLocal = versionThreadLocal;
     _versionsLow        = versionsLow;
     _versionsHigh       = null;
 }
Exemple #3
0
        public void AllocateVariableState(String variableName, int agentInstanceId, StatementExtensionSvcContext extensionServicesContext)
        {
            var metaData = _variables.Get(variableName);

            if (metaData == null)
            {
                throw new ArgumentException("Failed to find variable '" + variableName + "'");
            }

            // Check current state - see if the variable exists in the state handler
            var initialState = metaData.VariableStateFactory.InitialState;

            if (_optionalStateHandler != null)
            {
                var priorValue = _optionalStateHandler.GetHasState(
                    variableName,
                    metaData.VariableNumber, agentInstanceId,
                    metaData.VariableType,
                    metaData.EventType, extensionServicesContext);
                if (priorValue.First)
                {
                    initialState = priorValue.Second;
                }
            }

            // create new holder for versions
            var timestamp       = _timeProvider.Time;
            var valuePerVersion = new VersionedValueList <Object>(variableName, _currentVersionNumber, initialState, timestamp, _millisecondLifetimeOldVersions, _readWriteLock.ReadLock, HIGH_WATERMARK_VERSIONS, false);
            var cps             = _variableVersionsPerCP[metaData.VariableNumber];
            var reader          = new VariableReader(metaData, _versionThreadLocal, valuePerVersion);

            cps.Put(agentInstanceId, reader);
        }
Exemple #4
0
        /// <summary>
        /// Rollover includes creating a new
        /// </summary>
        private void RollOver()
        {
            foreach (var entryCP in _variableVersionsPerCP)
            {
                foreach (KeyValuePair <int, VariableReader> entry in entryCP)
                {
                    String name      = entry.Value.VariableMetaData.VariableName;
                    var    timestamp = _timeProvider.Time;

                    // Construct a new collection, forgetting the history
                    var versionsOld  = entry.Value.VersionsLow;
                    var currentValue = versionsOld.CurrentAndPriorValue.CurrentVersion.Value;
                    var versionsNew  = new VersionedValueList <Object>(name, 1, currentValue, timestamp, _millisecondLifetimeOldVersions, _readWriteLock.ReadLock, HIGH_WATERMARK_VERSIONS, false);

                    // Tell the reader to use the high collection for old requests
                    entry.Value.VersionsHigh = versionsOld;
                    entry.Value.VersionsLow  = versionsNew;
                }
            }
        }
Exemple #5
0
        public void SetUp()
        {
            var rLock = LockManager.CreateLock(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            list = new VersionedValueList <String>("abc", 2, "a", 1000, 10000, rLock, 10, true);
        }