Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

CalibrationController.cpp

00001 #include "CalibrationController.h"
00002 #include "ScanLibrary.h"
00003 #include "TestLibrary.h"
00004 #include "SequenceLibrary.h"
00005 #include "SequenceRequest.h"
00006 #include "TestRequest.h"
00007 #include "Sct/SctNames.h"
00008 #include <ipc/server.h>
00009 
00010 #include <iostream>
00011 
00012 using namespace std;
00013 using namespace Sct;
00014 
00015 namespace SctCalibrationController {
00016 namespace Ipc {
00017     
00018 CalibrationController::CalibrationController() : IPCObject(Sct_CalibrationController_C_CalibrationController_instanceName, &getServer()) {
00019     cout << "CalibrationController::CalibrationController()" << endl;
00020 }
00021 
00022 CalibrationController::~CalibrationController() {
00023     cout << "CalibrationController::~CalibrationController()" << endl;
00024 }
00025 
00026 IPCServer& CalibrationController::getServer() {
00027     static IPCServer server (Sct_CalibrationController_C_CalibrationController_serverName, SctNames::getPartition());
00028     return server;
00029 }
00030 
00031 Sct_CalibrationController_T_ScanLibrary* CalibrationController::getScanLibrary (Sct_CalibrationControllerStatus *_status) {
00032     cout << "External get Scan library" << endl;
00033     ScanLibrary& sl = getScanLibrary();
00034     sl.incRef();
00035     return &sl;
00036 }
00037 
00038 Sct_CalibrationController_T_TestLibrary* CalibrationController::getTestLibrary (Sct_CalibrationControllerStatus *_status) {
00039     cout << "External get Test library" << endl;
00040     TestLibrary& tl = getTestLibrary();
00041     tl.incRef();
00042     return &tl;
00043 }
00044 
00045 Sct_CalibrationController_T_SequenceLibrary * CalibrationController::getSequenceLibrary (Sct_CalibrationControllerStatus *_status) {
00046     cout << "External Get Sequence Library" << endl;
00047     SequenceLibrary& sl = getSequenceLibrary();
00048     sl.incRef();
00049     return &sl;
00050 }
00051 
00052 //We need a null deleter for the internal XXXRequest objects
00053 
00054 template<typename T>
00055 class NullDeleter {
00056 public:
00057     void operator() (T* t) throw () {}
00058 };
00059 
00060 void CalibrationController::updateWith (Sct_CalibrationControllerStatus *_status, ilu_T_CString testResultInIs){
00061   updateWith(testResultInIs);
00062 }
00063 
00064 void CalibrationController::doScan (Sct_CalibrationControllerStatus *_status, Sct_CalibrationController_T_ScanRequest * s) {
00065   shared_ptr<ScanRequest> req (dynamic_cast<ScanRequest*>(s), NullDeleter<ScanRequest>());
00066   if (!req) {
00067     req = shared_ptr<ScanRequest>(new ScanRequestAdapter(s));
00068   }
00069   doScan(req);
00070 }
00071 
00072 void CalibrationController::setUpdateOption(Sct_CalibrationControllerStatus *_status, Sct_CalibrationController_T_CalibrationController_UpdateOption opt){
00073     setUpdateOption(opt);
00074 }
00075 
00076 void CalibrationController::doTest (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_TestRequest *t) {
00077     shared_ptr<TestRequest> req (dynamic_cast<TestRequest*>(t), NullDeleter<TestRequest>());
00078     if (!req) {
00079     req = shared_ptr<TestRequest>(new TestRequestAdapter(t));
00080     }
00081     
00082     doTest(req); 
00083 }
00084 
00085 void CalibrationController::doSequence (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_SequenceRequest * r) {
00086     shared_ptr<SequenceRequest> req (dynamic_cast<SequenceRequest*>(r), NullDeleter<SequenceRequest>());
00087     if (!req) {
00088     req = shared_ptr<SequenceRequest>(new SequenceRequestAdapter(r));
00089     }
00090     doSequence(req);
00091 }
00092 
00093 void CalibrationController::abort (Sct_CalibrationControllerStatus *_status) {
00094     abort();
00095 }
00096 
00097 Sct_SctApi_T_Scan * CalibrationController::getScan (Sct_CalibrationControllerStatus *_status, ilu_Cardinal runNumber, ilu_Cardinal scanNumber) {
00098     return getScan(runNumber, scanNumber);
00099 }
00100 
00101 }
00102 }

Generated on Thu Jul 15 09:50:43 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5