mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 23:42:58 +02:00
eitd: general cleanup
This commit is contained in:
@@ -1,6 +1,4 @@
|
|||||||
//
|
//
|
||||||
// $Id: sectionsd.cpp,v 1.305 2009/07/30 12:41:39 seife Exp $
|
|
||||||
//
|
|
||||||
// sectionsd.cpp (network daemon for SI-sections)
|
// sectionsd.cpp (network daemon for SI-sections)
|
||||||
// (dbox-II-project)
|
// (dbox-II-project)
|
||||||
//
|
//
|
||||||
@@ -24,8 +22,6 @@
|
|||||||
// along with this program; if not, write to the Free Software
|
// along with this program; if not, write to the Free Software
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
//
|
//
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
@@ -66,7 +62,6 @@
|
|||||||
|
|
||||||
#include <xmltree/xmlinterface.h>
|
#include <xmltree/xmlinterface.h>
|
||||||
#include <zapit/settings.h>
|
#include <zapit/settings.h>
|
||||||
//#include <zapit/frontend.h>
|
|
||||||
#include <configfile.h>
|
#include <configfile.h>
|
||||||
|
|
||||||
// Daher nehmen wir SmartPointers aus der Boost-Lib (www.boost.org)
|
// Daher nehmen wir SmartPointers aus der Boost-Lib (www.boost.org)
|
||||||
@@ -84,8 +79,6 @@
|
|||||||
#include "SIlanguage.hpp"
|
#include "SIlanguage.hpp"
|
||||||
|
|
||||||
#include "edvbstring.h"
|
#include "edvbstring.h"
|
||||||
//#include "timerdclient.h"
|
|
||||||
//#include "../timermanager.h"
|
|
||||||
|
|
||||||
// 60 Minuten Zyklus...
|
// 60 Minuten Zyklus...
|
||||||
#define TIME_EIT_SCHEDULED_PAUSE 60 * 60
|
#define TIME_EIT_SCHEDULED_PAUSE 60 * 60
|
||||||
@@ -101,46 +94,10 @@
|
|||||||
|
|
||||||
static bool sectionsd_ready = false;
|
static bool sectionsd_ready = false;
|
||||||
static bool reader_ready = true;
|
static bool reader_ready = true;
|
||||||
//#define MAX_EVENTS 6000
|
|
||||||
static unsigned int max_events;
|
static unsigned int max_events;
|
||||||
// sleep 5 minutes
|
|
||||||
//#define HOUSEKEEPING_SLEEP (30 * 60)
|
|
||||||
#define HOUSEKEEPING_SLEEP (5 * 60)
|
|
||||||
// meta housekeeping after XX housekeepings - every 24h -
|
|
||||||
#define META_HOUSEKEEPING (24 * 60 * 60) / HOUSEKEEPING_SLEEP
|
|
||||||
|
|
||||||
// 12h Pause fr SDT
|
#define HOUSEKEEPING_SLEEP (5 * 60) // sleep 5 minutes
|
||||||
//#define TIME_SDT_SCHEDULED_PAUSE 12* 60* 60
|
#define META_HOUSEKEEPING (24 * 60 * 60) / HOUSEKEEPING_SLEEP // meta housekeeping after XX housekeepings - every 24h -
|
||||||
// -- shorter time for pause should result in better behavior (rasc, 2005-05-02)
|
|
||||||
#define TIME_SDT_SCHEDULED_PAUSE 2* 60* 60
|
|
||||||
//#define TIME_SDT_SKIPPING 30
|
|
||||||
//We are very nice here. Start scanning for channels, if the user stays for XX secs on that channel
|
|
||||||
//#define TIME_SDT_BACKOFF 120
|
|
||||||
//Sleeping when TIME_SDT_NODATA seconds no NEW section was received
|
|
||||||
#define TIME_SDT_NONEWDATA 5
|
|
||||||
//How many BATs shall we read per transponder
|
|
||||||
#define MAX_BAT 10
|
|
||||||
//How many other SDTs shall we puzzle per transponder at the same time
|
|
||||||
//#define MAX_CONCURRENT_OTHER_SDT 5
|
|
||||||
//How many other SDTs shall we assume per tranponder
|
|
||||||
//#define MAX_OTHER_SDT 70
|
|
||||||
#define MAX_SDTs 70
|
|
||||||
//How many sections can a table consist off?
|
|
||||||
#define MAX_SECTIONS 0x1f
|
|
||||||
//Okay, since zapit has got nothing do to with scanning - we read it on our own
|
|
||||||
#define NEUTRINO_SCAN_SETTINGS_FILE CONFIGDIR "/scan.conf"
|
|
||||||
|
|
||||||
//Set pause for NIT
|
|
||||||
#define TIME_NIT_SCHEDULED_PAUSE 2* 60* 60
|
|
||||||
//We are very nice here. Start scanning for channels, if the user stays for XX secs on that channel
|
|
||||||
//#define TIME_NIT_BACKOFF 20
|
|
||||||
//Sleeping when TIME_NIT_NODATA seconds no NEW section was received
|
|
||||||
#define TIME_NIT_NONEWDATA 5
|
|
||||||
//How many other NITs shall we puzzle per transponder at the same time
|
|
||||||
//#define MAX_CONCURRENT_OTHER_NIT 5
|
|
||||||
//How many other SDTs shall we assume per tranponder
|
|
||||||
//#define MAX_OTHER_NIT 10
|
|
||||||
#define MAX_NIDs 10
|
|
||||||
|
|
||||||
// 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
|
||||||
@@ -165,20 +122,14 @@ static unsigned int max_events;
|
|||||||
// the maximum length of a section (0x0fff) + header (3)
|
// the maximum length of a section (0x0fff) + header (3)
|
||||||
#define MAX_SECTION_LENGTH (0x0fff + 3)
|
#define MAX_SECTION_LENGTH (0x0fff + 3)
|
||||||
|
|
||||||
// Wieviele Sekunden EPG gecached werden sollen
|
|
||||||
//static long secondsToCache=4*24*60L*60L; // 4 Tage - weniger Prozessorlast?!
|
|
||||||
//static long secondsToCache = 14*24*60L*60L; // 14 Tage - Prozessorlast <3% (rasc)
|
|
||||||
static long secondsToCache;
|
static long secondsToCache;
|
||||||
static long secondsExtendedTextCache;
|
static long secondsExtendedTextCache;
|
||||||
// Ab wann ein Event als alt gilt (in Sekunden)
|
|
||||||
//static long oldEventsAre = 60*60L; // 2h (sometimes want to know something about current/last movie)
|
|
||||||
static long oldEventsAre;
|
static long oldEventsAre;
|
||||||
static int scanning = 1;
|
static int scanning = 1;
|
||||||
|
|
||||||
std::string epg_filter_dir = "/var/tuxbox/config/zapit/epgfilter.xml";
|
std::string epg_filter_dir = "/var/tuxbox/config/zapit/epgfilter.xml";
|
||||||
static bool epg_filter_is_whitelist = false;
|
static bool epg_filter_is_whitelist = false;
|
||||||
static bool epg_filter_except_current_next = false;
|
static bool epg_filter_except_current_next = false;
|
||||||
// static bool bouquet_filter_is_whitelist = false;
|
|
||||||
static bool messaging_zap_detected = false;
|
static bool messaging_zap_detected = false;
|
||||||
|
|
||||||
std::string dvbtime_filter_dir = "/var/tuxbox/config/zapit/dvbtimefilter.xml";
|
std::string dvbtime_filter_dir = "/var/tuxbox/config/zapit/dvbtimefilter.xml";
|
||||||
@@ -209,27 +160,14 @@ static bool channel_is_blacklisted = false;
|
|||||||
// EVENTS...
|
// EVENTS...
|
||||||
|
|
||||||
static CEventServer *eventServer;
|
static CEventServer *eventServer;
|
||||||
//CTimerdClient *timerdClient;
|
|
||||||
//bool timerd = false;
|
|
||||||
|
|
||||||
static pthread_rwlock_t eventsLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge events geschrieben und gelesen wird
|
static pthread_rwlock_t eventsLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge events geschrieben und gelesen wird
|
||||||
static pthread_rwlock_t servicesLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge services geschrieben und gelesen wird
|
static pthread_rwlock_t servicesLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge services geschrieben und gelesen wird
|
||||||
static pthread_rwlock_t transpondersLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge transponders geschrieben und gelesen wird
|
|
||||||
static pthread_rwlock_t bouquetsLock = PTHREAD_RWLOCK_INITIALIZER; // Unsere (fast-)mutex, damit nicht gleichzeitig in die Menge bouquets geschrieben und gelesen wird
|
|
||||||
static pthread_rwlock_t messagingLock = PTHREAD_RWLOCK_INITIALIZER;
|
static pthread_rwlock_t messagingLock = PTHREAD_RWLOCK_INITIALIZER;
|
||||||
|
|
||||||
static pthread_cond_t timeThreadSleepCond = PTHREAD_COND_INITIALIZER;
|
static pthread_cond_t timeThreadSleepCond = PTHREAD_COND_INITIALIZER;
|
||||||
static pthread_mutex_t timeThreadSleepMutex = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t timeThreadSleepMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
// k.A. ob volatile im Kampf gegen Bugs trotz mutex's was bringt,
|
|
||||||
// falsch ist es zumindest nicht
|
|
||||||
/*
|
|
||||||
static DMX dmxEIT(0x12, 0x4f, (0xff- 0x01), 0x50, (0xff- 0x0f), 256);
|
|
||||||
static DMX dmxSDT(0x11, 0x42, 0xff, 0x42, 0xff, 256);
|
|
||||||
*/
|
|
||||||
// Houdini: changed sizes, EIT thread no more receives POLLER, saves some mem in sdt
|
|
||||||
//static DMX dmxEIT(0x12, 256);
|
|
||||||
//static DMX dmxSDT(0x11, 256);
|
|
||||||
/* no matter how big the buffer, we will receive spurious POLLERR's in table 0x60,
|
/* no matter how big the buffer, we will receive spurious POLLERR's in table 0x60,
|
||||||
but those are not a big deal, so let's save some memory */
|
but those are not a big deal, so let's save some memory */
|
||||||
static DMX dmxEIT(0x12, 3000 /*320*/);
|
static DMX dmxEIT(0x12, 3000 /*320*/);
|
||||||
@@ -291,36 +229,6 @@ inline void unlockEvents(void)
|
|||||||
pthread_rwlock_unlock(&eventsLock);
|
pthread_rwlock_unlock(&eventsLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void readLockTransponders(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_rdlock(&transpondersLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void writeLockTransponders(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_wrlock(&transpondersLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void unlockTransponders(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_unlock(&transpondersLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void readLockBouquets(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_rdlock(&bouquetsLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void writeLockBouquets(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_wrlock(&bouquetsLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void unlockBouquets(void)
|
|
||||||
{
|
|
||||||
pthread_rwlock_unlock(&bouquetsLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool timeset = false;
|
bool timeset = false;
|
||||||
bool bTimeCorrect = false;
|
bool bTimeCorrect = false;
|
||||||
pthread_cond_t timeIsSetCond = PTHREAD_COND_INITIALIZER;
|
pthread_cond_t timeIsSetCond = PTHREAD_COND_INITIALIZER;
|
||||||
@@ -1155,16 +1063,6 @@ static void removeDupEvents(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SIservicePtr;
|
|
||||||
// FIXME not needed
|
|
||||||
typedef boost::shared_ptr<class SIservice> SIservicePtr;
|
|
||||||
|
|
||||||
typedef std::map<t_channel_id, SIservicePtr, std::less<t_channel_id> > MySIservicesOrderUniqueKey;
|
|
||||||
static MySIservicesOrderUniqueKey mySIservicesOrderUniqueKey;
|
|
||||||
|
|
||||||
typedef std::map<t_channel_id, SIservicePtr, std::less<t_channel_id> > MySIservicesNVODorderUniqueKey;
|
|
||||||
static MySIservicesNVODorderUniqueKey mySIservicesNVODorderUniqueKey;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* communication with sectionsdclient:
|
* communication with sectionsdclient:
|
||||||
*/
|
*/
|
||||||
@@ -4046,20 +3944,8 @@ static s_cmd_table connectionCommands[sectionsd::numberOfCommands] = {
|
|||||||
{ commandDummy1, "commandPing" }
|
{ commandDummy1, "commandPing" }
|
||||||
};
|
};
|
||||||
|
|
||||||
//static void *connectionThread(void *conn)
|
|
||||||
bool sectionsd_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
bool sectionsd_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
pthread_t threadConnection;
|
|
||||||
rc = pthread_create(&threadConnection, &conn_attrs, connectionThread, client);
|
|
||||||
if(rc)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "[sectionsd] failed to create connection-thread (rc=%d)\n", rc);
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// VERSUCH OHNE CONNECTION-THREAD!
|
|
||||||
// spart die thread-creation-zeit, und die Locks lassen ohnehin nur ein cmd gleichzeitig zu
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dprintf("Connection from UDS\n");
|
dprintf("Connection from UDS\n");
|
||||||
|
Reference in New Issue
Block a user