00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00027 #ifndef _NXCL_H_
00028 #define _NXCL_H_ 1
00029
00030 #include "nxdata.h"
00031 #include "../lib/nxclientlib.h"
00032
00033
00034
00035 #define DBUS_API_SUBJECT_TO_CHANGE 1
00036 extern "C" {
00037 #include <dbus/dbus.h>
00038 }
00039
00040 using namespace std;
00041
00042 namespace nxcl
00043 {
00044
00045 class NxclBase
00046 {
00047 public:
00048 NxclBase() {}
00049 virtual ~NxclBase() {}
00050
00051 virtual void haveResumableSessions (list<NXResumeData> resumeData) {}
00052 virtual void noResumableSessions (void) {}
00053 virtual void serverCapacityReached (void) {}
00054 virtual void sendDbusInfoMsg (string&) {}
00055 virtual void sendDbusInfoMsg (int, string&) {}
00056 virtual void sendDbusErrorMsg (string&) {}
00057 };
00058
00059 class NxclCallbacks : public NXClientLibExternalCallbacks
00060 {
00061 public:
00062 NxclCallbacks ();
00063 ~NxclCallbacks ();
00064
00071 void write (string msg);
00085 void write (int num, string msg);
00089 void error (string msg);
00094 void debug (string msg);
00103 void stdoutSignal (string msg);
00108 void stderrSignal (string msg);
00114 void stdinSignal (string msg);
00120 void resumeSessionsSignal (list<NXResumeData> resumeData);
00127 void noSessionsSignal (void);
00137 void serverCapacitySignal (void);
00138
00142 void setParent (NxclBase * p) { this->parent = p; }
00143 private:
00144 NxclBase * parent;
00145
00146 };
00147
00148 class Nxcl : public NxclBase
00149 {
00150 public:
00151 Nxcl();
00152 Nxcl(int n);
00153 ~Nxcl();
00154
00155
00168 void setupDbus (void);
00176 void setupDbus (int id);
00188 int receiveSettings (void);
00192 void setSessionDefaults (void);
00201 void startTheNXConnection (void);
00202
00203
00205 NXClientLib* getNXClientLib (void) { return &(this->nxclientlib); }
00207
00208
00210
00213 void haveResumableSessions (list<NXResumeData> resumable);
00217 void noResumableSessions (void);
00227 void requestConfirmation (string msg);
00231 void serverCapacityReached (void);
00237 void sendDbusInfoMsg (string& info);
00244 void sendDbusInfoMsg (int num, string& info);
00248 void sendDbusErrorMsg (string& errorMsg);
00250
00254 NxclCallbacks callbacks;
00255
00256 private:
00262 void initiate (void);
00276 void sendResumeList (list<NXResumeData>& resumable);
00287 void receiveStartInstruction (void);
00288
00293 NXClientLib nxclientlib;
00299 NXSessionData sessionData;
00303 DBusConnection *conn;
00307 DBusError error;
00312 int dbusNum;
00316 string dbusName;
00320 string dbusMatch;
00324 string dbusMatchInterface;
00328 string dbusSendInterface;
00333 string nxuser;
00338 string nxpass;
00343 string nxserver;
00348 int nxport;
00352 int xRes;
00356 int yRes;
00360 int displayDepth;
00361 };
00362
00363 }
00364
00365 #endif // ifndef _NXCL_H_