SetiContainer API Documentation

seticontainer.h

Go to the documentation of this file.
00001 /***************************************************************************/
00020 #ifndef SETICONTAINER_H
00021 #define SETICONTAINER_H
00022 
00023 #include <qobject.h>
00024 
00025 #include <sys/types.h>
00026 #include <sys/stat.h>
00027 #include <signal.h>
00028 #include <unistd.h>
00029 
00030 #include "setidefs.h"
00031 
00122 class SetiContainer : public QObject
00123 {
00124 Q_OBJECT
00125 
00126 public:
00134   SetiContainer(const QString& dir, int refresh=30);
00136   ~SetiContainer();
00141   void setRefreshInterval(int refresh);
00143   QString directory() const {return setiDirectory;}
00145   void setDirectory(const QString& d);
00147   int refreshInterval() {return(refreshIval/1000);}
00151   int fftNumber() {return(stfData.ncfft);}
00155   int fftLength() {return(stfData.fl);}
00157   double chirpRate() {return(stfData.cr);}
00159   double cpuTime() {return(stfData.cpu);}
00164   int outfileSize() {return(stfData.outfilepos);}
00166   int potFrequency() {return(stfData.potfreq);}
00168   int potActivity() {return(stfData.potactivity);}
00170   double progress() {return(100.0*(stfData.prog < 0.0 ? 0.0 : stfData.prog));}
00174   double progressRate();
00178   double remainingTime();
00182   QString remainingTimeAsString();
00187   WUScore wuScore() {return(stfData.max);}
00192   SpikeScore spikeScore() {return(stfData.max.spike);}
00197   GaussianScore gaussianScore() {return(stfData.max.gaussian);}
00202   PulseScore pulseScore() {return(stfData.max.pulse);}
00207   TripletScore tripletScore() {return(stfData.max.triplet);}
00209   int userID() {return(uifData.id);}
00211   int key() {return(uifData.key);}
00213   QString userEmailAddress() {return(uifData.email_addr);}
00215   QString userName() {return(uifData.name);}
00217   QString userHomepage() {return(uifData.url);}
00219   QString userCountry() {return(uifData.country);}
00221   int userPostalCode() {return(uifData.postal_code);}
00225   bool showName() {return(uifData.show_name);}
00229   bool showEmail() {return(uifData.show_email);}
00231   int venue() {return(uifData.venue);}
00235   QString registerTime() {return(uifData.register_time);}
00240   QString registerTimeString();
00245   QString lastWUTime() {return(uifData.last_wu_time);}
00250   QString lastResultTime() {return(uifData.last_result_time);}
00255   QString lastResultTimeString();
00259   int numberOfWUs() {return(uifData.nwus);}
00263   int numberOfResults() {return(uifData.nresults);}
00266   double totalCPUTime() {return(uifData.total_cpu);}
00270   double averageCPUTime();
00272   double paramsIndex() {return(uifData.params_index);}
00276   QString task() {return(wufData.task);}
00280   int wuVersion() {return(wufData.version);}
00282   QString wuName() {return(wufData.name);}
00284   QString wuDataType() {return(wufData.data_type);}
00286   int wuDataClass() {return(wufData.data_class);}
00288   QString splitterVersion() {return(wufData.splitter_version);}
00292   double startRA() {return(wufData.start_ra);}
00296   double startDec() {return(wufData.start_dec);}
00300   double endRA() {return(wufData.end_ra);}
00304   double endDec() {return(wufData.end_dec);}
00308   double angleRange() {return(wufData.angle_range);}
00320   double teraFlops(double ar, int version=0);
00322   double megaFlopsPerSecond();
00326   QString timeRecorded() {return(wufData.time_recorded);}
00331   QString timeRecordedString();
00333   double centerFrequency() {return(wufData.subband_center/1.0e9);}
00335   double baseFrequency() {return(wufData.subband_base/1.0e9);}
00337   double sampleRate() {return(wufData.subband_sample_rate);}
00339   int wuFFTLength() {return(wufData.fft_len);};
00341   int wuIFFTLength() {return(wufData.ifft_len);}
00343   int subbandNumber() {return(wufData.subband_number);}
00347   QString receiver() {return(wufData.receiver);}
00349   int numberOfSamples() {return(wufData.nsamples);}
00351   QString tapeVersion() {return(wufData.tape_version);}
00355   int numberOfCoords() {return(wufData.num_positions);}
00360   QStringList coords() {return(wufData.coordinates);}
00366   int clientVersion() {return(sahVersion);}
00373   bool exists(int sah);
00385   bool isClientRunning(pid_t pid = 0, bool checkCmdLine = false);
00387   int clientState() const {return cltState;}
00390   void setClientState(int st) {cltState = st;}
00400   QString readEntry(int sah, const QString& e);
00405   static void initWUScore(WUScore* score);
00413   static QString convertTime(double time, bool hms);
00421   static QString convertRAToString(double ra);
00429   static QString convertDecToString(double dec);
00433   enum SetiStatus {Stopped, Running, Finished, Loading};
00437   enum sahID {SC_StateFile, SC_UserInfoFile,
00438               SC_WorkUnitFile, SC_ResultFile,
00439               SC_ResultHeaderFile, SC_WtempFile};
00440 
00441 public slots:
00449   int updateSahData(bool sig=true);
00450 
00451 protected:
00452   int      refreshIval;
00453   int      sahVersion;
00454   bool     versionRead;
00455   QString  setiDirectory;
00456   QString  stfFileName;
00457   QString  wufFileName;
00458   QString  uifFileName;
00459   QString  rsfFileName;
00460   QString  rhdFileName;
00461   QString  wtpFileName;
00462   QStringList stateFile;
00463   QStringList workunitFile;
00464   QStringList userinfoFile;
00465   QString  stfTimeStamp;
00466   QString  wufTimeStamp;
00467   QString  uifTimeStamp;
00468   StateFileData stfData;
00469   UserInfoData  uifData;
00470   WorkUnitData  wufData;
00471   int cltState;
00472   int cltPid;
00473 
00474 protected: // Protected methods
00482   int readStateFile(bool sig=true);
00490   int readWorkUnitFile(bool sig=true);
00498   int readUserInfoFile(bool sig=true);
00509   int readSahFile(const QString& file, QStringList& list,
00510                   const QString& endId=0);
00520   QString readEntry(const QString& fn, const QString& e);
00529   static QString readEntry(QStringList& list, const QString& e);
00531   void initStateFileData();
00533   void initWorkUnitData();
00535   void initUserInfoData();
00542   void scanStateFile(bool sig=true);
00548   void scanSpikeData(bool sig=true);
00554   void scanGaussianData(bool sig=true);
00560   void scanPulseData(bool sig=true);
00566   void scanTripletData(bool sig=true);
00568   void scanGaussianGraphData();
00570   bool scanPulseGraphData();
00572   bool scanTripletGraphData();
00579   void scanUserInfoData(bool sig=true);
00586   void scanWorkUnitData(bool sig=true);
00592   int readClientVersion();
00599   void initAllData(bool sig=false);
00604   virtual void timerEvent(QTimerEvent* e);
00610   int checkClientState();
00615   int getClientPid();
00624   int checkClientStatePassive();
00633   static int readDataString(unsigned short int data[], QString& str, int cnt);
00635   void checkFileExistence();
00636 
00637 private:
00638   int    refTimer;
00639   int    sttTimer1;
00640   int    sttTimer2;
00641   double oldProgress;
00642   bool   stfEx;
00643   bool   uifEx;
00644   bool   wufEx;
00645   bool   rsfEx;
00646   bool   wtpEx;
00647   bool   rhdEx;
00648   time_t pidTimeStamp;
00649   pid_t  pidbuf;
00650 
00651 signals: // Signals
00655   void progressIncreased();
00662   void progressDecreased();
00668   void newSpike(SpikeScore sps);
00674   void newGaussian(GaussianScore gas);
00680   void newPulse(PulseScore pus);
00686   void newTriplet(TripletScore trs);
00690   void newWorkUnit(WorkUnitData wud);
00695   void updatedWorkUnitData();
00700   void updatedUserInfoData();
00708   void stateChanged(int state, int loadsize=0);
00709 };
00710 
00711 #endif
KDE Logo
This file is part of the documentation for SetiContainer API Version 0.5.
Documentation copyright © 2000-2002 Gordon Machel.
Generated on Tue Mar 26 23:50:40 2002 by doxygen 1.2.14, written by Dimitri van Heesch, © 1997-2002