|
a/src/mediaserver/cdplugins/plgwithslave.cxx |
|
b/src/mediaserver/cdplugins/plgwithslave.cxx |
|
... |
|
... |
60 |
string media_url;
|
60 |
string media_url;
|
61 |
long long len;
|
61 |
long long len;
|
62 |
time_t opentime;
|
62 |
time_t opentime;
|
63 |
};
|
63 |
};
|
64 |
|
64 |
|
|
|
65 |
// Timeout seconds for reading data from plugins. Be generous because
|
|
|
66 |
// streaming services are sometimes slow, but we don't want to be
|
|
|
67 |
// stuck forever.
|
|
|
68 |
static const int read_timeout(60);
|
|
|
69 |
|
65 |
class PlgWithSlave::Internal {
|
70 |
class PlgWithSlave::Internal {
|
66 |
public:
|
71 |
public:
|
67 |
Internal(PlgWithSlave *_plg, const string& exe, const string& hst,
|
72 |
Internal(PlgWithSlave *_plg, const string& exe, const string& hst,
|
68 |
int prt, const string& pp)
|
73 |
int prt, const string& pp)
|
69 |
: plg(_plg), exepath(exe), upnphost(hst), upnpport(prt), pathprefix(pp),
|
74 |
: plg(_plg), cmd(read_timeout), exepath(exe), upnphost(hst),
|
70 |
laststream(this) {
|
75 |
upnpport(prt), pathprefix(pp), laststream(this) { }
|
71 |
}
|
|
|
72 |
|
76 |
|
73 |
bool maybeStartCmd();
|
77 |
bool maybeStartCmd();
|
74 |
|
78 |
|
75 |
PlgWithSlave *plg;
|
79 |
PlgWithSlave *plg;
|
76 |
CmdTalk cmd;
|
80 |
CmdTalk cmd;
|
|
... |
|
... |
329 |
JSONTOUPS(title, tt);
|
333 |
JSONTOUPS(title, tt);
|
330 |
JSONTOUPS(artUri, upnp:albumArtURI);
|
334 |
JSONTOUPS(artUri, upnp:albumArtURI);
|
331 |
JSONTOUPS(artist, upnp:artist);
|
335 |
JSONTOUPS(artist, upnp:artist);
|
332 |
JSONTOUPS(upnpClass, upnp:class);
|
336 |
JSONTOUPS(upnpClass, upnp:class);
|
333 |
JSONTOUPS(date, dc:date)
|
337 |
JSONTOUPS(date, dc:date)
|
|
|
338 |
JSONTOUPS(date, releasedate)
|
334 |
// tp is container ("ct") or item ("it")
|
339 |
// tp is container ("ct") or item ("it")
|
335 |
string stp = decoded[i].get("tp", "").asString();
|
340 |
string stp = decoded[i].get("tp", "").asString();
|
336 |
if (!stp.compare("ct")) {
|
341 |
if (!stp.compare("ct")) {
|
337 |
song.iscontainer = true;
|
342 |
song.iscontainer = true;
|
338 |
string ss = decoded[i].get("searchable", "").asString();
|
343 |
string ss = decoded[i].get("searchable", "").asString();
|