mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-02 10:21:04 +02:00
Merge remote-tracking branch 'check/next-cc'
untested, probably needs some buildfixing
Origin commit data
------------------
Commit: 7d87ce9c54
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2013-12-22 (Sun, 22 Dec 2013)
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 (30) // FIXME 1 min for testing
|
||||
/* 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
|
||||
#define READ_TIMEOUT_IN_SECONDS 2
|
||||
@@ -612,6 +613,7 @@ static void removeOldEvents(const long seconds)
|
||||
time_t zeit = time(NULL);
|
||||
|
||||
writeLockEvents();
|
||||
unsigned total_events = mySIeventsOrderUniqueKey.size();
|
||||
|
||||
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
|
||||
|
||||
@@ -633,6 +635,9 @@ static void removeOldEvents(const long seconds)
|
||||
deleteEvent(*i);
|
||||
unlockEvents();
|
||||
|
||||
readLockEvents();
|
||||
xprintf("[sectionsd] Removed %d old events (%d left), zap detected %d.\n", (int)(total_events - mySIeventsOrderUniqueKey.size()), (int)mySIeventsOrderUniqueKey.size(), messaging_zap_detected);
|
||||
unlockEvents();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -854,6 +859,9 @@ static void commandPauseScanning(int connfd, char *data, const unsigned dataLeng
|
||||
#endif
|
||||
#endif
|
||||
scanning = 0;
|
||||
writeLockMessaging();
|
||||
messaging_zap_detected = false;
|
||||
unlockMessaging();
|
||||
}
|
||||
else if (!pause && !scanning)
|
||||
{
|
||||
@@ -877,6 +885,7 @@ static void commandPauseScanning(int connfd, char *data, const unsigned dataLeng
|
||||
writeLockMessaging();
|
||||
messaging_have_CN = 0x00;
|
||||
messaging_got_CN = 0x00;
|
||||
messaging_zap_detected = true;
|
||||
unlockMessaging();
|
||||
|
||||
scanning = 1;
|
||||
@@ -904,6 +913,9 @@ static void commandserviceChanged(int connfd, char *data, const unsigned dataLen
|
||||
if (cmd->dnum) {
|
||||
/* dont wakeup EIT, if we have max events allready */
|
||||
if (max_events == 0 || (mySIeventsOrderUniqueKey.size() < max_events)) {
|
||||
writeLockMessaging();
|
||||
messaging_zap_detected = true;
|
||||
unlockMessaging();
|
||||
threadEIT.setDemux(cmd->dnum);
|
||||
threadEIT.setCurrentService(uniqueServiceKey);
|
||||
}
|
||||
@@ -2015,14 +2027,14 @@ static void print_meminfo(void)
|
||||
//---------------------------------------------------------------------
|
||||
static void *houseKeepingThread(void *)
|
||||
{
|
||||
int count = 0;
|
||||
int count = 0, scount = 0;
|
||||
|
||||
dprintf("housekeeping-thread started.\n");
|
||||
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
|
||||
|
||||
while (!sectionsd_stop)
|
||||
{
|
||||
if (count == META_HOUSEKEEPING) {
|
||||
if (count == META_HOUSEKEEPING_COUNT) {
|
||||
dprintf("meta housekeeping - deleting all transponders, services, bouquets.\n");
|
||||
deleteSIexceptEPG();
|
||||
count = 0;
|
||||
@@ -2037,53 +2049,28 @@ static void *houseKeepingThread(void *)
|
||||
if (sectionsd_stop)
|
||||
break;
|
||||
|
||||
while (!scanning) {
|
||||
sleep(1); // wait for streaming to end...
|
||||
if (sectionsd_stop)
|
||||
break;
|
||||
if (!scanning) {
|
||||
scount++;
|
||||
if (scount < STANDBY_HOUSEKEEPING_COUNT)
|
||||
continue;
|
||||
}
|
||||
scount = 0;
|
||||
|
||||
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
|
||||
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();
|
||||
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 (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 nvod events (event-ID): %u\n", (unsigned)mySIeventsNVODorderUniqueKey.size());
|
||||
dprintf("Number of cached meta-services: %u\n", (unsigned)mySIeventUniqueKeysMetaOrderServiceUniqueKey.size());
|
||||
|
||||
unlockEvents();
|
||||
|
||||
print_meminfo();
|
||||
|
||||
count++;
|
||||
|
||||
} // for endlos
|
||||
dprintf("housekeeping-thread ended.\n");
|
||||
|
||||
|
Reference in New Issue
Block a user