summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2012-03-31 16:19:44 +0200
committerFrank Schmirler <vdr@schmirler.de>2012-05-12 12:58:42 +0200
commitc3ac5976235a4651c7698b3f68bd6a41c170a7d0 (patch)
tree3cdcf19c221d7006f2d833dced673ee22e75ebe0 /server
parentae634538f86d424024f4b30fff58889d217f3320 (diff)
downloadvdr-plugin-streamdev-c3ac5976235a4651c7698b3f68bd6a41c170a7d0.tar.gz
vdr-plugin-streamdev-c3ac5976235a4651c7698b3f68bd6a41c170a7d0.tar.bz2
Replaced server-side suspend modes with priority based precedence handling
Diffstat (limited to 'server')
-rw-r--r--server/connection.c218
-rw-r--r--server/connection.h4
-rw-r--r--server/connectionHTTP.c6
-rw-r--r--server/connectionIGMP.c6
-rw-r--r--server/connectionVTP.c40
-rw-r--r--server/connectionVTP.h2
-rw-r--r--server/menu.c4
-rw-r--r--server/po/de_DE.po26
-rw-r--r--server/po/es_ES.po26
-rw-r--r--server/po/fi_FI.po26
-rw-r--r--server/po/fr_FR.po26
-rw-r--r--server/po/it_IT.po26
-rw-r--r--server/po/lt_LT.po26
-rw-r--r--server/po/ru_RU.po26
-rw-r--r--server/po/sk_SK.po26
-rw-r--r--server/setup.c46
-rw-r--r--server/setup.h8
17 files changed, 167 insertions, 375 deletions
diff --git a/server/connection.c b/server/connection.c
index b6df6fd..9c7ae31 100644
--- a/server/connection.c
+++ b/server/connection.c
@@ -14,71 +14,6 @@
#include <stdarg.h>
#include <errno.h>
-class cSwitchLive {
-private:
- cMutex mutex;
- cCondWait switched;
- cDevice *device;
- const cChannel *channel;
-public:
- cDevice* Switch(cDevice *Device, const cChannel *Channel);
- void Switch(void);
- cSwitchLive(void);
-};
-
-cSwitchLive::cSwitchLive(): device(NULL), channel(NULL)
-{
-}
-
-cDevice* cSwitchLive::Switch(cDevice *Device, const cChannel *Channel)
-{
- mutex.Lock();
- device = Device;
- channel = Channel;
- mutex.Unlock();
- switched.Wait();
- return device;
-}
-
-void cSwitchLive::Switch(void)
-{
- mutex.Lock();
- if (channel && device) {
-#if APIVERSNUM >= 10726
- cChannel *current = Channels.GetByNumber(cDevice::CurrentChannel());
- cDevice *newdev = cServerConnection::CheckDevice(current, 0, true, device);
- if (!newdev) {
- if (StreamdevServerSetup.SuspendMode == smAlways) {
- Channels.SwitchTo(channel->Number());
- Skins.Message(mtInfo, tr("Streaming active"));
- }
- else {
- esyslog("streamdev: Can't receive channel %d (%s) from device %d. Moving live TV to other device failed (PrimaryDevice=%d, ActualDevice=%d)", channel->Number(), channel->Name(), device->CardIndex(), cDevice::PrimaryDevice()->CardIndex(), cDevice::ActualDevice()->CardIndex());
- device = NULL;
- }
- }
- else {
- newdev->SwitchChannel(current, true);
- }
-#else
- cDevice::SetAvoidDevice(device);
- if (!Channels.SwitchTo(cDevice::CurrentChannel())) {
- if (StreamdevServerSetup.SuspendMode == smAlways) {
- Channels.SwitchTo(channel->Number());
- Skins.Message(mtInfo, tr("Streaming active"));
- }
- else {
- esyslog("streamdev: Can't receive channel %d (%s) from device %d. Moving live TV to other device failed (PrimaryDevice=%d, ActualDevice=%d)", channel->Number(), channel->Name(), device->CardIndex(), cDevice::PrimaryDevice()->CardIndex(), cDevice::ActualDevice()->CardIndex());
- device = NULL;
- }
- }
-#endif
- // make sure we don't come in here next time
- channel = NULL;
- switched.Signal();
- }
- mutex.Unlock();
-}
cServerConnection::cServerConnection(const char *Protocol, int Type):
cTBSocket(Type),
@@ -87,14 +22,13 @@ cServerConnection::cServerConnection(const char *Protocol, int Type):
m_Pending(false),
m_ReadBytes(0),
m_WriteBytes(0),
- m_WriteIndex(0)
+ m_WriteIndex(0),
+ m_SwitchTo(NULL)
{
- m_SwitchLive = new cSwitchLive();
}
cServerConnection::~cServerConnection()
{
- delete m_SwitchLive;
}
const cChannel* cServerConnection::ChannelFromString(const char *String, int *Apid, int *Dpid) {
@@ -264,99 +198,6 @@ bool cServerConnection::Close()
return cTBSocket::Close();
}
-static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
-{
- int MaxNumProvidedSystems = (1 << AvailableBits) - 1;
- int NumProvidedSystems = Device->NumProvidedSystems();
- if (NumProvidedSystems > MaxNumProvidedSystems) {
- esyslog("ERROR: device %d supports %d modulation systems but cDevice::GetDevice() currently only supports %d delivery systems which should be fixed", Device->CardIndex() + 1, NumProvidedSystems, MaxNumProvidedSystems);
- NumProvidedSystems = MaxNumProvidedSystems;
- }
- else if (NumProvidedSystems <= 0) {
- esyslog("ERROR: device %d reported an invalid number (%d) of supported delivery systems - assuming 1", Device->CardIndex() + 1, NumProvidedSystems);
- NumProvidedSystems = 1;
- }
- return NumProvidedSystems;
-}
-
-/*
- * copy of cDevice::GetDevice(...) but without side effects (not detaching receivers)
- */
-cDevice* cServerConnection::CheckDevice(const cChannel *Channel, int Priority, bool LiveView, const cDevice *AvoidDevice)
-{
- //cDevice *AvoidDevice = avoidDevice;
- //avoidDevice = NULL;
- // Collect the current priorities of all CAM slots that can decrypt the channel:
- int NumCamSlots = CamSlots.Count();
- int SlotPriority[NumCamSlots];
- int NumUsableSlots = 0;
- if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
- for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
- SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
- if (CamSlot->ModuleStatus() == msReady) {
- if (CamSlot->ProvidesCa(Channel->Caids())) {
- if (!ChannelCamRelations.CamChecked(Channel->GetChannelID(), CamSlot->SlotNumber())) {
- SlotPriority[CamSlot->Index()] = CamSlot->Priority();
- NumUsableSlots++;
- }
- }
- }
- }
- if (!NumUsableSlots)
- return NULL; // no CAM is able to decrypt this channel
- }
-
- cDevice *d = NULL;
- //cCamSlot *s = NULL;
-
- uint32_t Impact = 0xFFFFFFFF; // we're looking for a device with the least impact
- for (int j = 0; j < NumCamSlots || !NumUsableSlots; j++) {
- if (NumUsableSlots && SlotPriority[j] > MAXPRIORITY)
- continue; // there is no CAM available in this slot
- for (int i = 0; i < cDevice::NumDevices(); i++) {
- cDevice *device = cDevice::GetDevice(i);
- if (device == AvoidDevice)
- continue; // we've been asked to skip this device
- if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device->CardIndex() + 1)
- continue; // a specific card was requested, but not this one
- if (NumUsableSlots && !CamSlots.Get(j)->Assign(device, true))
- continue; // CAM slot can't be used with this device
- bool ndr;
- if (device->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job
- if (NumUsableSlots && device->CamSlot() && device->CamSlot() != CamSlots.Get(j))
- ndr = true; // using a different CAM slot requires detaching receivers
- // Put together an integer number that reflects the "impact" using
- // this device would have on the overall system. Each condition is represented
- // by one bit in the number (or several bits, if the condition is actually
- // a numeric value). The sequence in which the conditions are listed corresponds
- // to their individual severity, where the one listed first will make the most
- // difference, because it results in the most significant bit of the result.
- uint32_t imp = 0;
- imp <<= 1; imp |= LiveView ? !device->IsPrimaryDevice() || ndr : 0; // prefer the primary device for live viewing if we don't need to detach existing receivers
- imp <<= 1; imp |= !device->Receiving() && (device != cTransferControl::ReceiverDevice() || device->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode
- imp <<= 1; imp |= device->Receiving(); // avoid devices that are receiving
- imp <<= 4; imp |= GetClippedNumProvidedSystems(4, device) - 1; // avoid cards which support multiple delivery systems
- imp <<= 1; imp |= device == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
- imp <<= 8; imp |= min(max(device->Priority() + MAXPRIORITY, 0), 0xFF); // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
- imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
- imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers
- imp <<= 1; imp |= NumUsableSlots ? 0 : device->HasCi(); // avoid cards with Common Interface for FTA channels
- imp <<= 1; imp |= device->AvoidRecording(); // avoid SD full featured cards
- imp <<= 1; imp |= NumUsableSlots ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0; // prefer CAMs that are known to decrypt this channel
- imp <<= 1; imp |= device->IsPrimaryDevice(); // avoid the primary device
- if (imp < Impact) {
- // This device has less impact than any previous one, so we take it.
- Impact = imp;
- d = device;
- }
- }
- }
- if (!NumUsableSlots)
- break; // no CAM necessary, so just one loop over the devices
- }
- return d;
-}
-
bool cServerConnection::UsedByLiveTV(cDevice *device)
{
return device == cTransferControl::ReceiverDevice() ||
@@ -367,59 +208,40 @@ cDevice *cServerConnection::GetDevice(const cChannel *Channel, int Priority)
{
// turn off the streams of this connection
Detach();
- // This call may detach receivers of the device it returns
- cDevice *device = cDevice::GetDevice(Channel, Priority, false);
-
- if (device && !device->IsTunedToTransponder(Channel)
- && UsedByLiveTV(device)) {
- // now we would have to switch away live tv...let's see if live tv
- // can be handled by another device
- device = m_SwitchLive->Switch(device, Channel);
- }
+ cDevice *device = cDevice::GetDevice(Channel, Priority, false);
if (!device) {
// can't switch - continue the current stream
Attach();
dsyslog("streamdev: GetDevice failed for channel %d (%s) at priority %d (PrimaryDevice=%d, ActualDevice=%d)", Channel->Number(), Channel->Name(), Priority, cDevice::PrimaryDevice()->CardIndex(), cDevice::ActualDevice()->CardIndex());
}
+ else if (!device->IsTunedToTransponder(Channel) && UsedByLiveTV(device)) {
+ // switched away live TV
+ m_SwitchTo = Channel;
+ }
return device;
}
bool cServerConnection::ProvidesChannel(const cChannel *Channel, int Priority)
{
- cDevice *device = CheckDevice(Channel, Priority, false);
- if (!device || (StreamdevServerSetup.SuspendMode != smAlways
- && !device->IsTunedToTransponder(Channel)
- && UsedByLiveTV(device))) {
- // no device available or the device is in use for live TV and suspend mode doesn't allow us to switch it:
- // maybe a device would be free if THIS connection did turn off its streams?
- Detach();
- device = CheckDevice(Channel, Priority, false);
- Attach();
- if (device && StreamdevServerSetup.SuspendMode != smAlways
- && !device->IsTunedToTransponder(Channel)
- && UsedByLiveTV(device)) {
- // now we would have to switch away live tv...let's see if live tv
- // can be handled by another device
- const cChannel *current = Channels.GetByNumber(cDevice::CurrentChannel());
- cDevice *newdev = current ? CheckDevice(current, 0, true, device) : NULL;
- if (newdev) {
- dsyslog("streamdev: Providing channel %d (%s) at priority %d requires moving live TV to device %d (PrimaryDevice=%d, ActualDevice=%d)", Channel->Number(), Channel->Name(), Priority, newdev->CardIndex(), cDevice::PrimaryDevice()->CardIndex(), cDevice::ActualDevice()->CardIndex());
- }
- else {
- device = NULL;
- dsyslog("streamdev: Not providing channel %d (%s) at priority %d - live TV not suspended", Channel->Number(), Channel->Name(), Priority);
- }
- }
- else if (!device)
- dsyslog("streamdev: No device provides channel %d (%s) at priority %d", Channel->Number(), Channel->Name(), Priority);
- }
+ cDevice *device = cDevice::GetDevice(Channel, Priority, false, true);
+ if (!device)
+ dsyslog("streamdev: No device provides channel %d (%s) at priority %d", Channel->Number(), Channel->Name(), Priority);
return device;
}
void cServerConnection::MainThreadHook()
{
- m_SwitchLive->Switch();
+ if (m_SwitchTo)
+ {
+ // switched away live TV. Try previous channel on other device first
+ if (!Channels.SwitchTo(cDevice::CurrentChannel())) {
+ // switch to streamdev channel otherwise
+ Channels.SwitchTo(m_SwitchTo->Number());
+ Skins.Message(mtInfo, tr("Streaming active"));
+ }
+ m_SwitchTo = NULL;
+ }
}
cString cServerConnection::ToText() const
diff --git a/server/connection.h b/server/connection.h
index 3c6d9a3..0d51da8 100644
--- a/server/connection.h
+++ b/server/connection.h
@@ -15,7 +15,6 @@ typedef std::pair<std::string,std::string> tStrStr;
class cChannel;
class cDevice;
-class cSwitchLive;
/* Basic capabilities of a straight text-based protocol, most functions
virtual to support more complicated protocols */
@@ -34,7 +33,8 @@ private:
uint m_WriteBytes;
uint m_WriteIndex;
- cSwitchLive *m_SwitchLive;
+ /* Set to this connection's current channel when live TV was interrupted */
+ const cChannel *m_SwitchTo;
tStrStrMap m_Headers;
diff --git a/server/connectionHTTP.c b/server/connectionHTTP.c
index 695b6ee..63eb22e 100644
--- a/server/connectionHTTP.c
+++ b/server/connectionHTTP.c
@@ -150,11 +150,11 @@ bool cConnectionHTTP::ProcessRequest(void)
return Respond("%s", true, m_ChannelList->HttpHeader().c_str());
else if (m_Channel != NULL) {
cDevice *device = NULL;
- if (ProvidesChannel(m_Channel, 0))
- device = GetDevice(m_Channel, 0);
+ if (ProvidesChannel(m_Channel, StreamdevServerSetup.HTTPPriority))
+ device = GetDevice(m_Channel, StreamdevServerSetup.HTTPPriority);
if (device != NULL) {
device->SwitchChannel(m_Channel, false);
- m_LiveStreamer = new cStreamdevLiveStreamer(0, this);
+ m_LiveStreamer = new cStreamdevLiveStreamer(StreamdevServerSetup.HTTPPriority, this);
if (m_LiveStreamer->SetChannel(m_Channel, m_StreamType, m_Apid[0] ? m_Apid : NULL, m_Dpid[0] ? m_Dpid : NULL)) {
m_LiveStreamer->SetDevice(device);
if (!SetDSCP())
diff --git a/server/connectionIGMP.c b/server/connectionIGMP.c
index 328fe44..1f8f3d8 100644
--- a/server/connectionIGMP.c
+++ b/server/connectionIGMP.c
@@ -43,11 +43,11 @@ bool cConnectionIGMP::SetChannel(cChannel *Channel, in_addr_t Dst)
void cConnectionIGMP::Welcome()
{
cDevice *device = NULL;
- if (ProvidesChannel(m_Channel, 0))
- device = GetDevice(m_Channel, 0);
+ if (ProvidesChannel(m_Channel, StreamdevServerSetup.IGMPPriority))
+ device = GetDevice(m_Channel, StreamdevServerSetup.IGMPPriority);
if (device != NULL) {
device->SwitchChannel(m_Channel, false);
- m_LiveStreamer = new cStreamdevLiveStreamer(0, this);
+ m_LiveStreamer = new cStreamdevLiveStreamer(StreamdevServerSetup.IGMPPriority, this);
if (m_LiveStreamer->SetChannel(m_Channel, m_StreamType)) {
m_LiveStreamer->SetDevice(device);
if (!SetDSCP())
diff --git a/server/connectionVTP.c b/server/connectionVTP.c
index 9053d0f..930b4fa 100644
--- a/server/connectionVTP.c
+++ b/server/connectionVTP.c
@@ -733,6 +733,7 @@ cConnectionVTP::cConnectionVTP(void):
m_DataSocket(NULL),
m_LastCommand(NULL),
m_StreamType(stTSPIDS),
+ m_ClientVersion(0),
m_FiltersSupport(false),
m_RecPlayer(NULL),
m_TuneChannel(NULL),
@@ -773,7 +774,7 @@ bool cConnectionVTP::Abort(void) const
void cConnectionVTP::Welcome(void)
{
- Respond(220, "Welcome to Video Disk Recorder (VTP)");
+ Respond(220, "VTP/1.0 Welcome to Video Disk Recorder");
}
void cConnectionVTP::Reject(void)
@@ -827,6 +828,7 @@ bool cConnectionVTP::Command(char *Cmd)
}
if (strcasecmp(Cmd, "CAPS") == 0) return CmdCAPS(param);
+ else if (strcasecmp(Cmd, "VERS") == 0) return CmdVERS(param);
else if (strcasecmp(Cmd, "PROV") == 0) return CmdPROV(param);
else if (strcasecmp(Cmd, "PORT") == 0) return CmdPORT(param);
else if (strcasecmp(Cmd, "READ") == 0) return CmdREAD(param);
@@ -900,6 +902,17 @@ bool cConnectionVTP::CmdCAPS(char *Opts)
return Respond(561, "Capability \"%s\" not known", Opts);
}
+bool cConnectionVTP::CmdVERS(char *Opts)
+{
+ unsigned int major, minor;
+ if (sscanf(Opts, " %u.%u", &major, &minor) != 2)
+ return Respond(501, "Use: VERS version (with version in format major.minor)");
+
+ m_ClientVersion = major * 100 + minor;
+ m_FiltersSupport = true;
+ return Respond(220, "Protocol version %u.%u accepted", major, minor);
+}
+
bool cConnectionVTP::CmdPROV(char *Opts)
{
const cChannel *chan;
@@ -914,6 +927,10 @@ bool cConnectionVTP::CmdPROV(char *Opts)
if ((chan = ChannelFromString(Opts)) == NULL)
return Respond(550, "Undefined channel \"%s\"", Opts);
+ // legacy clients use priority 0 even if live TV has priority
+ if (m_ClientVersion == 0 && prio == 0)
+ prio = StreamdevServerSetup.VTPPriority;
+
LOOP_PREVENTION(chan);
if (ProvidesChannel(chan, prio)) {
@@ -921,10 +938,20 @@ bool cConnectionVTP::CmdPROV(char *Opts)
m_TunePriority = prio;
return Respond(220, "Channel available");
}
- else {
- m_TuneChannel = NULL;
- return Respond(560, "Channel not available");
+ // legacy clients didn't lower priority when switching channels,
+ // so get our own receiver temporarily out of the way
+ if (m_ClientVersion == 0) {
+ Detach();
+ bool provided = ProvidesChannel(chan, prio);
+ Attach();
+ if (provided) {
+ m_TuneChannel = chan;
+ m_TunePriority = prio;
+ return Respond(220, "Channel available");
+ }
}
+ m_TuneChannel = NULL;
+ return Respond(560, "Channel not available");
}
bool cConnectionVTP::CmdPORT(char *Opts)
@@ -1286,10 +1313,9 @@ bool cConnectionVTP::CmdQUIT(void)
bool cConnectionVTP::CmdSUSP(void)
{
- if (StreamdevServerSetup.SuspendMode == smAlways || cSuspendCtl::IsActive())
+ if (cSuspendCtl::IsActive())
return Respond(220, "Server is suspended");
- else if (StreamdevServerSetup.SuspendMode == smOffer
- && StreamdevServerSetup.AllowSuspend) {
+ else if (StreamdevServerSetup.AllowSuspend) {
cControl::Launch(new cSuspendCtl);
cControl::Attach();
return Respond(220, "Server is suspended");
diff --git a/server/connectionVTP.h b/server/connectionVTP.h
index 5a5f4b2..bca5ef1 100644
--- a/server/connectionVTP.h
+++ b/server/connectionVTP.h
@@ -28,6 +28,7 @@ private:
char *m_LastCommand;
eStreamType m_StreamType;
+ unsigned int m_ClientVersion;
bool m_FiltersSupport;
bool m_LoopPrevention;
RecPlayer *m_RecPlayer;
@@ -62,6 +63,7 @@ public:
virtual bool Command(char *Cmd);
bool CmdCAPS(char *Opts);
+ bool CmdVERS(char *Opts);
bool CmdPROV(char *Opts);
bool CmdPORT(char *Opts);
bool CmdREAD(char *Opts);
diff --git a/server/menu.c b/server/menu.c
index 28b25f8..d51825e 100644
--- a/server/menu.c
+++ b/server/menu.c
@@ -24,7 +24,7 @@ cStreamdevServerMenu::~cStreamdevServerMenu() {
}
void cStreamdevServerMenu::SetHelpKeys() {
- SetHelp(Count() ? tr("Disconnect") : NULL, NULL, NULL, StreamdevServerSetup.SuspendMode == smOffer ? tr("Suspend") : NULL);
+ SetHelp(Count() ? tr("Disconnect") : NULL, NULL, NULL, tr("Suspend"));
}
eOSState cStreamdevServerMenu::Disconnect() {
@@ -47,7 +47,7 @@ eOSState cStreamdevServerMenu::Disconnect() {
}
eOSState cStreamdevServerMenu::Suspend() {
- if (StreamdevServerSetup.SuspendMode == smOffer && !cSuspendCtl::IsActive()) {
+ if (!cSuspendCtl::IsActive()) {
cControl::Launch(new cSuspendCtl);
return osBack;
}
diff --git a/server/po/de_DE.po b/server/po/de_DE.po
index ccc8a7a..37fa078 100644
--- a/server/po/de_DE.po
+++ b/server/po/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: Frank Schmirler <vdrdev@schmirler.de>\n"
"Language-Team: German <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr "Trennen"
msgid "Suspend"
msgstr "Pausieren"
-msgid "Offer suspend mode"
-msgstr "Pausieren anbieten"
-
-msgid "Always suspended"
-msgstr "Immer pausiert"
-
-msgid "Never suspended"
-msgstr "Nie pausiert"
-
msgid "Common Settings"
msgstr "Allgemeines"
@@ -49,12 +40,6 @@ msgstr "Hauptmeneintrag verstecken"
msgid "Maximum Number of Clients"
msgstr "Maximalanzahl an Clients"
-msgid "Suspend behaviour"
-msgstr "Pausierverhalten"
-
-msgid "Client may suspend"
-msgstr "Client darf pausieren"
-
msgid "VDR-to-VDR Server"
msgstr "VDR-zu-VDR Server"
@@ -67,6 +52,12 @@ msgstr "Port des VDR-zu-VDR Servers"
msgid "Bind to IP"
msgstr "Binde an IP"
+msgid "Legacy Client Priority"
+msgstr "Prioritt fr alte Clients"
+
+msgid "Client may suspend"
+msgstr "Client darf pausieren"
+
msgid "Loop Prevention"
msgstr "Schleifen verhindern"
@@ -79,6 +70,9 @@ msgstr "HTTP Server starten"
msgid "HTTP Server Port"
msgstr "Port des HTTP Servers"
+msgid "Priority"
+msgstr "Prioritt"
+
msgid "HTTP Streamtype"
msgstr "HTTP Streamtyp"
diff --git a/server/po/es_ES.po b/server/po/es_ES.po
index 94edc70..28842c6 100644
--- a/server/po/es_ES.po
+++ b/server/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2010-06-19 03:58+0100\n"
"Last-Translator: Javier Bradineras <jbradi@hotmail.com>\n"
"Language-Team: Spanish <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr ""
msgid "Suspend"
msgstr "Suspender"
-msgid "Offer suspend mode"
-msgstr "Ofrecer modo de suspensin"
-
-msgid "Always suspended"
-msgstr "Siempre suspendido"
-
-msgid "Never suspended"
-msgstr "Nunca suspendido"
-
msgid "Common Settings"
msgstr "Configuracin comn"
@@ -49,12 +40,6 @@ msgstr ""
msgid "Maximum Number of Clients"
msgstr "Numero mximo de clientes"
-msgid "Suspend behaviour"
-msgstr "Comportamiento de la suspensin"
-
-msgid "Client may suspend"
-msgstr "Permitir suspender al cliente"
-
msgid "VDR-to-VDR Server"
msgstr "Servidor VDR-a-VDR"
@@ -67,6 +52,12 @@ msgstr "Puerto del Servidor VDR-a-VDR"
msgid "Bind to IP"
msgstr "IP asociada"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Permitir suspender al cliente"
+
msgid "Loop Prevention"
msgstr ""
@@ -79,6 +70,9 @@ msgstr "Iniciar Servidor HTTP"
msgid "HTTP Server Port"
msgstr "Puerto del Servidor HTTP"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "Tipo de flujo HTTP"
diff --git a/server/po/fi_FI.po b/server/po/fi_FI.po
index 0daabaf..97fd47c 100644
--- a/server/po/fi_FI.po
+++ b/server/po/fi_FI.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: Rolf Ahrenberg\n"
"Language-Team: Finnish <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr "Katkaise"
msgid "Suspend"
msgstr "Pysäytä"
-msgid "Offer suspend mode"
-msgstr "tyrkytä"
-
-msgid "Always suspended"
-msgstr "aina"
-
-msgid "Never suspended"
-msgstr "ei koskaan"
-
msgid "Common Settings"
msgstr "Yleiset asetukset"
@@ -49,12 +40,6 @@ msgstr "Piilota valinta päävalikosta"
msgid "Maximum Number of Clients"
msgstr "Suurin sallittu asiakkaiden määrä"
-msgid "Suspend behaviour"
-msgstr "Pysäytystoiminto"
-
-msgid "Client may suspend"
-msgstr "Asiakas saa pysäyttää palvelimen"
-
msgid "VDR-to-VDR Server"
msgstr "VDR-palvelin"
@@ -67,6 +52,12 @@ msgstr "VDR-palvelimen portti"
msgid "Bind to IP"
msgstr "Sido osoitteeseen"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Asiakas saa pysäyttää palvelimen"
+
msgid "Loop Prevention"
msgstr "Estä asiakaslaitesilmukat"
@@ -79,6 +70,9 @@ msgstr "Käynnistä HTTP-palvelin"
msgid "HTTP Server Port"
msgstr "HTTP-palvelimen portti"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "HTTP-lähetysmuoto"
diff --git a/server/po/fr_FR.po b/server/po/fr_FR.po
index cb0bd08..7d9128b 100644
--- a/server/po/fr_FR.po
+++ b/server/po/fr_FR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: micky979 <micky979@free.fr>\n"
"Language-Team: French <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr ""
msgid "Suspend"
msgstr "Suspendre"
-msgid "Offer suspend mode"
-msgstr "Offrir le mode suspendre"
-
-msgid "Always suspended"
-msgstr "Toujours suspendre"
-
-msgid "Never suspended"
-msgstr "Jamais suspendre"
-
msgid "Common Settings"
msgstr "Paramtres communs"
@@ -49,12 +40,6 @@ msgstr ""
msgid "Maximum Number of Clients"
msgstr "Nombre maximun de clients"
-msgid "Suspend behaviour"
-msgstr "Suspendre"
-
-msgid "Client may suspend"
-msgstr "Le client peut suspendre"
-
msgid "VDR-to-VDR Server"
msgstr "VDR-to-VDR Serveur"
@@ -67,6 +52,12 @@ msgstr "Port du serveur VDR-to-VDR"
msgid "Bind to IP"
msgstr "Attacher aux IP"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Le client peut suspendre"
+
msgid "Loop Prevention"
msgstr ""
@@ -79,6 +70,9 @@ msgstr "Dmarrer le serveur HTTP"
msgid "HTTP Server Port"
msgstr "Port du serveur HTTP"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "Type de Streaming HTTP"
diff --git a/server/po/it_IT.po b/server/po/it_IT.po
index 49dea65..cb00f29 100644
--- a/server/po/it_IT.po
+++ b/server/po/it_IT.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2010-06-19 03:58+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: Italian <vdr@linuxtv.org>\n"
@@ -33,15 +33,6 @@ msgstr ""
msgid "Suspend"
msgstr "Sospendi"
-msgid "Offer suspend mode"
-msgstr "Offri mod. sospensione"
-
-msgid "Always suspended"
-msgstr "Sempre sospeso"
-
-msgid "Never suspended"
-msgstr "Mai sospeso"
-
msgid "Common Settings"
msgstr "Impostazioni comuni"
@@ -51,12 +42,6 @@ msgstr "Nascondi voce menu principale"
msgid "Maximum Number of Clients"
msgstr "Numero massimo di Client"
-msgid "Suspend behaviour"
-msgstr "Tipo sospensione"
-
-msgid "Client may suspend"
-msgstr "Permetti sospensione al Client"
-
msgid "VDR-to-VDR Server"
msgstr "Server VDR-a-VDR"
@@ -69,6 +54,12 @@ msgstr "Porta Server VDR-a-VDR"
msgid "Bind to IP"
msgstr "IP associati"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Permetti sospensione al Client"
+
msgid "Loop Prevention"
msgstr ""
@@ -81,6 +72,9 @@ msgstr "Avvia Server HTTP"
msgid "HTTP Server Port"
msgstr "Porta Server HTTP"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "Tipo flusso HTTP"
diff --git a/server/po/lt_LT.po b/server/po/lt_LT.po
index c2ef086..1af7c75 100644
--- a/server/po/lt_LT.po
+++ b/server/po/lt_LT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2009-11-26 21:57+0200\n"
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr ""
msgid "Suspend"
msgstr "Pristabdyti"
-msgid "Offer suspend mode"
-msgstr "Klausti dėl sustabdymo"
-
-msgid "Always suspended"
-msgstr "Visada stabdyti"
-
-msgid "Never suspended"
-msgstr "Niekada nestabdyti"
-
msgid "Common Settings"
msgstr "Bendri nustatymai"
@@ -49,12 +40,6 @@ msgstr ""
msgid "Maximum Number of Clients"
msgstr "Maksimalus klientų skaičius"
-msgid "Suspend behaviour"
-msgstr "Pristabdyti veikimą"
-
-msgid "Client may suspend"
-msgstr "Klientas gali pristabdyti"
-
msgid "VDR-to-VDR Server"
msgstr "VDR-su-VDR Serveris"
@@ -67,6 +52,12 @@ msgstr "VDR-su-VDR Serverio portas"
msgid "Bind to IP"
msgstr "Pririšti IP"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Klientas gali pristabdyti"
+
msgid "Loop Prevention"
msgstr ""
@@ -79,6 +70,9 @@ msgstr "Paleisti HTTP serverį"
msgid "HTTP Server Port"
msgstr "HTTP serverio portas"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "HTTP transliavimo tipas"
diff --git a/server/po/ru_RU.po b/server/po/ru_RU.po
index 3e277e8..3fdf5c7 100644
--- a/server/po/ru_RU.po
+++ b/server/po/ru_RU.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2008-06-26 15:36+0100\n"
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
"Language-Team: Russian <vdr@linuxtv.org>\n"
@@ -31,15 +31,6 @@ msgstr ""
msgid "Suspend"
msgstr ""
-msgid "Offer suspend mode"
-msgstr " "
-
-msgid "Always suspended"
-msgstr " "
-
-msgid "Never suspended"
-msgstr " "
-
msgid "Common Settings"
msgstr ""
@@ -49,12 +40,6 @@ msgstr ""
msgid "Maximum Number of Clients"
msgstr ". "
-msgid "Suspend behaviour"
-msgstr " "
-
-msgid "Client may suspend"
-msgstr " "
-
msgid "VDR-to-VDR Server"
msgstr "VDR-to-VDR "
@@ -67,6 +52,12 @@ msgstr "VDR-to-VDR "
msgid "Bind to IP"
msgstr " IP"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr " "
+
msgid "Loop Prevention"
msgstr ""
@@ -79,6 +70,9 @@ msgstr " HTTP "
msgid "HTTP Server Port"
msgstr "HTTP "
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr " HTTP "
diff --git a/server/po/sk_SK.po b/server/po/sk_SK.po
index 431a876..8c2a152 100644
--- a/server/po/sk_SK.po
+++ b/server/po/sk_SK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev_SK\n"
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2011-12-11 11:25+0100\n"
+"POT-Creation-Date: 2012-03-31 15:06+0200\n"
"PO-Revision-Date: 2011-12-11 11:25+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: Slovak <hrala.milan@gmail.com>\n"
@@ -33,15 +33,6 @@ msgstr ""
msgid "Suspend"
msgstr "Pozastavenie"
-msgid "Offer suspend mode"
-msgstr "Vber remu pozastavenia"
-
-msgid "Always suspended"
-msgstr "Vdy pozastavi"
-
-msgid "Never suspended"
-msgstr "Nikdy nepozastavi"
-
msgid "Common Settings"
msgstr "Veobecn nastavenia"
@@ -51,12 +42,6 @@ msgstr "Schova v hlavnom menu"
msgid "Maximum Number of Clients"
msgstr "Maximly poet klientov"
-msgid "Suspend behaviour"
-msgstr "Sprvanie preruenia"
-
-msgid "Client may suspend"
-msgstr "Klient me pozastavi"
-
msgid "VDR-to-VDR Server"
msgstr "VDR-do-VDR server"
@@ -69,6 +54,12 @@ msgstr "Port serveru pre VDR-do-VDR"
msgid "Bind to IP"
msgstr "viaza na IP"
+msgid "Legacy Client Priority"
+msgstr ""
+
+msgid "Client may suspend"
+msgstr "Klient me pozastavi"
+
msgid "Loop Prevention"
msgstr ""
@@ -81,6 +72,9 @@ msgstr "Spusti HTTP Server"
msgid "HTTP Server Port"
msgstr "Port serveru HTTP"
+msgid "Priority"
+msgstr ""
+
msgid "HTTP Streamtype"
msgstr "typ prdu HTTP"
diff --git a/server/setup.c b/server/setup.c
index 381b8d8..862c917 100644
--- a/server/setup.c
+++ b/server/setup.c
@@ -14,14 +14,16 @@ cStreamdevServerSetup::cStreamdevServerSetup(void) {
MaxClients = 5;
StartVTPServer = true;
VTPServerPort = 2004;
+ VTPPriority = 0;
LoopPrevention = false;
StartHTTPServer = true;
HTTPServerPort = 3000;
+ HTTPPriority = 0;
HTTPStreamType = stTS;
StartIGMPServer = false;
IGMPClientPort = 1234;
+ IGMPPriority = 0;
IGMPStreamType = stTS;
- SuspendMode = smAlways;
AllowSuspend = false;
strcpy(VTPBindIP, "0.0.0.0");
strcpy(HTTPBindIP, "0.0.0.0");
@@ -33,17 +35,19 @@ bool cStreamdevServerSetup::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "MaxClients") == 0) MaxClients = atoi(Value);
else if (strcmp(Name, "StartServer") == 0) StartVTPServer = atoi(Value);
else if (strcmp(Name, "ServerPort") == 0) VTPServerPort = atoi(Value);
+ else if (strcmp(Name, "VTPPriority") == 0) VTPPriority = atoi(Value);
else if (strcmp(Name, "VTPBindIP") == 0) strcpy(VTPBindIP, Value);
else if (strcmp(Name, "LoopPrevention") == 0) LoopPrevention = atoi(Value);
else if (strcmp(Name, "StartHTTPServer") == 0) StartHTTPServer = atoi(Value);
else if (strcmp(Name, "HTTPServerPort") == 0) HTTPServerPort = atoi(Value);
+ else if (strcmp(Name, "HTTPPriority") == 0) HTTPPriority = atoi(Value);
else if (strcmp(Name, "HTTPStreamType") == 0) HTTPStreamType = atoi(Value);
else if (strcmp(Name, "HTTPBindIP") == 0) strcpy(HTTPBindIP, Value);
else if (strcmp(Name, "StartIGMPServer") == 0) StartIGMPServer = atoi(Value);
else if (strcmp(Name, "IGMPClientPort") == 0) IGMPClientPort = atoi(Value);
+ else if (strcmp(Name, "IGMPPriority") == 0) IGMPPriority = atoi(Value);
else if (strcmp(Name, "IGMPStreamType") == 0) IGMPStreamType = atoi(Value);
else if (strcmp(Name, "IGMPBindIP") == 0) strcpy(IGMPBindIP, Value);
- else if (strcmp(Name, "SuspendMode") == 0) SuspendMode = atoi(Value);
else if (strcmp(Name, "AllowSuspend") == 0) AllowSuspend = atoi(Value);
else return false;
return true;
@@ -57,12 +61,6 @@ const char* cStreamdevServerMenuSetupPage::StreamTypes[st_Count - 1] = {
"EXT"
};
-const char* cStreamdevServerMenuSetupPage::SuspendModes[sm_Count] = {
- trNOOP("Offer suspend mode"),
- trNOOP("Always suspended"),
- trNOOP("Never suspended")
-};
-
cStreamdevServerMenuSetupPage::cStreamdevServerMenuSetupPage(void) {
m_NewSetup = StreamdevServerSetup;
@@ -73,37 +71,35 @@ cStreamdevServerMenuSetupPage::~cStreamdevServerMenuSetupPage() {
}
void cStreamdevServerMenuSetupPage::Set(void) {
- static const char* modes[sm_Count];
- for (int i = 0; i < sm_Count; i++)
- modes[i] = tr(SuspendModes[i]);
-
int current = Current();
Clear();
AddCategory (tr("Common Settings"));
Add(new cMenuEditBoolItem(tr("Hide Mainmenu Entry"), &m_NewSetup.HideMenuEntry));
Add(new cMenuEditIntItem (tr("Maximum Number of Clients"), &m_NewSetup.MaxClients, 0, 100));
- Add(new cMenuEditStraItem(tr("Suspend behaviour"), &m_NewSetup.SuspendMode, sm_Count, modes));
- if (m_NewSetup.SuspendMode == smOffer)
- Add(new cMenuEditBoolItem(tr("Client may suspend"), &m_NewSetup.AllowSuspend));
AddCategory (tr("VDR-to-VDR Server"));
Add(new cMenuEditBoolItem(tr("Start VDR-to-VDR Server"), &m_NewSetup.StartVTPServer));
Add(new cMenuEditIntItem (tr("VDR-to-VDR Server Port"), &m_NewSetup.VTPServerPort, 0, 65535));
Add(new cMenuEditIpItem (tr("Bind to IP"), m_NewSetup.VTPBindIP));
+ Add(new cMenuEditIntItem (tr("Legacy Client Priority"), &m_NewSetup.VTPPriority, MINPRIORITY, MAXPRIORITY));
+ Add(new cMenuEditBoolItem(tr("Client may suspend"), &m_NewSetup.AllowSuspend));
if (cPluginManager::CallFirstService(LOOP_PREVENTION_SERVICE))
Add(new cMenuEditBoolItem(tr("Loop Prevention"), &m_NewSetup.LoopPrevention));
AddCategory (tr("HTTP Server"));
Add(new cMenuEditBoolItem(tr("Start HTTP Server"), &m_NewSetup.StartHTTPServer));
Add(new cMenuEditIntItem (tr("HTTP Server Port"), &m_NewSetup.HTTPServerPort, 0, 65535));
- Add(new cMenuEditStraItem(tr("HTTP Streamtype"), &m_NewSetup.HTTPStreamType, st_Count - 1, StreamTypes));
Add(new cMenuEditIpItem (tr("Bind to IP"), m_NewSetup.HTTPBindIP));
+ Add(new cMenuEditIntItem (tr("Priority"), &m_NewSetup.HTTPPriority, MINPRIORITY, MAXPRIORITY));
+ Add(new cMenuEditStraItem(tr("HTTP Streamtype"), &m_NewSetup.HTTPStreamType, st_Count - 1, StreamTypes));
+
AddCategory (tr("Multicast Streaming Server"));
Add(new cMenuEditBoolItem(tr("Start IGMP Server"), &m_NewSetup.StartIGMPServer));
Add(new cMenuEditIntItem (tr("Multicast Client Port"), &m_NewSetup.IGMPClientPort, 0, 65535));
- Add(new cMenuEditStraItem(tr("Multicast Streamtype"), &m_NewSetup.IGMPStreamType, st_Count - 1, StreamTypes));
Add(new cMenuEditIpItem (tr("Bind to IP"), m_NewSetup.IGMPBindIP));
+ Add(new cMenuEditIntItem (tr("Priority"), &m_NewSetup.IGMPPriority, MINPRIORITY, MAXPRIORITY));
+ Add(new cMenuEditStraItem(tr("Multicast Streamtype"), &m_NewSetup.IGMPStreamType, st_Count - 1, StreamTypes));
SetCurrent(Get(current));
Display();
}
@@ -138,16 +134,18 @@ void cStreamdevServerMenuSetupPage::Store(void) {
SetupStore("StartServer", m_NewSetup.StartVTPServer);
SetupStore("ServerPort", m_NewSetup.VTPServerPort);
SetupStore("VTPBindIP", m_NewSetup.VTPBindIP);
+ SetupStore("VTPPriority", m_NewSetup.VTPPriority);
SetupStore("LoopPrevention", m_NewSetup.LoopPrevention);
SetupStore("StartHTTPServer", m_NewSetup.StartHTTPServer);
SetupStore("HTTPServerPort", m_NewSetup.HTTPServerPort);
- SetupStore("HTTPStreamType", m_NewSetup.HTTPStreamType);
SetupStore("HTTPBindIP", m_NewSetup.HTTPBindIP);
+ SetupStore("HTTPPriority", m_NewSetup.HTTPPriority);
+ SetupStore("HTTPStreamType", m_NewSetup.HTTPStreamType);
SetupStore("StartIGMPServer", m_NewSetup.StartIGMPServer);
SetupStore("IGMPClientPort", m_NewSetup.IGMPClientPort);
- SetupStore("IGMPStreamType", m_NewSetup.IGMPStreamType);
SetupStore("IGMPBindIP", m_NewSetup.IGMPBindIP);
- SetupStore("SuspendMode", m_NewSetup.SuspendMode);
+ SetupStore("IGMPPriority", m_NewSetup.IGMPPriority);
+ SetupStore("IGMPStreamType", m_NewSetup.IGMPStreamType);
SetupStore("AllowSuspend", m_NewSetup.AllowSuspend);
StreamdevServerSetup = m_NewSetup;
@@ -155,11 +153,3 @@ void cStreamdevServerMenuSetupPage::Store(void) {
if (restart)
cStreamdevServer::Initialize();
}
-
-eOSState cStreamdevServerMenuSetupPage::ProcessKey(eKeys Key) {
- int oldMode = m_NewSetup.SuspendMode;
- eOSState state = cMenuSetupPage::ProcessKey(Key);
- if (oldMode != m_NewSetup.SuspendMode)
- Set();
- return state;
-}
diff --git a/server/setup.h b/server/setup.h
index 4b5eb50..aa66378 100644
--- a/server/setup.h
+++ b/server/setup.h
@@ -17,17 +17,19 @@ struct cStreamdevServerSetup {
int StartVTPServer;
int VTPServerPort;
char VTPBindIP[20];
+ int VTPPriority;
+ int AllowSuspend;
int LoopPrevention;
int StartHTTPServer;
int HTTPServerPort;
+ int HTTPPriority;
int HTTPStreamType;
char HTTPBindIP[20];
int StartIGMPServer;
int IGMPClientPort;
+ int IGMPPriority;
int IGMPStreamType;
char IGMPBindIP[20];
- int SuspendMode;
- int AllowSuspend;
};
extern cStreamdevServerSetup StreamdevServerSetup;
@@ -35,14 +37,12 @@ extern cStreamdevServerSetup StreamdevServerSetup;
class cStreamdevServerMenuSetupPage: public cMenuSetupPage {
private:
static const char* StreamTypes[];
- static const char* SuspendModes[];
cStreamdevServerSetup m_NewSetup;
void AddCategory(const char *Title);
void Set();
protected:
virtual void Store(void);
- virtual eOSState ProcessKey(eKeys Key);
public:
cStreamdevServerMenuSetupPage(void);