コード例 #1
0
        private List <ScheduleEntry> GetScheduleEntriesForService(ScheduleEntries entriesInStore, Service service)
        {
            List <ScheduleEntry> entries   = new List <ScheduleEntry>();
            ServiceStartTimeKey  start_key = new ServiceStartTimeKey(service, new DateTime(0));
            long id = service.Id;

            using (StoredObjectsEnumerator <ScheduleEntry> enumerator = entriesInStore.GetStoredObjectsEnumerator())
            {
                if (enumerator.Seek(start_key, SeekType.AfterEQ))
                {
                    do
                    {
                        ScheduleEntry entry = enumerator.Current;
                        if (entry.Service == null)
                        {
                            Util.Trace(TraceLevel.Error, "Schedule entry with no service assignment: {0}", entry);
                            continue;
                        }
                        if (entry.Service.Id != id)
                        {
                            break;
                        }
                        entries.Add(entry);
                    } while (enumerator.MoveNext());
                }
            }
            return(entries);
        }
コード例 #2
0
        private ScheduleEntry FindStartScheduleEntry(StoredObjectsEnumerator <ScheduleEntry> enumerator, ScheduleEntry scheduleEntryToMerge)
        {
            ScheduleEntry result = (ScheduleEntry)FindStartScheduleEntry_.Invoke(
                ThisAsScheduleEntries(), new object[] { enumerator, scheduleEntryToMerge });

            if (result == null)
            {
                Util.Trace(TraceLevel.Error, "FindStartScheduleEntry returned null for ScheduleEntry {0}", scheduleEntryToMerge);
                result = enumerator.Current;
            }
            return(result);
        }
コード例 #3
0
        private ScheduleEntry SmartFindStartScheduleEntry(StoredObjectsEnumerator <ScheduleEntry> enumerator, ScheduleEntry entryToMerge)
        {
            ScheduleEntry       current = null;
            ServiceStartTimeKey key     = new ServiceStartTimeKey(entryToMerge.Service, entryToMerge.StartTime - TimeSpan.FromSeconds(1));

            if (enumerator.Seek(key, SeekType.BeforeEQ))
            {
                current = enumerator.Current;
                if (current.Service == null || current.Service.Id != entryToMerge.Service.Id ||
                    current.EndTime < entryToMerge.StartTime + TimeSpan.FromSeconds(1))
                {
                    current = this.NextScheduleEntryForService(enumerator, entryToMerge.Service.Id);
                }
                return(current);
            }
            enumerator.Reset();
            return(this.NextScheduleEntryForService(enumerator, entryToMerge.Service.Id));
        }
コード例 #4
0
 private ScheduleEntry NextScheduleEntryForService(StoredObjectsEnumerator <ScheduleEntry> enumerator, long serviceId)
 {
     return((ScheduleEntry)NextScheduleEntryForService_.Invoke(ThisAsScheduleEntries(), new object[] { enumerator, serviceId }));
 }
コード例 #5
0
 private ScheduleEntry SmartFindStartScheduleEntry(StoredObjectsEnumerator<ScheduleEntry> enumerator, ScheduleEntry entryToMerge)
 {
     ScheduleEntry current = null;
     ServiceStartTimeKey key = new ServiceStartTimeKey(entryToMerge.Service, entryToMerge.StartTime - TimeSpan.FromSeconds(1));
     if (enumerator.Seek(key, SeekType.BeforeEQ))
     {
         current = enumerator.Current;
         if (current.Service == null || current.Service.Id != entryToMerge.Service.Id ||
             current.EndTime < entryToMerge.StartTime + TimeSpan.FromSeconds(1))
         {
             current = this.NextScheduleEntryForService(enumerator, entryToMerge.Service.Id);
         }
         return current;
     }
     enumerator.Reset();
     return this.NextScheduleEntryForService(enumerator, entryToMerge.Service.Id);
 }
コード例 #6
0
 private ScheduleEntry NextScheduleEntryForService(StoredObjectsEnumerator<ScheduleEntry> enumerator, long serviceId)
 {
     return (ScheduleEntry)NextScheduleEntryForService_.Invoke(ThisAsScheduleEntries(), new object[] { enumerator, serviceId });
 }
コード例 #7
0
 private ScheduleEntry FindStartScheduleEntry(StoredObjectsEnumerator<ScheduleEntry> enumerator, ScheduleEntry scheduleEntryToMerge)
 {
     ScheduleEntry result = (ScheduleEntry)FindStartScheduleEntry_.Invoke(
         ThisAsScheduleEntries(), new object[] { enumerator, scheduleEntryToMerge });
     if (result == null)
     {
         Util.Trace(TraceLevel.Error, "FindStartScheduleEntry returned null for ScheduleEntry {0}", scheduleEntryToMerge);
         result = enumerator.Current;
     }
     return result;
 }