Added a compile-time option to split any mixed model server into several single ones.

This commit is contained in:
Rolf Ahrenberg 2015-01-13 21:24:31 +02:00
parent 21261f8042
commit bcb11b6257
3 changed files with 35 additions and 1 deletions

View File

@ -14,6 +14,10 @@
#SATIP_XCI = 1
# Split any mixed model server into several single ones
#SATIP_USE_SINGLE_MODEL_SERVERS_ONLY = 1
# Strip debug symbols? Set eg. to /bin/true if not
STRIP = strip
@ -91,6 +95,12 @@ DEFINES += -DXCI
endif
endif
ifdef SATIP_USE_SINGLE_MODEL_SERVERS_ONLY
ifeq ($(SATIP_USE_SINGLE_MODEL_SERVERS_ONLY),1)
DEFINES += -DUSE_SINGLE_MODEL_SERVERS_ONLY
endif
endif
ifneq ($(strip $(GITTAG)),)
DEFINES += -DGITVERSION='"-GIT-$(GITTAG)"'
endif

View File

@ -233,6 +233,23 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char
{
debug1("%s (%s, %s, %s)", __PRETTY_FUNCTION__, addrP, modelP, descP);
cMutexLock MutexLock(&mutexM);
#ifdef USE_SINGLE_MODEL_SERVERS_ONLY
int n = 0;
char *s, *p = (char *)modelP;
char *r = strtok_r(p, ",", &s);
while (r) {
r = skipspace(r);
cString desc = cString::sprintf("%s #%d", descP, n++);
cSatipServer *tmp = new cSatipServer(addrP, r, desc);
if (!serversM.Update(tmp)) {
info("Adding server '%s|%s|%s'", tmp->Address(), tmp->Model(), tmp->Description());
serversM.Add(tmp);
}
else
DELETENULL(tmp);
r = strtok_r(NULL, ",\n", &s);
}
#else
cSatipServer *tmp = new cSatipServer(addrP, modelP, descP);
// Validate against existing servers
if (!serversM.Update(tmp)) {
@ -241,6 +258,7 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char
}
else
DELETENULL(tmp);
#endif
}
int cSatipDiscover::GetServerCount(void)

View File

@ -99,7 +99,13 @@ cSatipServer::~cSatipServer()
int cSatipServer::Compare(const cListObject &listObjectP) const
{
const cSatipServer *s = (const cSatipServer *)&listObjectP;
return strcasecmp(*addressM, *s->addressM);
int result = strcasecmp(*addressM, *s->addressM);
if (!result) {
result = strcasecmp(*modelM, *s->modelM);
if (!result)
result = strcasecmp(*descriptionM, *s->descriptionM);
}
return result;
}
void cSatipServer::Use(bool onOffP)