本文整理汇总了C++中DCOPClient::call方法的典型用法代码示例。如果您正苦于以下问题:C++ DCOPClient::call方法的具体用法?C++ DCOPClient::call怎么用?C++ DCOPClient::call使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DCOPClient
的用法示例。
在下文中一共展示了DCOPClient::call方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: callInternal
DCOPReply DCOPRef::callInternal(const QCString &fun, const QCString &args, const QByteArray &data, EventLoopFlag useEventLoop, int timeout)
{
DCOPReply reply;
if(isNull())
{
qWarning("DCOPRef: call '%s' on null reference error", STR(fun));
return reply;
}
QCString sig = fun;
if(fun.find('(') == -1)
{
sig += args;
if(args.find("<unknown") != -1)
qWarning(
"DCOPRef: unknown type error "
"<\"%s\",\"%s\">::call(\"%s\",%s",
STR(m_app), STR(m_obj), STR(fun), args.data() + 1);
}
DCOPClient *dc = dcopClient();
if(!dc || !dc->isAttached())
{
qWarning("DCOPRef::call(): no DCOP client or client not attached error");
return reply;
}
dc->call(m_app, m_obj, sig, data, reply.type, reply.data, useEventLoop == UseEventLoop, timeout);
return reply;
}
示例2: dcopPrint
int KPrinterImpl::dcopPrint(const TQString& cmd, const TQStringList& files, bool removeflag)
{
kdDebug(500) << "tdeprint: print command: " << cmd << endl;
int result = 0;
DCOPClient *dclient = kapp->dcopClient();
if (!dclient || (!dclient->isAttached() && !dclient->attach()))
{
return result;
}
TQByteArray data, replyData;
TQCString replyType;
TQDataStream arg( data, IO_WriteOnly );
arg << cmd;
arg << files;
arg << removeflag;
if (dclient->call( "kded", "tdeprintd", "print(TQString,TQStringList,bool)", data, replyType, replyData ))
{
if (replyType == "int")
{
TQDataStream _reply_stream( replyData, IO_ReadOnly );
_reply_stream >> result;
}
}
示例3: isKDesktopLockRunning
// the code was taken from pilotDaemon.cc in KPilot
// static
OSDWidget::KDesktopLockStatus OSDWidget::isKDesktopLockRunning()
{
if (!Preferences::oSDCheckDesktopLock())
return NotLocked;
DCOPClient *dcopptr = KApplication::kApplication()->dcopClient();
// Can't tell, very weird
if (!dcopptr || !dcopptr->isAttached())
{
kdWarning() << k_funcinfo << ": Could not make DCOP connection." << endl;
return DCOPError;
}
QByteArray data,returnValue;
QCString returnType;
if (!dcopptr->call("kdesktop","KScreensaverIface","isBlanked()",
data,returnType,returnValue,true))
{
// KDesktop is not running. Maybe we are in a KDE4 desktop...
kdDebug() << k_funcinfo << ": Check for screensaver failed." << endl;
return DCOPError;
}
if (returnType == "bool")
{
bool b;
QDataStream reply(returnValue,IO_ReadOnly);
reply >> b;
return (b ? Locked : NotLocked);
}
示例4: main
int main(int argc, char **argv)
{
bool ok;
KApplication app(argc, argv, "kmobile_client", false);
// get our DCOP client and attach so that we may use it
DCOPClient *client = app.dcopClient();
client->attach();
QByteArray data;
QDataStream ds(data, IO_WriteOnly);
// ds << QString("a");
QCString replyType;
QByteArray replyData;
ok = client->call("kmobile", "kmobileIface", "deviceNames()", data, replyType, replyData);
QDataStream reply(replyData, IO_ReadOnly);
QStringList deviceNames;
reply >> deviceNames;
kdDebug() << QString("%1\n").arg(ok?"Ok":"Failure");
kdDebug() << QString("Number of currently registered drivers: %1\n").arg(deviceNames.count());
for (int i=0; i<deviceNames.count(); i++)
kdDebug() << QString("Device %1: %2\n").arg(i+1).arg(deviceNames[i]);
// return app.exec();
}
示例5: desktopFile
Wallpaper::Wallpaper( QWidget *parent, const char* name )
: WallpaperDlg( parent, name )
{
changePaper = true;
selectedPaper = "";
QStringList lst = KGlobal::dirs()->findAllResources("wallpaper", "*.desktop", false /* no recursion */, true /* unique files */ );
QString line,lname,lang,langCode;
// FIXME: What about other languages?
lang = QString(getenv("LC_ALL"));
if (lang == "tr_TR.UTF-8")
langCode="Name[tr]";
else
langCode="Name";
for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it)
{
if(!(*it).endsWith(".svgz.desktop"))
{
QFile desktopFile(*it);
QTextStream stream(&desktopFile);
desktopFile.open(IO_ReadOnly);
bool foundName = false;
while(!foundName && (line = stream.readLine()))
{
if (line.startsWith(langCode))
{
lname = line.section("=",1,1);
foundName=true;
}
}
papers.insert(lname, (*it).remove(".desktop"));
desktopFile.close();
}
}
QMap<QString, QString>::ConstIterator it = papers.begin();
for(; it != papers.constEnd(); ++it)
wallpaperBox->insertItem(it.key());
connect(testButton, SIGNAL(clicked()), this , SLOT(testWallpaper()));
connect(wallpaperBox, SIGNAL(activated(int)), this, SLOT(paperSelected(int)));
connect(changeCheck, SIGNAL(toggled(bool)), this, SLOT(optionChanged(bool)));
emit paperSelected(0);
// Backup old walpaper name
DCOPClient *client = kapp->dcopClient();
QByteArray replyData;
QCString replyType;
client->call("kdesktop", "KBackgroundIface", "currentWallpaper(int)", 6, replyType, replyData);
QDataStream reply(replyData, IO_ReadOnly);
reply >> oldWallpaper;
}
示例6: holdSlave
Slave* Slave::holdSlave( const QString &protocol, const KURL& url )
{
//kdDebug(7002) << "holdSlave '" << protocol << "' for " << url.prettyURL() << endl;
// Firstly take into account all special slaves
if (protocol == "data")
return 0;
DCOPClient *client = kapp->dcopClient();
if (!client->isAttached())
client->attach();
QString prefix = locateLocal("socket", KGlobal::instance()->instanceName());
KTempFile socketfile(prefix, QString::fromLatin1(".slave-socket"));
if ( socketfile.status() != 0 )
return 0;
#ifdef __CYGWIN__
socketfile.close();
socketfile.unlink();
#endif
#ifndef Q_WS_WIN
KServerSocket *kss = new KServerSocket(QFile::encodeName(socketfile.name()));
Slave *slave = new Slave(kss, protocol, socketfile.name());
#else
Slave *slave = 0;
#endif
QByteArray params, reply;
QCString replyType;
QDataStream stream(params, IO_WriteOnly);
stream << url << socketfile.name();
QCString launcher = KApplication::launcher();
if (!client->call(launcher, launcher, "requestHoldSlave(KURL,QString)",
params, replyType, reply)) {
delete slave;
return 0;
}
QDataStream stream2(reply, IO_ReadOnly);
pid_t pid;
stream2 >> pid;
if (!pid)
{
delete slave;
return 0;
}
#ifndef Q_WS_WIN
slave->setPID(pid);
QTimer::singleShot(1000*SLAVE_CONNECTION_TIMEOUT_MIN, slave, SLOT(timeout()));
#endif
return slave;
}
示例7: f_dcop
static ParseNode f_dcop(Parser*, const ParameterList& params)
{
QCString appId = params[0].toString().latin1();
QCString object = params[1].toString().latin1();
QString function = params[2].toString().section('(', 0, 0);
QStringList items = QStringList::split(",", params[2].toString().section('(', 1, 1).section(')', 0, 0));
QByteArray byteData;
QDataStream byteDataStream(byteData, IO_WriteOnly);
if (items.count() != params.count() - 3)
{
qDebug("Wrong number of parameters");
return ParseNode();
}
int i = 3;
for (QStringList::Iterator it = items.begin(); it != items.end(); ++it)
{
*it = (*it).stripWhiteSpace();
if (*it == "int")
byteDataStream << params[i++].toInt();
else if (*it == "long")
byteDataStream << params[i++].toInt();
else if (*it == "float")
byteDataStream << params[i++].toDouble();
else if (*it == "double")
byteDataStream << params[i++].toDouble();
else if (*it == "bool")
byteDataStream << (bool)params[i++].toInt();
else if (*it == "QStringList")
if (params[i].toString().find('\n') != -1)
byteDataStream << QStringList::split("\n", params[i++].toString(), true);
else
byteDataStream << QStringList::split("\\n", params[i++].toString(), true);
else
byteDataStream << params[i++].toString();
}
function.append(QString("(%1)").arg(items.join(",")));
QCString replyType, byteReply;
DCOPClient* cl = KApplication::dcopClient();
if (!cl || !cl->call(appId, object, function.latin1(),
byteData, replyType, byteReply))
{
qDebug("DCOP failure");
return ParseNode();
}
QDataStream byteReplyStream(byteReply, IO_ReadOnly);
if (replyType == "QString")
{
QString text;
byteReplyStream >> text;
return text;
}
示例8: loadBgPixmap
void Desktop::loadBgPixmap(void)
{
// if (!m_bgDirty) return;
DCOPClient *client = kapp->dcopClient();
if (!client->isAttached())
client->attach();
QByteArray data, data2, replyData;
QCString replyType;
if (client->call("kdesktop", "KBackgroundIface", "isCommon()",
data, replyType, replyData))
{
QDataStream reply(replyData, IO_ReadOnly);
if (replyType == "bool") {
reply >> m_isCommon;
}
示例9: checkKInetd
void KcmKRfb::checkKInetd(bool &kinetdAvailable, bool &krfbAvailable) {
kinetdAvailable = false;
krfbAvailable = false;
DCOPClient *d = KApplication::dcopClient();
QByteArray sdata, rdata;
QCString replyType;
QDataStream arg(sdata, IO_WriteOnly);
arg << QString("krfb");
if (!d->call ("kded", "kinetd", "isInstalled(QString)", sdata, replyType, rdata))
return;
if (replyType != "bool")
return;
QDataStream answer(rdata, IO_ReadOnly);
answer >> krfbAvailable;
kinetdAvailable = true;
}
示例10: hold
void Slave::hold(const KURL &url)
{
if(d->derived)
{ // TODO: clean up before KDE 4
HoldParams params;
params.url = &url;
virtual_hook(VIRTUAL_HOLD, ¶ms);
return;
} /*end if*/
ref();
{
QByteArray data;
QDataStream stream(data, IO_WriteOnly);
stream << url;
slaveconn.send(CMD_SLAVE_HOLD, data);
slaveconn.close();
dead = true;
emit slaveDied(this);
}
deref();
// Call KLauncher::waitForSlave(pid);
{
DCOPClient *client = kapp->dcopClient();
if(!client->isAttached())
client->attach();
QByteArray params, reply;
QCString replyType;
QDataStream stream(params, IO_WriteOnly);
pid_t pid = m_pid;
stream << pid;
QCString launcher = KApplication::launcher();
client->call(launcher, launcher, "waitForSlave(pid_t)", params, replyType, reply);
}
}
示例11: ds
//.........这里部分代码省略.........
id.initId( kapp->startupId());
else
id = TDEStartupInfo::currentStartupIdEnv();
if( !id.none())
{ // notice about pid change
Display* disp = XOpenDisplay( NULL );
if( disp != NULL ) // use extra X connection
{
TDEStartupInfoData data;
data.addPid( getpid());
TDEStartupInfo::sendChangeX( disp, id, data );
XCloseDisplay( disp );
}
}
#else //FIXME(E): Implement
#endif
}
result = 0;
::write(fd[1], &result, 1);
::close(fd[1]);
return true; // Finished.
default:
// Parent
// DCOPClient::emergencyClose();
// dcopClient()->detach();
if (s_multipleInstances)
appName.append("-").append(TQCString().setNum(fork_result));
::close(fd[1]);
for(;;)
{
int n = ::read(fd[0], &result, 1);
if (n == 1) break;
if (n == 0)
{
kdError() << "KUniqueApplication: Pipe closed unexpectedly." << endl;
::exit(255);
}
if (errno != EINTR)
{
kdError() << "KUniqueApplication: Error reading from pipe." << endl;
::exit(255);
}
}
::close(fd[0]);
if (result != 0)
::exit(result); // Error occurred in child.
dc = new DCOPClient();
if (!dc->attach())
{
kdError() << "KUniqueApplication: Parent process can't attach to DCOP." << endl;
delete dc; // Clean up DCOP commmunication
::exit(255);
}
if (!dc->isApplicationRegistered(appName)) {
kdError() << "KUniqueApplication: Registering failed!" << endl;
}
TQCString new_asn_id;
#if defined Q_WS_X11
TDEStartupInfoId id;
if( kapp != NULL ) // TDEApplication constructor unsets the env. variable
id.initId( kapp->startupId());
else
id = TDEStartupInfo::currentStartupIdEnv();
if( !id.none())
new_asn_id = id.id();
#endif
TQByteArray data, reply;
TQDataStream ds(data, IO_WriteOnly);
TDECmdLineArgs::saveAppArgs(ds);
ds << new_asn_id;
dc->setPriorityCall(true);
TQCString replyType;
if (!dc->call(appName, TDECmdLineArgs::about->appName(), "newInstance()", data, replyType, reply))
{
kdError() << "Communication problem with " << TDECmdLineArgs::about->appName() << ", it probably crashed." << endl;
delete dc; // Clean up DCOP commmunication
::exit(255);
}
dc->setPriorityCall(false);
if (replyType != "int")
{
kdError() << "KUniqueApplication: DCOP communication error!" << endl;
delete dc; // Clean up DCOP commmunication
::exit(255);
}
TQDataStream rs(reply, IO_ReadOnly);
int exitCode;
rs >> exitCode;
delete dc; // Clean up DCOP commmunication
::exit(exitCode);
break;
}
return false; // make insure++ happy
}
示例12: dock
void ExtensionProxy::dock(const TQCString& callbackID)
{
kdDebug(1210) << "Callback ID: " << callbackID << endl;
_callbackID = callbackID;
// try to attach to DCOP server
DCOPClient* dcop = kapp->dcopClient();
dcop->setNotifications(true);
connect(dcop, TQT_SIGNAL(applicationRemoved(const TQCString&)),
TQT_SLOT(slotApplicationRemoved(const TQCString&)));
WId win;
// get docked
{
TQCString replyType;
TQByteArray data, replyData;
TQDataStream dataStream( data, IO_WriteOnly );
int actions = 0;
if(_extension) actions = _extension->actions();
dataStream << actions;
int type = 0;
if (_extension) type = static_cast<int>(_extension->type());
dataStream << type;
// we use "call" to know whether it was sucessful
int screen_number = 0;
if (tqt_xdisplay())
screen_number = DefaultScreen(tqt_xdisplay());
TQCString appname;
if (screen_number == 0)
appname = "kicker";
else
appname.sprintf("kicker-screen-%d", screen_number);
if ( !dcop->call(appname, _callbackID, "dockRequest(int,int)",
data, replyType, replyData ) )
{
kdError() << "Failed to dock into the panel." << endl;
exit(0);
}
TQDataStream reply( replyData, IO_ReadOnly );
reply >> win;
}
if (win) {
if (_extension)
{
_extension->hide();
}
QXEmbed::initialize();
QXEmbed::embedClientIntoWindow( _extension, win );
}
else {
kdError() << "Failed to dock into the panel." << endl;
if(_extension) delete _extension;
exit(0);
}
}
示例13: slotReadOut
void KHTMLPluginKTTSD::slotReadOut()
{
// The parent is assumed to be a KHTMLPart
if(!parent()->inherits("KHTMLPart"))
QMessageBox::warning(0, i18n("Cannot Read source"), i18n("You cannot read anything except web pages with\n"
"this plugin, sorry."));
else
{
// If KTTSD not running, start it.
DCOPClient *client = kapp->dcopClient();
if(!client->isApplicationRegistered("kttsd"))
{
QString error;
if(kapp->startServiceByDesktopName("kttsd", QStringList(), &error))
QMessageBox::warning(0, i18n("Starting KTTSD Failed"), error);
}
// Find out if KTTSD supports xhtml (rich speak).
QByteArray data;
QBuffer dataBuf(data);
QDataStream arg;
dataBuf.open(IO_WriteOnly);
arg.setDevice(&dataBuf);
arg << "" << KSpeech::mtHtml;
QCString replyType;
QByteArray replyData;
bool supportsXhtml = false;
if(!client->call("kttsd", "KSpeech", "supportsMarkup(QString,uint)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call supportsMarkup failed."));
else
{
QDataStream reply(replyData, IO_ReadOnly);
reply >> supportsXhtml;
}
KHTMLPart *part = (KHTMLPart *)parent();
QString query;
if(supportsXhtml)
{
kdDebug() << "KTTS claims to support rich speak (XHTML to SSML)." << endl;
if(part->hasSelection())
query = part->selectedTextAsHTML();
else
{
// TODO: Fooling around with the selection probably has unwanted
// side effects, but until a method is supplied to get valid xhtml
// from entire document..
// query = part->document().toString().string();
part->selectAll();
query = part->selectedTextAsHTML();
// Restore no selection.
part->setSelection(part->document().createRange());
}
}
else
{
if(part->hasSelection())
query = part->selectedText();
else
query = part->htmlDocument().body().innerText().string();
}
// kdDebug() << "KHTMLPluginKTTSD::slotReadOut: query = " << query << endl;
dataBuf.at(0); // reset data
arg << query << "";
if(!client->call("kttsd", "KSpeech", "setText(QString,QString)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call setText failed."));
dataBuf.at(0);
arg << 0;
if(!client->call("kttsd", "KSpeech", "startText(uint)", data, replyType, replyData, true))
QMessageBox::warning(0, i18n("DCOP Call Failed"), i18n("The DCOP call startText failed."));
}
}
示例14: TDEAboutData
KCMThinkpadModule::KCMThinkpadModule(TQWidget* parent, const char* name, const TQStringList&)
: TDECModule(KCMThinkpadModuleFactory::instance(), parent, name) {
TDEAboutData* about =
new TDEAboutData(I18N_NOOP("kcmthinkpad"),
I18N_NOOP("TDE Control Module for IBM Thinkpad "
"Laptop Hardware"),
0, 0, TDEAboutData::License_GPL,
"(c) 2004 Jonathan Riddell");
about->addAuthor("Jonathan Riddell",
I18N_NOOP("Original author"),
"[email protected]");
setAboutData( about );
TQVBoxLayout* layout = new TQVBoxLayout(this);
m_KCMThinkpadGeneral = new KCMThinkpadGeneral(this);
layout->addWidget( m_KCMThinkpadGeneral );
layout->addStretch();
load();
//try and open /dev/nvram
m_nvramReadable = false;
m_nvramWriteable = false;
#ifdef Q_OS_FREEBSD
// Look if the sysctl tree of acpi_ibm is in place
u_int n = 0;
size_t len = sizeof(n);
if (m_nvramReadable = ( sysctlbyname("dev.acpi_ibm.0.volume", &n, &len, NULL, 0) != -1 ))
m_nvramWriteable = ( sysctlbyname("dev.acpi_ibm.0.volume", NULL, NULL, &n, len) != -1 );
if (!m_nvramReadable) {
setButtons(buttons() & ~Default);
m_KCMThinkpadGeneral->bgGeneral->setEnabled(false);
m_KCMThinkpadGeneral->tlOff->setText(i18n("In order to use the Thinkpad Buttons KMilo Plugin, "
"you have to load the acpi_ibm(4) driver."));
} else if (!m_nvramWriteable) {
m_KCMThinkpadGeneral->tlOff->setText(i18n("Could not write to dev.acpi_ibm.0.volume. "
"Using software volume, required for "
"R30/R31 models, or using a custom volume "
"change step is disabled."));
#else
TQFile nvramFile(m_nvramFile);
if ( nvramFile.open(IO_ReadOnly) ) {
m_nvramReadable = true;
nvramFile.close();
}
if ( nvramFile.open(IO_WriteOnly) ) {
m_nvramWriteable = true;
nvramFile.close();
}
if (!m_nvramReadable) {
setButtons(buttons() & ~Default);
m_KCMThinkpadGeneral->bgGeneral->setEnabled(false);
} else if (!m_nvramWriteable) {
m_KCMThinkpadGeneral->tlOff->setText(i18n("Could not write to %1. "
"To use the software volume, required for "
"R30/R31 models and to use a custom volume "
"change step, set the nvram device to world "
"writeable: <em>chmod 666 "
"/dev/nvram</em>").arg(m_nvramFile));
#endif
} else {
m_KCMThinkpadGeneral->tlOff->setText(i18n("Thinkpad Buttons KMilo Plugin Ready For Configuration"));
}
connect( m_KCMThinkpadGeneral, TQT_SIGNAL(changed()), TQT_SLOT(changed()));
}
void KCMThinkpadModule::save() {
if (!m_nvramReadable) {
return;
}
DCOPClient client;
TDEConfig config(CONFIG_FILE);
config.setGroup("thinkpad");
config.writeEntry("run", m_KCMThinkpadGeneral->mCbRun->isChecked());
config.writeEntry("softwareVolume", m_KCMThinkpadGeneral->mCbSoftwareVolume->isChecked());
config.writeEntry("volumeStep", m_KCMThinkpadGeneral->mSpinboxVolumeStep->value());
config.writeEntry("buttonThinkpad", m_KCMThinkpadGeneral->commandExec->url());
config.writeEntry("buttonHome", m_KCMThinkpadGeneral->commandExecHome->url());
config.writeEntry("buttonSearch", m_KCMThinkpadGeneral->commandExecSearch->url());
config.writeEntry("buttonMail", m_KCMThinkpadGeneral->commandExecMail->url());
config.writeEntry("buttonZoom", m_KCMThinkpadGeneral->commandExecZoom->url());
config.sync();
if (client.attach()) {
TQByteArray data, replyData;
TQCString replyType;
if (!client.call("kded", "kmilod", "reconfigure()", data, replyType, replyData)) {
kdDebug() << "KCMThinkpad::showTextMsg: "
<< "there was an error using DCOP on kmilod::reconfigure()." << endl;
}
} else {
//.........这里部分代码省略.........
示例15: DataProtocol
Slave *Slave::createSlave(const QString &protocol, const KURL &url, int &error, QString &error_text)
{
// kdDebug(7002) << "createSlave '" << protocol << "' for " << url.prettyURL() << endl;
// Firstly take into account all special slaves
if(protocol == "data")
return new DataProtocol();
DCOPClient *client = kapp->dcopClient();
if(!client->isAttached())
client->attach();
QString prefix = locateLocal("socket", KGlobal::instance()->instanceName());
KTempFile socketfile(prefix, QString::fromLatin1(".slave-socket"));
if(socketfile.status() != 0)
{
error_text = i18n("Unable to create io-slave: %1").arg(strerror(errno));
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
return 0;
}
#ifdef __CYGWIN__
socketfile.close();
#endif
KServerSocket *kss = new KServerSocket(QFile::encodeName(socketfile.name()));
Slave *slave = new Slave(kss, protocol, socketfile.name());
// WABA: if the dcopserver is running under another uid we don't ask
// klauncher for a slave, because the slave might have that other uid
// as well, which might either be a) undesired or b) make it impossible
// for the slave to connect to the application.
// In such case we start the slave via KProcess.
// It's possible to force this by setting the env. variable
// KDE_FORK_SLAVES, Clearcase seems to require this.
static bool bForkSlaves = !QCString(getenv("KDE_FORK_SLAVES")).isEmpty();
if(bForkSlaves || !client->isAttached() || client->isAttachedToForeignServer())
{
QString _name = KProtocolInfo::exec(protocol);
if(_name.isEmpty())
{
error_text = i18n("Unknown protocol '%1'.").arg(protocol);
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
delete slave;
return 0;
}
QString lib_path = KLibLoader::findLibrary(_name.latin1());
if(lib_path.isEmpty())
{
error_text = i18n("Can not find io-slave for protocol '%1'.").arg(protocol);
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
return 0;
}
KProcess proc;
proc << locate("exe", "kioslave") << lib_path << protocol << "" << socketfile.name();
kdDebug(7002) << "kioslave"
<< ", " << lib_path << ", " << protocol << ", " << QString::null << ", " << socketfile.name() << endl;
proc.start(KProcess::DontCare);
slave->setPID(proc.pid());
QTimer::singleShot(1000 * SLAVE_CONNECTION_TIMEOUT_MIN, slave, SLOT(timeout()));
return slave;
}
QByteArray params, reply;
QCString replyType;
QDataStream stream(params, IO_WriteOnly);
stream << protocol << url.host() << socketfile.name();
QCString launcher = KApplication::launcher();
if(!client->call(launcher, launcher, "requestSlave(QString,QString,QString)", params, replyType, reply))
{
error_text = i18n("Cannot talk to klauncher");
error = KIO::ERR_SLAVE_DEFINED;
delete slave;
return 0;
}
QDataStream stream2(reply, IO_ReadOnly);
QString errorStr;
pid_t pid;
stream2 >> pid >> errorStr;
if(!pid)
{
error_text = i18n("Unable to create io-slave:\nklauncher said: %1").arg(errorStr);
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
delete slave;
return 0;
}
slave->setPID(pid);
QTimer::singleShot(1000 * SLAVE_CONNECTION_TIMEOUT_MIN, slave, SLOT(timeout()));
return slave;
}