mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-01 01:41:12 +02:00
sectionsd: improve deletion of surplus events in addEvent()
If the number of events is bigger than the configured maximum, first
remove old events and only if there are none left start removing the
most future events.
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1543 e54a6e83-5905-42d5-8d5c-058d10e6a962
Origin commit data
------------------
Branch: ni/coolstream
Commit: 418be814a8
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2011-06-13 (Mon, 13 Jun 2011)
------------------
This commit was generated by Migit
This commit is contained in:
@@ -966,18 +966,38 @@ static void addEvent(const SIevent &evt, const time_t zeit, bool cn = false)
|
||||
deleteEvent(e->uniqueKey());
|
||||
readLockEvents();
|
||||
if (mySIeventsOrderUniqueKey.size() >= max_events) {
|
||||
//FIXME: Set Old Events to 0 if limit is reached...
|
||||
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator lastEvent =
|
||||
mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end();
|
||||
lastEvent--;
|
||||
mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
|
||||
|
||||
//preserve events of current channel
|
||||
readLockMessaging();
|
||||
while ((lastEvent != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin()) &&
|
||||
((*lastEvent)->get_channel_id() == messaging_current_servicekey)) {
|
||||
/* if you don't want the new "delete old events first" method but
|
||||
* the old-fashioned "delete future events always", invert this */
|
||||
#if 0
|
||||
bool back = true;
|
||||
#else
|
||||
time_t now = time(NULL);
|
||||
bool back = false;
|
||||
if ((*lastEvent)->times.size() == 1)
|
||||
{
|
||||
if ((*lastEvent)->times.begin()->startzeit + (long)(*lastEvent)->times.begin()->dauer >= now - oldEventsAre)
|
||||
back = true;
|
||||
} else
|
||||
printf("[sectionsd] addevent: times.size != 1, please report\n");
|
||||
#endif
|
||||
if (back)
|
||||
{
|
||||
// fprintf(stderr, "<");
|
||||
lastEvent = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end();
|
||||
lastEvent--;
|
||||
|
||||
//preserve events of current channel
|
||||
readLockMessaging();
|
||||
while ((lastEvent != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin()) &&
|
||||
((*lastEvent)->get_channel_id() == messaging_current_servicekey)) {
|
||||
lastEvent--;
|
||||
}
|
||||
unlockMessaging();
|
||||
}
|
||||
unlockMessaging();
|
||||
// else fprintf(stderr, ">");
|
||||
unlockEvents();
|
||||
deleteEvent((*lastEvent)->uniqueKey());
|
||||
}
|
||||
@@ -1011,7 +1031,6 @@ static void addEvent(const SIevent &evt, const time_t zeit, bool cn = false)
|
||||
// nicht vorhanden -> einfuegen
|
||||
mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.insert(ie->second);
|
||||
mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.insert(ie->second);
|
||||
|
||||
}
|
||||
|
||||
// Und die Zeiten im Event updaten
|
||||
|
Reference in New Issue
Block a user