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

ServiceFit.cpp

Go to the documentation of this file.
00001 #include "ServiceFit.h"
00002 #include "archiving/ArchRawScanResult.h"
00003 #include "archiving/ArchFitScanResult.h"
00004 
00005 #include "Sct/SctNames.h"
00006 //#include "SCT/ISManager.h"
00007 #include "Sct/IS/IOManagerIS.h"
00008 #include "SctData/TestResult.h"
00009 #include "SctData/FitScanResult.h"
00010 //#include "Sct/shared_ptr_utility.h"
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     //Serializable* ob = ISManager::getManager().getFromIS(*isc);
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     //FitScanResult* fit = dynamic_cast<FitScanResult*>(ob);
00055     shared_ptr<FitScanResult> fit = dynamic_pointer_cast<FitScanResult>(ob);
00056     if (fit == 0) {
00057         cerr << "object wasn't as expected" << endl;
00058     //delete ob;
00059         return;
00060     }
00061 
00062     
00063     cout << "Archiving  FitScanResult: " << endl;
00064     //Store FitScanObject:
00065     ArchFitScanResult archfit(*fit);
00066     archfit.SetUNIXDir();
00067     archfit.SaveFitScan();
00068     archfit.FitScanIsPersisted();
00069 
00070     //delete fit;
00071     cout << "Test Fit complete" << endl;
00072 }
00073 
00074 }

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