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
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 }