ssMultibeamProcess.h

Go to the documentation of this file.
00001 /* $Id: ssMultibeamProcess.h,v 1.26 2007/04/12 15:42:34 pfb Exp $ */
00002 
00003 #ifndef _ssMultibeamProcess_h
00004 #define _ssMultibeamProcess_h
00005 
00010 #include "../../../../Common/Observer/Observer.h"
00011 #include <vtkProcessObject.h>
00012 #include <vtkKWApplication.h>
00013 
00014 #ifndef RUN_CYCLE_TAG
00015 #define RUN_CYCLE_TAG 1
00016 #endif
00017 
00018 class vtkThreadedController;
00019 class vtkMultiProcessController;
00020 class MultibeamInstrument;
00021 class MultibeamBackEnd;
00022 class ssMultibeamLWApplication;
00023 class ssMultibeamProcessMonitor;
00024 
00035 class ssMultibeamProcess : public vtkProcessObject
00036 //BTX
00037                          , public Observer
00038 //ETX
00039   {
00040   //****************************************************************************
00041                              public:
00042 
00052   static ssMultibeamProcess *New();
00053 
00054   vtkTypeMacro(ssMultibeamProcess, vtkObject);
00055 
00061   void PrintSelf(ostream& os, vtkIndent indent);
00062 
00067   vtkMultiProcessController *Controller() const;
00068   
00073   virtual void Run();
00074 
00075   //BTX
00079   enum ProcessNumber
00080     {
00081     FRONTEND_PROCESS = 1,
00082     BACKEND_PROCESS = 2,
00083     GUI_PROCESS = 0,
00084     SDF_PROCESS = 3,
00085     INSTRUMENT_MONITOR_PROCESS = 4,
00086     LAST_PROCESS
00087     };
00088   //ETX
00089 
00093   //BTX
00094   enum OutputTag
00095     {
00096     BATHYMETRY = 100,
00097     ATTITUDE    = ssMultibeamProcess::BATHYMETRY + 4,
00098     NAVIGATION  = ssMultibeamProcess::ATTITUDE + 4,
00099     TIDE        = ssMultibeamProcess::NAVIGATION + 4,
00100     VELOCIMETER = ssMultibeamProcess::TIDE + 4,
00101     TEMPERATURE = ssMultibeamProcess::VELOCIMETER + 4,
00102     LAST_STREAM
00103     };
00104   //ETX
00105 
00106   //BTX
00111   enum NoficationTag
00112     {
00113     BATHYMETRY_DAV = 200,
00114     ATTITUDE_DAV,
00115     NAVIGATION_DAV,
00116     TIDE_DAV,
00117     VELOCIMETER_DAV,
00118     TEMPERATURE_DAV,
00119     LAST_STREAM_DAV,
00120     };
00121   //ETX
00122 
00123   //BTX
00127   enum MonitorTag
00128     {
00129     TERMINATE_RMI,
00130     LAST_MONITOR_RMI
00131     };
00132   //ETX
00133 
00138   MultibeamInstrument *Instrument() const;
00139 
00144   MultibeamBackEnd *BackEnd() const;
00145 
00150   ssMultibeamLWApplication *Ui() const;
00151 
00155   ssMultibeamProcessMonitor *ProcessMonitor() const;
00156 
00161   virtual void notify();
00162 
00167   virtual void Delete();
00168 
00173   static void Run(vtkMultiProcessController *controller, void* vtkNotUsed(arg));
00174 
00175   //****************************************************************************
00176                              protected:
00177 
00181   ssMultibeamProcess();
00182 
00186   virtual ~ssMultibeamProcess();
00187 
00188   //****************************************************************************
00189                              private:
00190 
00194   ssMultibeamProcess(const ssMultibeamProcess&);
00195   ssMultibeamProcess& operator=(const ssMultibeamProcess&);
00196 
00202   static void RunParts(vtkMultiProcessController *controller, void *tlc);
00203 
00204   MultibeamInstrument       *instrument;
00205   MultibeamBackEnd          *backend;
00206   ssMultibeamLWApplication  *ui;
00207   ssMultibeamProcessMonitor *processmonitor;
00208 
00209   vtkThreadedController     *parentController;
00210   };
00211 
00216 struct ThreadArgs
00217   {
00218   int argc;
00219   char **argv;
00220   Tcl_Interp *interp;
00221   };
00222 
00223 /*
00224  * $Log: ssMultibeamProcess.h,v $
00225  * Revision 1.26  2007/04/12 15:42:34  pfb
00226  * Changes made necessary by the upgrade from Debian Sarge to Etch.
00227  *
00228  * Revision 1.25  2006/09/25 15:10:19  pfb
00229  * Spaced the enumarations of enum OutputTag by 4 in order to accomadate
00230  * code in vtkOutoutPort.C (see vtkOutputPort::SetTag(int tag)).
00231  *
00232  * Revision 1.24  2006/08/22 15:59:39  pfb
00233  * Added interp to ThreadArgs definition.
00234  *
00235  * Revision 1.23  2006/04/05 01:54:11  pfb
00236  * Added ThreadArgs.
00237  *
00238  * Revision 1.22  2006/03/22 14:01:25  pfb
00239  * Now using local vtkThreadedController.
00240  *
00241  * Revision 1.21  2006/03/20 11:12:23  pfb
00242  * Using a vtkMPIController (in its threaded controller personality) as the
00243  * parent controller.
00244  *
00245  * Revision 1.20  2006/03/20 04:23:55  pfb
00246  * Modifications due to upgrade to VTK 5.0 and KWWidgets 1.0
00247  *
00248  * Revision 1.19  2005/12/29 10:16:50  pfb
00249  * Changes made in upgrade to ParaView 2.2.1, VTK 4.5.0
00250  *
00251  * Revision 1.18  2005/06/30 13:39:12  pfb
00252  * Documentation and small code changes. Work in progress.
00253  *
00254  * Revision 1.17  2005/06/24 05:02:42  pfb
00255  * Work in progress.
00256  *
00257  * Revision 1.16  2005/06/07 12:19:39  pfb
00258  * Added the ProcessMonitor process.
00259  *
00260  * Revision 1.15  2005/06/01 03:37:20  pfb
00261  * Renamed ProcessNumber members.
00262  *
00263  * Revision 1.14  2005/05/30 15:09:14  pfb
00264  * Added LAST_PROCESS to ProcessNumber.
00265  *
00266  * Revision 1.13  2005/05/25 12:07:25  pfb
00267  * Added NoficationTag.
00268  *
00269  * Revision 1.12  2005/05/23 05:27:01  pfb
00270  * Added ProcessNumber enum.
00271  *
00272  * Revision 1.11  2005/05/23 03:44:37  pfb
00273  * Fixed module info.
00274  *
00275  * Revision 1.10  2005/05/21 15:15:05  pfb
00276  * Module name change.
00277  *
00278  * Revision 1.9  2005/05/10 17:08:02  pfb
00279  * Added module info.
00280  *
00281  * Revision 1.8  2005/04/21 04:19:28  pfb
00282  * Work in progress.
00283  *
00284  * Revision 1.7  2005/03/15 06:19:51  pfb
00285  * Added some provisions for BackEnd and Ui. Work in progress.
00286  *
00287  * Revision 1.6  2005/03/03 05:29:23  pfb
00288  * Cleaned up commented out code.
00289  *
00290  * Revision 1.5  2005/01/20 06:08:56  pfb
00291  * Moved C public functions into class as statics.
00292  *
00293  * Revision 1.4  2005/01/10 14:25:47  pfb
00294  * Added Controller().
00295  *
00296  * Revision 1.3  2005/01/03 05:47:42  pfb
00297  * Added documentation.
00298  *
00299  * Revision 1.2  2004/08/08 15:35:22  pfb
00300  * Work in progress.
00301  *
00302  * Revision 1.1  2004/07/21 09:15:33  pfb
00303  * Initial rev.
00304  *
00305  *
00306  */
00307 
00311 #endif