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

CalibrationController.cpp

Go to the documentation of this file.
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 void CalibrationController::doScan (Sct_CalibrationControllerStatus *_status, Sct_SctApi_T_Scan * s) {
00053     doScan(s);
00054 }
00055 
00056 void CalibrationController::setUpdateOption(Sct_CalibrationControllerStatus *_status, Sct_CalibrationController_T_CalibrationController_UpdateOption opt){
00057     setUpdateOption(opt);
00058 }
00059 
00060   //We need a null deleter for the internal XXXRequest objects
00061 
00062 template<typename T>
00063 class NullDeleter {
00064 public:
00065     void operator() (T* t) throw () {}
00066 };
00067 
00068 void CalibrationController::doTest (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_TestRequest *t) {
00069     shared_ptr<TestRequest> req (dynamic_cast<TestRequest*>(t), NullDeleter<TestRequest>());
00070     if (!req) {
00071     req = shared_ptr<TestRequest>(new TestRequestAdapter(t));
00072     }
00073     
00074     doTest(req); 
00075 }
00076 
00077 void CalibrationController::doSequence (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_SequenceRequest * r) {
00078     shared_ptr<SequenceRequest> req (dynamic_cast<SequenceRequest*>(r), NullDeleter<SequenceRequest>());
00079     if (!req) {
00080     req = shared_ptr<SequenceRequest>(new SequenceRequestAdapter(r));
00081     }
00082     doSequence(req);
00083 }
00084 
00085 void CalibrationController::abort (Sct_CalibrationControllerStatus *_status) {
00086     abort();
00087 }
00088 
00089 Sct_SctApi_T_Scan * CalibrationController::getScan (Sct_CalibrationControllerStatus *_status, ilu_Cardinal runNumber, ilu_Cardinal scanNumber) {
00090     return getScan(runNumber, scanNumber);
00091 }
00092 
00093 }
00094 }

Generated on Mon Dec 15 19:35:58 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3