00001 #ifndef SCTAPIIPC_SCANSERVER_H
00002 #define SCTAPIIPC_SCANSERVER_H
00003 
00004 
00005 
00006 
00007 class ScanServer;
00008 
00009 
00010 #include "Sct_SctApi/SctApi.hh"
00011 #include <ipc/object.h>
00012 #include <boost/shared_ptr.hpp>
00013 
00014 
00015 namespace SctApi {
00016   class Scan;
00017 };
00018 
00019 
00020 class ScanServer : public IPCNamedObject<POA_Sct_SctApi::Scan>
00021 {
00022   ScanServer(const ScanServer &);
00023   ScanServer &operator=(const ScanServer &);
00024 
00025   static int nextNumber;
00026 
00027  public:
00028   ScanServer();
00029 
00030   
00031 
00032   virtual ~ScanServer();
00033 
00034   virtual char* print ();
00035   virtual void configure (CORBA::UShort type, CORBA::Double start, CORBA::Double stop, CORBA::Double step);
00036   virtual void configure2 (CORBA::UShort type, CORBA::Double start, CORBA::Double stop, CORBA::Double step);
00037   virtual Sct_SctApi::Trigger_ptr getTrigger1 ();
00038   virtual Sct_SctApi::Trigger_ptr getTrigger2 ();
00039   virtual void setTrigger1 (Sct_SctApi::Trigger_ptr trig);
00040   virtual void setTrigger2 (Sct_SctApi::Trigger_ptr trig);
00041   virtual void setScanVariable1 (CORBA::UShort var);
00042   virtual void setScanVariable2 (CORBA::UShort var);
00043   virtual CORBA::UShort getScanVariable1 ();
00044   virtual CORBA::UShort getScanVariable2 ();
00045   virtual void setNTrigs (CORBA::ULong nTrigs);
00046   virtual CORBA::ULong getNTrigs ();
00047   virtual Sct_SctApi::Scan::TrigPoints * getVariableTrigs();
00048   virtual void setVariableTrigs(const Sct_SctApi::Scan::TrigPoints& scans);
00049   virtual void setVariableTrigRange(CORBA::UShort start, CORBA::UShort end, CORBA::ULong value);
00050   virtual Sct_SctApi::Scan::ScanPoints * getScanPoints1 ();
00051   virtual Sct_SctApi::Scan::ScanPoints * getScanPoints2 ();
00052   virtual void setScanPoints1 (const Sct_SctApi::Scan::ScanPoints & scans);
00053   virtual void setScanPoints2 (const Sct_SctApi::Scan::ScanPoints & scans);
00054   virtual CORBA::Long getOption (Sct_SctApi::Scan::ScanOptions opt);
00055   virtual void setOption (Sct_SctApi::Scan::ScanOptions opt, CORBA::Long val);
00056   virtual void setScanNumber (CORBA::ULong scan);
00057   virtual void setRunNumber (CORBA::ULong scan);
00058   virtual CORBA::ULong getScanNumber ();
00059   virtual CORBA::ULong getRunNumber ();
00060 #if !USE_CONST_SCAN
00061   virtual sctConf::ModuleList * getModuleList (CORBA::ULong group);
00062   virtual void setModuleList (CORBA::ULong group, const sctConf::ModuleList& newList);
00063   virtual CORBA::ULong getNGroups ();
00064   virtual void setNGroups(CORBA::UShort val);
00065   virtual char * getStartTime();
00066   virtual void setStartTime(const char* t);
00067   virtual char * getEndTime();
00068   virtual void setEndTime(const char* t);
00069 #endif
00070 
00071   
00072 #warning LESTER is guessing that the old destroy method corresponds to the new shutdown, so ... there is ALSO a similar method in the ScanServer class which I have similarly altered.
00073   
00074   
00075   
00076   virtual void shutdown();
00077 
00078   boost::shared_ptr<SctApi::Scan> m_worker;
00079 
00080  protected:
00081   static std::string getServerName();
00082 
00083  protected:
00084   SctApi::Scan &worker();
00085 
00086 };
00087 
00088 #endif