mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 23:42:58 +02:00
eitd/sectionsd.cpp: remove old events also when not scanning,
ie in standby, every 1 hour
This commit is contained in:
@@ -68,7 +68,8 @@ static bool notify_complete = false;
|
|||||||
#define HOUSEKEEPING_SLEEP (5 * 60) // sleep 5 minutes
|
#define HOUSEKEEPING_SLEEP (5 * 60) // sleep 5 minutes
|
||||||
//#define HOUSEKEEPING_SLEEP (30) // FIXME 1 min for testing
|
//#define HOUSEKEEPING_SLEEP (30) // FIXME 1 min for testing
|
||||||
/* period to clean cached sections and force restart sections read */
|
/* period to clean cached sections and force restart sections read */
|
||||||
#define META_HOUSEKEEPING (24 * 60 * 60) / HOUSEKEEPING_SLEEP // meta housekeeping after XX housekeepings - every 24h -
|
#define META_HOUSEKEEPING_COUNT (24 * 60 * 60) / HOUSEKEEPING_SLEEP // meta housekeeping after XX housekeepings - every 24h -
|
||||||
|
#define STANDBY_HOUSEKEEPING_COUNT (60 * 60) / HOUSEKEEPING_SLEEP
|
||||||
|
|
||||||
// Timeout bei tcp/ip connections in ms
|
// Timeout bei tcp/ip connections in ms
|
||||||
#define READ_TIMEOUT_IN_SECONDS 2
|
#define READ_TIMEOUT_IN_SECONDS 2
|
||||||
@@ -611,6 +612,7 @@ static void removeOldEvents(const long seconds)
|
|||||||
time_t zeit = time(NULL);
|
time_t zeit = time(NULL);
|
||||||
|
|
||||||
readLockEvents();
|
readLockEvents();
|
||||||
|
unsigned total_events = mySIeventsOrderUniqueKey.size();
|
||||||
|
|
||||||
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
|
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
|
||||||
|
|
||||||
@@ -633,6 +635,9 @@ static void removeOldEvents(const long seconds)
|
|||||||
for (std::vector<event_id_t>::iterator i = to_delete.begin(); i != to_delete.end(); ++i)
|
for (std::vector<event_id_t>::iterator i = to_delete.begin(); i != to_delete.end(); ++i)
|
||||||
deleteEvent(*i);
|
deleteEvent(*i);
|
||||||
|
|
||||||
|
readLockEvents();
|
||||||
|
printf("[sectionsd] Removed %d old events (%d left).\n", (int)(total_events - mySIeventsOrderUniqueKey.size()), (int)mySIeventsOrderUniqueKey.size());
|
||||||
|
unlockEvents();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2003,14 +2008,14 @@ static void print_meminfo(void)
|
|||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
static void *houseKeepingThread(void *)
|
static void *houseKeepingThread(void *)
|
||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0, scount = 0;
|
||||||
|
|
||||||
dprintf("housekeeping-thread started.\n");
|
dprintf("housekeeping-thread started.\n");
|
||||||
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
|
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
|
||||||
|
|
||||||
while (!sectionsd_stop)
|
while (!sectionsd_stop)
|
||||||
{
|
{
|
||||||
if (count == META_HOUSEKEEPING) {
|
if (count == META_HOUSEKEEPING_COUNT) {
|
||||||
dprintf("meta housekeeping - deleting all transponders, services, bouquets.\n");
|
dprintf("meta housekeeping - deleting all transponders, services, bouquets.\n");
|
||||||
deleteSIexceptEPG();
|
deleteSIexceptEPG();
|
||||||
count = 0;
|
count = 0;
|
||||||
@@ -2021,53 +2026,28 @@ static void *houseKeepingThread(void *)
|
|||||||
while (rc)
|
while (rc)
|
||||||
rc = sleep(rc);
|
rc = sleep(rc);
|
||||||
|
|
||||||
while (!scanning) {
|
if (!scanning) {
|
||||||
sleep(1); // wait for streaming to end...
|
scount++;
|
||||||
if (sectionsd_stop)
|
if (scount < STANDBY_HOUSEKEEPING_COUNT)
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
scount = 0;
|
||||||
|
|
||||||
dprintf("housekeeping.\n");
|
dprintf("housekeeping.\n");
|
||||||
|
|
||||||
// TODO: maybe we need to stop scanning here?...
|
|
||||||
|
|
||||||
readLockEvents();
|
|
||||||
|
|
||||||
unsigned anzEventsAlt = mySIeventsOrderUniqueKey.size();
|
|
||||||
dprintf("before removeoldevents\n");
|
|
||||||
unlockEvents();
|
|
||||||
|
|
||||||
removeOldEvents(oldEventsAre); // alte Events
|
removeOldEvents(oldEventsAre); // alte Events
|
||||||
dprintf("after removeoldevents\n");
|
|
||||||
readLockEvents();
|
|
||||||
printf("[sectionsd] Removed %d old events (%d left).\n", (int)(anzEventsAlt - mySIeventsOrderUniqueKey.size()), (int)mySIeventsOrderUniqueKey.size());
|
|
||||||
if (mySIeventsOrderUniqueKey.size() != anzEventsAlt)
|
|
||||||
{
|
|
||||||
print_meminfo();
|
|
||||||
dprintf("Removed %d old events.\n", (int)(anzEventsAlt - mySIeventsOrderUniqueKey.size()));
|
|
||||||
}
|
|
||||||
anzEventsAlt = mySIeventsOrderUniqueKey.size();
|
|
||||||
unlockEvents();
|
|
||||||
|
|
||||||
readLockEvents();
|
readLockEvents();
|
||||||
if (mySIeventsOrderUniqueKey.size() != anzEventsAlt)
|
|
||||||
{
|
|
||||||
print_meminfo();
|
|
||||||
dprintf("Removed %d waste events.\n", (int)(anzEventsAlt - mySIeventsOrderUniqueKey.size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
dprintf("Number of sptr events (event-ID): %u\n", (unsigned)mySIeventsOrderUniqueKey.size());
|
dprintf("Number of sptr events (event-ID): %u\n", (unsigned)mySIeventsOrderUniqueKey.size());
|
||||||
dprintf("Number of sptr events (service-id, start time, event-id): %u\n", (unsigned)mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.size());
|
dprintf("Number of sptr events (service-id, start time, event-id): %u\n", (unsigned)mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.size());
|
||||||
dprintf("Number of sptr events (end time, service-id, event-id): %u\n", (unsigned)mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.size());
|
dprintf("Number of sptr events (end time, service-id, event-id): %u\n", (unsigned)mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.size());
|
||||||
dprintf("Number of sptr nvod events (event-ID): %u\n", (unsigned)mySIeventsNVODorderUniqueKey.size());
|
dprintf("Number of sptr nvod events (event-ID): %u\n", (unsigned)mySIeventsNVODorderUniqueKey.size());
|
||||||
dprintf("Number of cached meta-services: %u\n", (unsigned)mySIeventUniqueKeysMetaOrderServiceUniqueKey.size());
|
dprintf("Number of cached meta-services: %u\n", (unsigned)mySIeventUniqueKeysMetaOrderServiceUniqueKey.size());
|
||||||
|
|
||||||
unlockEvents();
|
unlockEvents();
|
||||||
|
|
||||||
print_meminfo();
|
print_meminfo();
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
} // for endlos
|
} // for endlos
|
||||||
dprintf("housekeeping-thread ended.\n");
|
dprintf("housekeeping-thread ended.\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user