diff options
Diffstat (limited to 'ksysguard/gui/ksgrd/SensorShellAgent.h')
-rw-r--r-- | ksysguard/gui/ksgrd/SensorShellAgent.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/ksysguard/gui/ksgrd/SensorShellAgent.h b/ksysguard/gui/ksgrd/SensorShellAgent.h new file mode 100644 index 000000000..e13413d55 --- /dev/null +++ b/ksysguard/gui/ksgrd/SensorShellAgent.h @@ -0,0 +1,77 @@ +/* + KSysGuard, the KDE System Guard + + Copyright (c) 1999, 2000 Chris Schlaeger <cs@kde.org> + + This program is free software; you can redistribute it and/or + modify it under the terms of version 2 of the GNU General Public + License as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +*/ + +#ifndef KSG_SENSORSHELLAGENT_H +#define KSG_SENSORSHELLAGENT_H + +#include <qobject.h> +#include <qptrlist.h> +#include <qguardedptr.h> + +#include <SensorAgent.h> + +class QString; + +class KProcess; + +namespace KSGRD { + +class SensorClient; +class SensorManager; + +/** + The SensorShellAgent starts a ksysguardd process and handles the + asynchronous communication. It keeps a list of pending requests + that have not been answered yet by ksysguard. The current + implementation only allowes one pending requests. Incoming requests + are queued in an input FIFO. + */ +class SensorShellAgent : public SensorAgent +{ + Q_OBJECT + + public: + SensorShellAgent( SensorManager *sm ); + ~SensorShellAgent(); + + bool start( const QString &host, const QString &shell, + const QString &command = "", int port = -1 ); + + void hostInfo( QString &shell, QString &command, int &port) const; + + private slots: + void msgSent( KProcess* ); + void msgRcvd( KProcess*, char *buffer, int buflen ); + void errMsgRcvd( KProcess*, char *buffer, int buflen ); + void daemonExited( KProcess* ); + + private: + bool writeMsg( const char *msg, int len ); + bool txReady(); + + QGuardedPtr<KProcess> mDaemon; + QString mShell; + QString mCommand; + int mRetryCount; +}; + +} + +#endif |