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() : 00019 IPCNamedObject<POA_Sct_CalibrationController::CalibrationController, ipc::multi_thread>(SctNames::getPartition(), 00020 Sct_CalibrationController::CalibrationController::instanceName) { 00021 cout << "CalibrationController::CalibrationController()" << endl; 00022 } 00023 00024 CalibrationController::~CalibrationController() { 00025 cout << "CalibrationController::~CalibrationController()" << endl; 00026 } 00027 00028 /* 00029 IPCServer& CalibrationController::getServer() { 00030 static IPCServer server (Sct_CalibrationController_C_CalibrationController_serverName, SctNames::getPartition()); 00031 return server; 00032 } 00033 */ 00034 00035 /* 00036 Sct_CalibrationController::ScanLibrary_ptr CalibrationController::getScanLibrary_corba () { 00037 cout << "External get Scan library" << endl; 00038 ScanLibrary& sl = getScanLibrary_nonCorba(); 00039 return sl._this(); 00040 } 00041 00042 Sct_CalibrationController::TestLibrary_ptr CalibrationController::getTestLibrary_corba () { 00043 cout << "External get Test library" << endl; 00044 TestLibrary& tl = getTestLibrary_nonCorba(); 00045 tl.incRef(); 00046 return &tl; 00047 } 00048 00049 Sct_CalibrationController::SequenceLibrary * CalibrationController::getSequenceLibrary_corba () { 00050 cout << "External Get Sequence Library" << endl; 00051 SequenceLibrary& sl = getSequenceLibrary_nonCorba(); 00052 sl.incRef(); 00053 return &sl; 00054 } 00055 00056 //We need a null deleter for the internal XXXRequest objects 00057 00058 template<typename T> 00059 class NullDeleter { 00060 public: 00061 void operator() (T* t) throw () {} 00062 }; 00063 00064 void CalibrationController::updateWith (Sct_CalibrationControllerStatus *_status, bool force, ilu_T_CString testResultInIs){ 00065 updateWith(testResultInIs, force); 00066 } 00067 00068 void CalibrationController::doScan (Sct_CalibrationController::ScanRequest * s) { 00069 shared_ptr<ScanRequest> req (dynamic_cast<ScanRequest*>(s), NullDeleter<ScanRequest>()); 00070 if (!req) { 00071 req = shared_ptr<ScanRequest>(new ScanRequestAdapter(s)); 00072 } 00073 doScan(req); 00074 } 00075 00076 void CalibrationController::doTest (class Sct_CalibrationController::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 (class Sct_CalibrationController::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 () { 00094 abort(); 00095 } 00096 00097 Sct_SctApi::Scan * CalibrationController::getScan (ilu_Cardinal runNumber, ilu_Cardinal scanNumber) { 00098 return getScan(runNumber, scanNumber); 00099 } 00100 */ 00101 00102 } 00103 }