00001 #include "TestRequest.h" 00002 #include "CalibrationController.h" 00003 #include "RequestException.h" 00004 #include "Sct/OmniMarshalling.h" 00005 #include "Sct/SequenceUtils.h" 00006 #include "Sct/BugReport.h" 00007 00008 namespace SctCalibrationController { 00009 namespace Ipc { 00010 00011 TestRequestImpl::TestRequestImpl() : IPCObject<POA_Sct_CalibrationController::TestRequest>() { 00012 Sct::BugReport("BUG01", "TestRequest.cpp","ImplConstructor 1"); 00013 } 00014 00015 void TestRequestImpl::startTest (/*Sct_CalibrationControllerStatus *_status, */ 00016 Sct_SctApi::SctApiIPC_ptr api, //in 00017 CORBA::String_out name, //out 00018 CORBA::UShort & testVariable, //out 00019 CORBA::ULong & nScans, //out 00020 Sct_CalibrationController::TestPoints_out testPointsData //out 00021 ){ 00022 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 2"); 00023 00024 std::string nameOut; 00025 unsigned short testVariableOut; 00026 unsigned long nScansOut; 00027 vector<double> testPointsOut; 00028 00029 startTestRealImpl(api, nameOut, testVariableOut, nScansOut, testPointsOut); 00030 00031 name = ::Sct::copyStringToCorba(nameOut); 00032 testVariable = testVariableOut; 00033 nScans = nScansOut; 00034 testPointsData = ::Sct::SequenceUtils::newSafeSequence<Sct_CalibrationController::TestPoints>(testPointsOut.size()); 00035 for (unsigned int i=0; i<testPointsOut.size(); ++i) { 00036 testPointsData[i]=testPointsOut[i]; 00037 }; 00038 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 2.5"); 00039 } 00040 00041 Sct_CalibrationController::ScanRequest_ptr TestRequestImpl::getNextScan (/*Sct_CalibrationControllerStatus *_status, */CORBA::ULong index){ 00042 Sct::BugReport("BUG01", "TestRequest.cpp","getNextScan 3"); 00043 Sct_CalibrationController::ScanRequest_ptr ans = getNextScanRealImpl(index); 00044 Sct::BugReport("BUG01", "TestRequest.cpp","getNextScan 4"); 00045 return ans; 00046 } 00047 00048 CORBA::Boolean TestRequestImpl::canFeedback (/*Sct_CalibrationControllerStatus *_status*/) { 00049 Sct::BugReport("BUG01", "TestRequest.cpp","canFeedback 4"); 00050 return canFeedbackRealImpl(); 00051 } 00052 00053 void TestRequestImpl::endTest (/*Sct_CalibrationControllerStatus *_status*/) { 00054 Sct::BugReport("BUG01", "TestRequest.cpp","endTest 5"); 00055 endTestRealImpl(); 00056 Sct::BugReport("BUG01", "TestRequest.cpp","endTest 5.5"); 00057 } 00058 00059 00060 /* 00061 TestRequestAdapter::TestRequestAdapter(Sct_CalibrationController::TestRequest_ptr req) : 00062 request(Sct_CalibrationController::TestRequest::_duplicate(req)) { 00063 Sct::BugReport("BUG01", "TestRequest.cpp","AdapterConstructor 6"); 00064 } 00065 00066 00067 void TestRequestAdapter::startTest(Sct_SctApi::SctApiIPC_ptr api, 00068 std::string& name, 00069 unsigned short & testVariable, 00070 unsigned long & nScans, 00071 vector<double>& testPoints) { 00072 //Sct_CalibrationControllerStatus status; 00073 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 7"); 00074 CORBA::String_var text; 00075 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 7.4"); 00076 //This line was just a test name = text; // delete this one! 00077 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 7.6"); 00078 Sct_CalibrationController::TestPoints_var data; 00079 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 8"); 00080 00081 try { 00082 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 9"); 00083 request->startTest(//&status, 00084 api, text, testVariable, nScans, data); 00085 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 10"); 00086 } catch (CORBA::Exception & status) { 00087 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 11"); 00088 throw RequestException(status, "TestRequestAdapter::startTest failed", __FILE__, __LINE__); 00089 }; 00090 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 12"); 00091 name = text; 00092 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 13"); 00093 for (unsigned int i = 0; i<data->length(); ++i) { 00094 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 14"); 00095 testPoints.push_back(data[i]); 00096 } 00097 Sct::BugReport("BUG01", "TestRequest.cpp","startTest 15"); 00098 } 00099 00100 Sct_CalibrationController::ScanRequest_ptr TestRequestAdapter::getNextScan(unsigned long index) { 00101 Sct::BugReport("BUG01", "TestRequest.cpp","getNextScan 16"); 00102 Sct_CalibrationController::ScanRequest_ptr scan; 00103 try { 00104 scan = request->getNextScan(//&status, 00105 index); 00106 } catch (const CORBA::Exception & status) { 00107 throw RequestException(status, "TestRequestAdapter::getNextScan failed", __FILE__, __LINE__); 00108 }; 00109 if (CORBA::is_nil(scan)) { 00110 Sct::BugReport("BUG01", "TestRequest.cpp","getNextScan 17"); 00111 return Sct_CalibrationController::ScanRequest::_nil(); 00112 }; 00113 00114 //ScanRequest* ptr=dynamic_cast<ScanRequest*>(scan); 00115 //if (ptr!=0) return ptr; 00116 //else 00117 //ScanRequestAdapter * newAdapter = new ScanRequestAdapter(scan); 00118 //#warning DONT FORGET TO MAKE ScanRequestAdapter INHERIT FROM 00119 Sct::BugReport("BUG01", "TestRequest.cpp","getNextScan 18"); 00120 return scan; 00121 } 00122 00123 bool TestRequestAdapter::canFeedback() { 00124 Sct::BugReport("BUG01", "TestRequest.cpp","canFeedback 19"); 00125 try { 00126 return request->canFeedback(); 00127 } catch (const CORBA::Exception & status) { 00128 throw RequestException(status, "TestRequestAdapter::canFeedback failed", __FILE__, __LINE__); 00129 }; 00130 } 00131 00132 void TestRequestAdapter::endTest() { 00133 Sct::BugReport("BUG01", "TestRequest.cpp","endTest 20"); 00134 try { 00135 request->endTest(); 00136 } catch (const CORBA::Exception & status) { 00137 throw RequestException(status, "TestRequestAdapter::endTest failed", __FILE__, __LINE__); 00138 }; 00139 } 00140 */ 00141 00142 } 00143 }