public void AddDatabase(ISensorsDatabase database)
 {
     lock (_accessLock)
     {
         _sensorsDatabases.Add(database);
     }
 }
示例#2
0
        private void OpenAllExistingSensorDatabases()
        {
            List <string> databasesList = _environmentDatabase.GetMonitoringDatabases();

            foreach (var databaseName in databasesList)
            {
                GetDatesFromFolderName(databaseName, out DateTime from, out DateTime to);
                if (from != DateTime.MinValue && to != DateTime.MinValue)
                {
                    ISensorsDatabase database = LevelDBManager.GetSensorDatabaseInstance(
                        _databaseSettings.GetPathToMonitoringDatabase(databaseName), from, to);
                    _sensorsDatabases.AddDatabase(database);
                }
            }
        }
        public bool TryGetDatabase(DateTime time, out ISensorsDatabase database)
        {
            long             ticks = time.Ticks;
            ISensorsDatabase correspondingItem;

            lock (_accessLock)
            {
                correspondingItem = _sensorsDatabases.FirstOrDefault(i =>
                                                                     i.DatabaseMinTicks <= ticks && i.DatabaseMaxTicks >= ticks);
            }

            if (correspondingItem == null)
            {
                database = default(ISensorsDatabase);
                return(false);
            }

            database = correspondingItem;
            return(true);
        }
        public ISensorsDatabase GetDatabase(DateTime time)
        {
            long ticks = time.Ticks;

            lock (_accessLock)
            {
                var correspondingItem = _sensorsDatabases.FirstOrDefault(i =>
                                                                         i.DatabaseMinTicks <= ticks && i.DatabaseMaxTicks >= ticks);

                if (correspondingItem != null)
                {
                    return(correspondingItem);
                }

                DateTime         minDateTime     = DateTimeMethods.GetMinDateTime(time);
                DateTime         maxDateTime     = DateTimeMethods.GetMaxDateTime(time);
                string           newDatabaseName = CreateSensorsDatabaseName(minDateTime, maxDateTime);
                ISensorsDatabase newDatabase     = LevelDBManager.GetSensorDatabaseInstance(
                    _databaseSettings.GetPathToMonitoringDatabase(newDatabaseName), minDateTime, maxDateTime);
                _sensorsDatabases.Add(newDatabase);
                Task.Run(() => _environmentDatabase.AddMonitoringDatabaseToList(newDatabaseName));
                return(newDatabase);
            }
        }