本文整理汇总了C++中MythSocket::DownRef方法的典型用法代码示例。如果您正苦于以下问题:C++ MythSocket::DownRef方法的具体用法?C++ MythSocket::DownRef怎么用?C++ MythSocket::DownRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MythSocket
的用法示例。
在下文中一共展示了MythSocket::DownRef方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: telnet
/**
* \brief Can we talk to port on host?
*/
bool telnet(const QString &host, int port)
{
MythSocket *s = new MythSocket();
bool connected = s->connect(host, port);
s->DownRef();
return connected;
}
示例2: connect_to_master
int connect_to_master(void)
{
MythSocket *tempMonitorConnection = new MythSocket();
if (tempMonitorConnection->connect(
gCoreContext->GetSetting("MasterServerIP", "127.0.0.1"),
gCoreContext->GetNumSetting("MasterServerPort", 6543)))
{
if (!gCoreContext->CheckProtoVersion(tempMonitorConnection))
{
VERBOSE(VB_IMPORTANT, "Master backend is incompatible with "
"this backend.\nCannot become a slave.");
return GENERIC_EXIT_CONNECT_ERROR;
}
QStringList tempMonitorDone("DONE");
QStringList tempMonitorAnnounce("ANN Monitor tzcheck 0");
tempMonitorConnection->writeStringList(tempMonitorAnnounce);
tempMonitorConnection->readStringList(tempMonitorAnnounce);
if (tempMonitorAnnounce.empty() ||
tempMonitorAnnounce[0] == "ERROR")
{
tempMonitorConnection->DownRef();
tempMonitorConnection = NULL;
if (tempMonitorAnnounce.empty())
{
VERBOSE(VB_IMPORTANT, LOC_ERR +
"Failed to open event socket, timeout");
}
else
{
VERBOSE(VB_IMPORTANT, LOC_ERR +
"Failed to open event socket" +
((tempMonitorAnnounce.size() >= 2) ?
QString(", error was %1").arg(tempMonitorAnnounce[1]) :
QString(", remote error")));
}
}
QStringList tzCheck("QUERY_TIME_ZONE");
if (tempMonitorConnection)
{
tempMonitorConnection->writeStringList(tzCheck);
tempMonitorConnection->readStringList(tzCheck);
}
if (tzCheck.size() && !checkTimeZone(tzCheck))
{
// Check for different time zones, different offsets, different
// times
VERBOSE(VB_IMPORTANT, "The time and/or time zone settings on "
"this system do not match those in use on the master "
"backend. Please ensure all frontend and backend "
"systems are configured to use the same time zone and "
"have the current time properly set.");
VERBOSE(VB_IMPORTANT,
"Unable to run with invalid time settings. Exiting.");
tempMonitorConnection->writeStringList(tempMonitorDone);
tempMonitorConnection->DownRef();
return GENERIC_EXIT_INVALID_TIMEZONE;
}
else
{
VERBOSE(VB_IMPORTANT,
QString("Backend is running in %1 time zone.")
.arg(getTimeZoneID()));
}
if (tempMonitorConnection)
tempMonitorConnection->writeStringList(tempMonitorDone);
}
if (tempMonitorConnection)
tempMonitorConnection->DownRef();
return GENERIC_EXIT_OK;
}
示例3: qurl
MythSocket *RemoteFile::openSocket(bool control)
{
QUrl qurl(path);
QString dir;
QString host = qurl.host();
int port = qurl.port();
dir = qurl.path();
if (qurl.hasQuery())
dir += "?" + QUrl::fromPercentEncoding(qurl.encodedQuery());
if (qurl.hasFragment())
dir += "#" + qurl.fragment();
QString sgroup = qurl.userName();
MythSocket *lsock = new MythSocket();
QString stype = (control) ? "control socket" : "file data socket";
QString loc_err = QString("RemoteFile::openSocket(%1), Error: ").arg(stype);
if (port <= 0)
{
port = GetMythDB()->GetSettingOnHost("BackendServerPort", host).toInt();
// if we still have no port use the default
if (port <= 0)
port = 6543;
}
if (!lsock->connect(host, port))
{
LOG(VB_GENERAL, LOG_ERR,
QString("Could not connect to server %1:%2")
.arg(host).arg(port));
lsock->DownRef();
return NULL;
}
QString hostname = GetMythDB()->GetHostName();
QStringList strlist;
if (control)
{
strlist.append(QString("ANN Playback %1 %2").arg(hostname).arg(false));
lsock->writeStringList(strlist);
if (!lsock->readStringList(strlist, true))
{
LOG(VB_GENERAL, LOG_ERR,
QString("\n\t\t\tCould not read string list from server "
"%1:%2").arg(host).arg(port));
lsock->DownRef();
return NULL;
}
}
else
{
strlist.push_back(QString("ANN FileTransfer %1 %2 %3 %4")
.arg(hostname).arg(writemode)
.arg(usereadahead).arg(timeout_ms));
strlist << QString("%1").arg(dir);
strlist << sgroup;
QStringList::const_iterator it = possibleauxfiles.begin();
for (; it != possibleauxfiles.end(); ++it)
strlist << *it;
if (!lsock->writeStringList(strlist) ||
!lsock->readStringList(strlist, true))
{
LOG(VB_GENERAL, LOG_ERR,
QString("Did not get proper response from %1:%2")
.arg(host).arg(port));
strlist.clear();
strlist.push_back("ERROR");
strlist.push_back("invalid response");
}
if (strlist.size() >= 3)
{
it = strlist.begin(); ++it;
recordernum = (*it).toInt(); ++it;
filesize = (*(it)).toLongLong(); ++it;
for (; it != strlist.end(); ++it)
auxfiles << *it;
}
else if (0 < strlist.size() && strlist.size() < 3 &&
strlist[0] != "ERROR")
{
LOG(VB_GENERAL, LOG_ERR,
QString("Did not get proper response from %1:%2")
.arg(host).arg(port));
strlist.clear();
strlist.push_back("ERROR");
strlist.push_back("invalid response");
}
}
//.........这里部分代码省略.........
示例4: locker
MythSocket *MythCoreContext::ConnectCommandSocket(
const QString &hostname, int port, const QString &announce,
bool *p_proto_mismatch, bool gui, int maxConnTry, int setup_timeout)
{
MythSocket *serverSock = NULL;
{
QMutexLocker locker(&d->m_WOLInProgressLock);
d->WaitForWOL();
}
QString WOLcmd = GetSetting("WOLbackendCommand", "");
if (maxConnTry < 1)
maxConnTry = max(GetNumSetting("BackendConnectRetry", 1), 1);
int WOLsleepTime = 0, WOLmaxConnTry = 0;
if (!WOLcmd.isEmpty())
{
WOLsleepTime = GetNumSetting("WOLbackendReconnectWaitTime", 0);
WOLmaxConnTry = max(GetNumSetting("WOLbackendConnectRetry", 1), 1);
maxConnTry = max(maxConnTry, WOLmaxConnTry);
}
bool we_attempted_wol = false;
if (setup_timeout <= 0)
setup_timeout = MythSocket::kShortTimeout;
bool proto_mismatch = false;
for (int cnt = 1; cnt <= maxConnTry; cnt++)
{
LOG(VB_GENERAL, LOG_INFO, LOC +
QString("Connecting to backend server: %1:%2 (try %3 of %4)")
.arg(hostname).arg(port).arg(cnt).arg(maxConnTry));
serverSock = new MythSocket();
int sleepms = 0;
if (serverSock->connect(hostname, port))
{
if (SetupCommandSocket(
serverSock, announce, setup_timeout, proto_mismatch))
{
break;
}
if (proto_mismatch)
{
if (p_proto_mismatch)
*p_proto_mismatch = true;
serverSock->DownRef();
serverSock = NULL;
break;
}
setup_timeout = (int)(setup_timeout * 1.5f);
}
else if (!WOLcmd.isEmpty() && (cnt < maxConnTry))
{
if (!we_attempted_wol)
{
QMutexLocker locker(&d->m_WOLInProgressLock);
if (d->m_WOLInProgress)
{
d->WaitForWOL();
continue;
}
d->m_WOLInProgress = we_attempted_wol = true;
}
myth_system(WOLcmd, kMSDontDisableDrawing | kMSDontBlockInputDevs |
kMSProcessEvents);
sleepms = WOLsleepTime * 1000;
}
serverSock->DownRef();
serverSock = NULL;
if (!serverSock && (cnt == 1))
{
QCoreApplication::postEvent(
d->m_GUIcontext, new MythEvent("CONNECTION_FAILURE"));
}
if (sleepms)
usleep(sleepms * 1000);
}
if (we_attempted_wol)
{
QMutexLocker locker(&d->m_WOLInProgressLock);
d->m_WOLInProgress = false;
d->m_WOLInProgressWaitCondition.wakeAll();
}
if (!serverSock && !proto_mismatch)
{
//.........这里部分代码省略.........