00001 #include "ServiceFit.h"
00002 #include "archiving/ArchRawScanResult.h"
00003 #include "archiving/ArchFitScanResult.h"
00004
00005 #include "Sct/SctNames.h"
00006
00007 #include "Sct/IS/IOManagerIS.h"
00008 #include "SctData/TestResult.h"
00009 #include "SctData/FitScanResult.h"
00010
00011
00012 using namespace Sct;
00013 using namespace SctData;
00014 using namespace Sct::IS;
00015 using namespace boost;
00016
00017
00018
00019 namespace SctArchivingServiceFit {
00020
00021 ArchivingServiceFit::ArchivingServiceFit() {}
00022
00023
00024 void ArchivingServiceFit::runFit() {
00025 cout<<" I am in ArchivingServiceFit::runFit() " <<endl;
00026 IPCPartition& p = SctNames::getPartition();
00027 ISInfoReceiver r(p);
00028 r.subscribe( "FittedData", ".*Fit.*", ISCallbackFit,this);
00029 r.run();
00030 }
00031
00032
00033 void ArchivingServiceFit::ISCallbackFit(ISCallbackInfo * isc) {
00034 cout<<" I am in ArchivingServiceFit::ISCallbackFit " <<endl;
00035 ArchivingServiceFit* a = static_cast<ArchivingServiceFit*>(isc->parameter());
00036 a->archiveFit(isc);
00037 }
00038
00039
00040
00041
00042 void ArchivingServiceFit::archiveFit(ISCallbackInfo * isc) {
00043 cout<<" I am in ArchivingServiceFit::archiveFit " <<endl;
00044
00045 if (isc->reason() != ISInfoCreated && isc->reason() != ISInfoUpdated )
00046 return;
00047
00048
00049 shared_ptr<Serializable> ob = IOManagerIS::instance().read(*isc);
00050 if (ob == 0) {
00051 cerr << "Failed to get object from IS" << endl;
00052 return;
00053 }
00054
00055 shared_ptr<FitScanResult> fit = dynamic_pointer_cast<FitScanResult>(ob);
00056 if (fit == 0) {
00057 cerr << "object wasn't as expected" << endl;
00058
00059 return;
00060 }
00061
00062
00063 cout << "Archiving FitScanResult: " << endl;
00064
00065 ArchFitScanResult archfit(*fit);
00066 archfit.SetUNIXDir();
00067 archfit.SaveFitScan();
00068 archfit.FitScanIsPersisted();
00069
00070
00071 cout << "Test Fit complete" << endl;
00072 }
00073
00074 }