• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KInit

  • kinit
klauncher.h
Go to the documentation of this file.
1/*
2 This file is part of the KDE libraries
3 Copyright (c) 1999 Waldo Bastian <bastian@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License version 2 as published by the Free Software Foundation.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#ifndef _KLAUNCHER_H_
21#define _KLAUNCHER_H_
22
23#include "autostart.h"
24
25#include <sys/types.h>
26#include <unistd.h>
27#include <time.h>
28
29#ifdef Q_WS_X11
30#include <X11/Xlib.h>
31#include <fixx11h.h>
32#endif
33
34#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
35#define USE_KPROCESS_FOR_KIOSLAVES
36#endif
37
38#include <QtCore/QString>
39#include <QtCore/QSocketNotifier>
40#include <QtCore/QTimer>
41#include <QtCore/QList>
42#include <QtCore/QObject>
43#include <QtDBus/QtDBus>
44
45#include <kservice.h>
46#include <kprocess.h>
47#include <kurl.h>
48#include <kio/connection.h>
49
50class IdleSlave : public QObject
51{
52 Q_OBJECT
53public:
54 explicit IdleSlave(QObject *parent);
55 bool match( const QString &protocol, const QString &host, bool connected) const;
56 void connect( const QString &app_socket);
57 pid_t pid() const { return mPid;}
58 int age(time_t now) const;
59 void reparseConfiguration();
60 bool onHold(const KUrl &url) const;
61 QString protocol() const {return mProtocol;}
62
63Q_SIGNALS:
64 void statusUpdate(IdleSlave *);
65
66protected Q_SLOTS:
67 void gotInput();
68
69public:
70 KIO::Connection mConn;
71protected:
72 QString mProtocol;
73 QString mHost;
74 bool mConnected;
75 pid_t mPid;
76 time_t mBirthDate;
77 bool mOnHold;
78 KUrl mUrl;
79};
80
81class SlaveWaitRequest
82{
83public:
84 pid_t pid;
85 QDBusMessage transaction;
86};
87
88class KLaunchRequest
89{
90public:
91 QString name;
92 QStringList arg_list;
93 QString dbus_name;
94 QString tolerant_dbus_name;
95 enum status_t { Init = 0, Launching, Running, Error, Done };
96 pid_t pid;
97 status_t status;
98 QDBusMessage transaction;
99 KService::DBusStartupType dbus_startup_type;
100 bool autoStart;
101 QString errorMsg;
102#ifdef Q_WS_X11
103 QByteArray startup_id; // "" is the default, "0" for none
104 QByteArray startup_dpy; // Display to send startup notification to.
105#endif
106 QStringList envs; // env. variables to be app's environment
107 QString cwd;
108#ifdef USE_KPROCESS_FOR_KIOSLAVES
109protected:
110 KProcess *process;
111 friend class KLauncher;
112#endif
113};
114
115struct serviceResult
116{
117 int result; // 0 means success. > 0 means error (-1 means pending)
118 QString dbusName; // Contains DBUS name on success
119 QString error; // Contains error description on failure.
120 pid_t pid;
121};
122
123class KLauncher : public QObject
124{
125 Q_OBJECT
126
127public:
128#ifndef USE_KPROCESS_FOR_KIOSLAVES
129 KLauncher(int kdeinitSocket);
130#else
131 KLauncher();
132#endif
133
134 ~KLauncher();
135
136 void close();
137
138public slots:
139 void destruct(); // exit!
140
141protected:
142 void processDied(pid_t pid, long exitStatus);
143
144 void requestStart(KLaunchRequest *request);
145 void requestDone(KLaunchRequest *request);
146
147 bool start_service(KService::Ptr service, const QStringList &urls,
148 const QStringList &envs, const QByteArray &startup_id,
149 bool blind, bool autoStart, const QDBusMessage &msg );
150
151 void createArgs( KLaunchRequest *request, const KService::Ptr service,
152 const QStringList &url);
153
154 void queueRequest(KLaunchRequest *);
155
156 void send_service_startup_info( KLaunchRequest *request, KService::Ptr service, const QByteArray &startup_id,
157 const QStringList &envs );
158 void cancel_service_startup_info( KLaunchRequest *request, const QByteArray& startup_id,
159 const QStringList &envs );
160
161Q_SIGNALS:
162 void autoStart0Done();
163 void autoStart1Done();
164 void autoStart2Done();
165
166public: // remote methods, called by KLauncherAdaptor
167 void autoStart(int phase = 1);
168
176 void exec_blind(const QString &name, const QStringList &arg_list, const QStringList &envs, const QString &startup_id);
177 inline void exec_blind(const QString &name, const QStringList &arg_list)
178 { exec_blind(name, arg_list, QStringList(), QLatin1String("0")); }
179
180 bool kdeinit_exec(const QString &app, const QStringList &args,
181 const QString& workdir, const QStringList &envs,
182 const QString &startup_id, bool wait, const QDBusMessage &msg);
183
184 void reparseConfiguration();
185 void setLaunchEnv(const QString &name, const QString &value);
186
204 bool start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg);
205
226 bool start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg);
227
245 bool start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg); // KDE5: remove
246
247 pid_t requestHoldSlave(const KUrl &url, const QString &app_socket);
248
249 pid_t requestSlave(const QString &protocol, const QString &host,
250 const QString &app_socket, QString &error);
255 bool checkForHeldSlave(const QString &url);
256 void waitForSlave(int pid, const QDBusMessage &msg);
257 void terminate_kdeinit();
258
259public Q_SLOTS:
260 void slotAutoStart();
261 void slotDequeue();
262 void slotKDEInitData(int);
263 void slotNameOwnerChanged(const QString &name, const QString &oldOnwer, const QString &newOwner);
264 void slotSlaveStatus(IdleSlave *);
265 void acceptSlave();
266 void slotSlaveGone();
267 void idleTimeout();
268
269public:
270 serviceResult requestResult; // accessed by the adaptor
271protected:
272 QList<KLaunchRequest*> requestList; // Requests being handled
273 QList<KLaunchRequest*> requestQueue; // Requests waiting to being handled
274 KLaunchRequest *lastRequest;
275 QList<SlaveWaitRequest*> mSlaveWaitRequest;
276#ifndef USE_KPROCESS_FOR_KIOSLAVES
277 int kdeinitSocket;
278 QSocketNotifier *kdeinitNotifier;
279#endif
280 KIO::ConnectionServer mConnectionServer;
281 QList<IdleSlave*> mSlaveList;
282 QTimer mTimer;
283 QTimer mAutoTimer;
284 bool bProcessingQueue;
285 AutoStart mAutoStart;
286 QString mSlaveDebug;
287 QString mSlaveValgrind;
288 QString mSlaveValgrindSkin;
289 bool dontBlockReading;
290#ifdef Q_WS_X11
291 Display *mCached_dpy;
292#endif
293 void processRequestReturn(int status, const QByteArray &requestData);
294
295protected Q_SLOTS:
296 void slotGotOutput();
297 void slotFinished(int exitCode, QProcess::ExitStatus exitStatus);
298};
299#endif
autostart.h
AutoStart
Definition: autostart.h:29
IdleSlave
Definition: klauncher.h:51
IdleSlave::mProtocol
QString mProtocol
Definition: klauncher.h:72
IdleSlave::mConn
KIO::Connection mConn
Definition: klauncher.h:70
IdleSlave::statusUpdate
void statusUpdate(IdleSlave *)
IdleSlave::reparseConfiguration
void reparseConfiguration()
Definition: klauncher.cpp:143
IdleSlave::gotInput
void gotInput()
Definition: klauncher.cpp:86
IdleSlave::mHost
QString mHost
Definition: klauncher.h:73
IdleSlave::protocol
QString protocol() const
Definition: klauncher.h:61
IdleSlave::mUrl
KUrl mUrl
Definition: klauncher.h:78
IdleSlave::connect
void connect(const QString &app_socket)
Definition: klauncher.cpp:133
IdleSlave::onHold
bool onHold(const KUrl &url) const
Definition: klauncher.cpp:161
IdleSlave::mOnHold
bool mOnHold
Definition: klauncher.h:77
IdleSlave::age
int age(time_t now) const
Definition: klauncher.cpp:168
IdleSlave::match
bool match(const QString &protocol, const QString &host, bool connected) const
Definition: klauncher.cpp:149
IdleSlave::mConnected
bool mConnected
Definition: klauncher.h:74
IdleSlave::pid
pid_t pid() const
Definition: klauncher.h:57
IdleSlave::mBirthDate
time_t mBirthDate
Definition: klauncher.h:76
IdleSlave::mPid
pid_t mPid
Definition: klauncher.h:75
KLaunchRequest
Definition: klauncher.h:89
KLaunchRequest::startup_dpy
QByteArray startup_dpy
Definition: klauncher.h:104
KLaunchRequest::cwd
QString cwd
Definition: klauncher.h:107
KLaunchRequest::dbus_startup_type
KService::DBusStartupType dbus_startup_type
Definition: klauncher.h:99
KLaunchRequest::arg_list
QStringList arg_list
Definition: klauncher.h:92
KLaunchRequest::startup_id
QByteArray startup_id
Definition: klauncher.h:103
KLaunchRequest::autoStart
bool autoStart
Definition: klauncher.h:100
KLaunchRequest::process
KProcess * process
Definition: klauncher.h:110
KLaunchRequest::transaction
QDBusMessage transaction
Definition: klauncher.h:98
KLaunchRequest::status_t
status_t
Definition: klauncher.h:95
KLaunchRequest::Running
@ Running
Definition: klauncher.h:95
KLaunchRequest::Done
@ Done
Definition: klauncher.h:95
KLaunchRequest::Init
@ Init
Definition: klauncher.h:95
KLaunchRequest::Launching
@ Launching
Definition: klauncher.h:95
KLaunchRequest::Error
@ Error
Definition: klauncher.h:95
KLaunchRequest::dbus_name
QString dbus_name
Definition: klauncher.h:93
KLaunchRequest::envs
QStringList envs
Definition: klauncher.h:106
KLaunchRequest::errorMsg
QString errorMsg
Definition: klauncher.h:101
KLaunchRequest::pid
pid_t pid
Definition: klauncher.h:96
KLaunchRequest::tolerant_dbus_name
QString tolerant_dbus_name
Definition: klauncher.h:94
KLaunchRequest::name
QString name
Definition: klauncher.h:91
KLaunchRequest::status
status_t status
Definition: klauncher.h:97
KLauncher
Definition: klauncher.h:124
KLauncher::acceptSlave
void acceptSlave()
Definition: klauncher.cpp:1259
KLauncher::destruct
void destruct()
Definition: klauncher.cpp:274
KLauncher::terminate_kdeinit
void terminate_kdeinit()
Definition: klauncher.cpp:1365
KLauncher::requestHoldSlave
pid_t requestHoldSlave(const KUrl &url, const QString &app_socket)
Definition: klauncher.cpp:1093
KLauncher::createArgs
void createArgs(KLaunchRequest *request, const KService::Ptr service, const QStringList &url)
Definition: klauncher.cpp:1068
KLauncher::idleTimeout
void idleTimeout()
Definition: klauncher.cpp:1301
KLauncher::mTimer
QTimer mTimer
Definition: klauncher.h:282
KLauncher::requestSlave
pid_t requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error)
Definition: klauncher.cpp:1114
KLauncher::slotGotOutput
void slotGotOutput()
Definition: klauncher.cpp:1326
KLauncher::autoStart2Done
void autoStart2Done()
KLauncher::autoStart0Done
void autoStart0Done()
KLauncher::requestDone
void requestDone(KLaunchRequest *request)
Definition: klauncher.cpp:567
KLauncher::slotSlaveGone
void slotSlaveGone()
Definition: klauncher.cpp:1290
KLauncher::mSlaveWaitRequest
QList< SlaveWaitRequest * > mSlaveWaitRequest
Definition: klauncher.h:275
KLauncher::mAutoTimer
QTimer mAutoTimer
Definition: klauncher.h:283
KLauncher::mSlaveValgrindSkin
QString mSlaveValgrindSkin
Definition: klauncher.h:288
KLauncher::kdeinit_exec
bool kdeinit_exec(const QString &app, const QStringList &args, const QString &workdir, const QStringList &envs, const QString &startup_id, bool wait, const QDBusMessage &msg)
Definition: klauncher.cpp:999
KLauncher::bProcessingQueue
bool bProcessingQueue
Definition: klauncher.h:284
KLauncher::autoStart1Done
void autoStart1Done()
KLauncher::slotDequeue
void slotDequeue()
Definition: klauncher.cpp:1047
KLauncher::start_service_by_name
bool start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg)
Start a service by (translated) name - deprecated.
Definition: klauncher.cpp:751
KLauncher::mSlaveList
QList< IdleSlave * > mSlaveList
Definition: klauncher.h:281
KLauncher::autoStart
void autoStart(int phase=1)
Definition: klauncher.cpp:522
KLauncher::requestQueue
QList< KLaunchRequest * > requestQueue
Definition: klauncher.h:273
KLauncher::exec_blind
void exec_blind(const QString &name, const QStringList &arg_list)
Definition: klauncher.h:177
KLauncher::setLaunchEnv
void setLaunchEnv(const QString &name, const QString &value)
Definition: klauncher.cpp:282
KLauncher::start_service
bool start_service(KService::Ptr service, const QStringList &urls, const QStringList &envs, const QByteArray &startup_id, bool blind, bool autoStart, const QDBusMessage &msg)
Definition: klauncher.cpp:814
KLauncher::mSlaveDebug
QString mSlaveDebug
Definition: klauncher.h:286
KLauncher::cancel_service_startup_info
void cancel_service_startup_info(KLaunchRequest *request, const QByteArray &startup_id, const QStringList &envs)
Definition: klauncher.cpp:967
KLauncher::mSlaveValgrind
QString mSlaveValgrind
Definition: klauncher.h:287
KLauncher::processDied
void processDied(pid_t pid, long exitStatus)
Definition: klauncher.cpp:409
KLauncher::slotKDEInitData
void slotKDEInitData(int)
Definition: klauncher.cpp:342
KLauncher::mConnectionServer
KIO::ConnectionServer mConnectionServer
Definition: klauncher.h:280
KLauncher::slotSlaveStatus
void slotSlaveStatus(IdleSlave *)
Definition: klauncher.cpp:1274
KLauncher::mAutoStart
AutoStart mAutoStart
Definition: klauncher.h:285
KLauncher::start_service_by_desktop_path
bool start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg)
Start a service by desktop path.
Definition: klauncher.cpp:770
KLauncher::waitForSlave
void waitForSlave(int pid, const QDBusMessage &msg)
Definition: klauncher.cpp:1244
KLauncher::close
void close()
Definition: klauncher.cpp:262
KLauncher::mCached_dpy
Display * mCached_dpy
Definition: klauncher.h:291
KLauncher::reparseConfiguration
void reparseConfiguration()
Definition: klauncher.cpp:1317
KLauncher::requestList
QList< KLaunchRequest * > requestList
Definition: klauncher.h:272
KLauncher::start_service_by_desktop_name
bool start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg)
Start a service by desktop name.
Definition: klauncher.cpp:799
KLauncher::~KLauncher
~KLauncher()
Definition: klauncher.cpp:256
KLauncher::lastRequest
KLaunchRequest * lastRequest
Definition: klauncher.h:274
KLauncher::queueRequest
void queueRequest(KLaunchRequest *)
Definition: klauncher.cpp:1036
KLauncher::requestResult
serviceResult requestResult
Definition: klauncher.h:270
KLauncher::KLauncher
KLauncher()
Definition: klauncher.cpp:196
KLauncher::exec_blind
void exec_blind(const QString &name, const QStringList &arg_list, const QStringList &envs, const QString &startup_id)
Starts a program.
Definition: klauncher.cpp:726
KLauncher::slotAutoStart
void slotAutoStart()
Definition: klauncher.cpp:533
KLauncher::processRequestReturn
void processRequestReturn(int status, const QByteArray &requestData)
Definition: klauncher.cpp:365
KLauncher::dontBlockReading
bool dontBlockReading
Definition: klauncher.h:289
KLauncher::send_service_startup_info
void send_service_startup_info(KLaunchRequest *request, KService::Ptr service, const QByteArray &startup_id, const QStringList &envs)
Definition: klauncher.cpp:915
KLauncher::checkForHeldSlave
bool checkForHeldSlave(const QString &url)
Return true of there is a slave held for url.
Definition: klauncher.cpp:1233
KLauncher::slotFinished
void slotFinished(int exitCode, QProcess::ExitStatus exitStatus)
Definition: klauncher.cpp:1336
KLauncher::requestStart
void requestStart(KLaunchRequest *request)
Definition: klauncher.cpp:640
KLauncher::slotNameOwnerChanged
void slotNameOwnerChanged(const QString &name, const QString &oldOnwer, const QString &newOwner)
Definition: klauncher.cpp:467
KProcess
KService::DBusStartupType
DBusStartupType
KSharedPtr< KService >
KUrl
QList
QObject
SlaveWaitRequest
Definition: klauncher.h:82
SlaveWaitRequest::transaction
QDBusMessage transaction
Definition: klauncher.h:85
SlaveWaitRequest::pid
pid_t pid
Definition: klauncher.h:84
kprocess.h
kservice.h
kurl.h
serviceResult
Definition: klauncher.h:116
serviceResult::error
QString error
Definition: klauncher.h:119
serviceResult::dbusName
QString dbusName
Definition: klauncher.h:118
serviceResult::pid
pid_t pid
Definition: klauncher.h:120
serviceResult::result
int result
Definition: klauncher.h:117
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KInit

Skip menu "KInit"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal