Skip to content

Commit

Permalink
Add 'mediaserver' type to PlaybackSock.
Browse files Browse the repository at this point in the history
This new shared type is used to differentiate between full slave
mythbackends and simple mythmediaservers, and allows the latter to be
identified as a client capable of taking part in file scans.
  • Loading branch information
wagnerrp committed Feb 12, 2012
1 parent 0e08bc5 commit 2f6750b
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 7 deletions.
37 changes: 31 additions & 6 deletions mythtv/programs/mythbackend/mainserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1299,6 +1299,7 @@ void MainServer::HandleVersion(MythSocket *socket, const QStringList &slist)
* \par ANN Monitor \e host \e wantevents
* Register \e host as a client, and allow shutdown of the socket
* \par ANN SlaveBackend \e IPaddress
* \par ANN MediaServer \e IPaddress
* \par ANN FileTransfer stringlist(\e hostname, \e filename)
* \par ANN FileTransfer stringlist(\e hostname, \e filename) \e useReadahead \e retries
*/
Expand Down Expand Up @@ -1385,6 +1386,7 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,

PlaybackSock *pbs = new PlaybackSock(this, socket, commands[2],
kPBSEvents_Normal);
pbs->setAsMediaServer();
pbs->setBlockShutdown(false);
sockListLock.lockForWrite();
playbackList.push_back(pbs);
Expand Down Expand Up @@ -3016,7 +3018,7 @@ void MainServer::HandleQueryFileHash(QStringList &slist, PlaybackSock *pbs)
}
else
{
PlaybackSock *slave = GetSlaveByHostname(hostname);
PlaybackSock *slave = GetMediaServerByHostname(hostname);
if (slave)
{
hash = slave->GetFileHash(filename, storageGroup);
Expand All @@ -3033,7 +3035,7 @@ void MainServer::HandleQueryFileHash(QStringList &slist, PlaybackSock *pbs)
if (query.exec() && query.next())
{
hostname = query.value(0).toString();
slave = GetSlaveByHostname(hostname);
slave = GetMediaServerByHostname(hostname);
if (slave)
{
hash = slave->GetFileHash(filename, storageGroup);
Expand Down Expand Up @@ -3282,7 +3284,7 @@ void MainServer::HandleSGGetFileList(QStringList &sList,
}
else
{
PlaybackSock *slave = GetSlaveByHostname(wantHost);
PlaybackSock *slave = GetMediaServerByHostname(wantHost);
if (slave)
{
LOG(VB_FILE, LOG_INFO, "HandleSGGetFileList: Getting remote info");
Expand Down Expand Up @@ -3344,7 +3346,7 @@ void MainServer::HandleSGFileQuery(QStringList &sList,
}
else
{
PlaybackSock *slave = GetSlaveByHostname(wantHost);
PlaybackSock *slave = GetMediaServerByHostname(wantHost);
if (slave)
{
LOG(VB_FILE, LOG_INFO, "HandleSGFileQuery: Getting remote info");
Expand Down Expand Up @@ -4258,7 +4260,7 @@ void MainServer::GetActiveBackends(QStringList &hosts)
vector<PlaybackSock*>::iterator it;
for (it = playbackList.begin(); it != playbackList.end(); ++it)
{
if ((*it)->isSlaveBackend())
if ((*it)->isMediaServer())
{
hostname = (*it)->getHostname();
if (!hosts.contains(hostname))
Expand Down Expand Up @@ -4448,7 +4450,7 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
PlaybackSock *pbs = *pbsit;

if ((pbs->IsDisconnected()) ||
(!pbs->isSlaveBackend()) ||
(!pbs->isMediaServer()) ||
(pbs->isLocal()) ||
(backendsCounted.contains(pbs->getHostname())))
continue;
Expand Down Expand Up @@ -5835,6 +5837,29 @@ PlaybackSock *MainServer::GetSlaveByHostname(const QString &hostname)
return NULL;
}

PlaybackSock *MainServer::GetMediaServerByHostname(const QString &hostname)
{
if (!ismaster)
return NULL;

QReadLocker rlock(&sockListLock);

vector<PlaybackSock *>::iterator iter = playbackList.begin();
for (; iter != playbackList.end(); ++iter)
{
PlaybackSock *pbs = *iter;
if (pbs->isMediaServer() &&
((pbs->getHostname().toLower() == hostname.toLower()) ||
(pbs->getIP() == hostname)))
{
pbs->UpRef();
return pbs;
}
}

return NULL;
}

/// Warning you must hold a sockListLock lock before calling this
PlaybackSock *MainServer::GetPlaybackBySock(MythSocket *sock)
{
Expand Down
1 change: 1 addition & 0 deletions mythtv/programs/mythbackend/mainserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ class MainServer : public QObject, public MythSocketCBs
void getGuideDataThrough(QDateTime &GuideDataThrough);

PlaybackSock *GetSlaveByHostname(const QString &hostname);
PlaybackSock *GetMediaServerByHostname(const QString &hostname);
PlaybackSock *GetPlaybackBySock(MythSocket *socket);
FileTransfer *GetFileTransferByID(int id);
FileTransfer *GetFileTransferBySock(MythSocket *socket);
Expand Down
1 change: 1 addition & 0 deletions mythtv/programs/mythbackend/playbacksock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ PlaybackSock::PlaybackSock(MainServer *parent, MythSocket *lsock,
m_eventsMode = eventsMode;
ip = "";
backend = false;
mediaserver = false;
expectingreply = false;

disconnected = false;
Expand Down
6 changes: 5 additions & 1 deletion mythtv/programs/mythbackend/playbacksock.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@ class PlaybackSock

// all backend<->backend stuff below here
bool isSlaveBackend(void) const { return backend; }
void setAsSlaveBackend(void) { backend = true; }
void setAsSlaveBackend(void) { backend = true; mediaserver = true; }

bool isMediaServer(void) const { return mediaserver; }
void setAsMediaServer(void) { mediaserver = true; }

bool isExpectingReply(void) const { return expectingreply; }

Expand Down Expand Up @@ -113,6 +116,7 @@ class PlaybackSock
PlaybackSockEventsMode m_eventsMode;
bool blockshutdown;
bool backend;
bool mediaserver;

QMutex refLock;
QMutex sockLock;
Expand Down

0 comments on commit 2f6750b

Please sign in to comment.