Commit 4c4b729e authored by Andrea Orlat's avatar Andrea Orlat
Browse files

implemented the mechanism to pass the name of the file to the runnig backend

parent 9e4fd050
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -147,11 +147,12 @@ module Management {
		/**
		 * When this method is called the DataReceiver should prepare to start a new subscan.
		 * @prm extra parameters to allow the subscan preparation
		 * @thorw ComponentErrors::ComponentErrorsEx
		 * @thorw ManagementErrors::ManagementErrorsEx
		 * @thorw CORBA::SystemExcpetion
		 * @throw ComponentErrors::ComponentErrorsEx
		 * @throw ManagementErrors::ManagementErrorsEx
		 * @throw CORBA::SystemExcpetion
		 * @return the name of the file currently processed
		 */
		void startSubScan(in TSubScanSetup prm) raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);
		string startSubScan(in TSubScanSetup prm) raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);
		
		/**
		 * Called in order to issue the end of the schedule
+2 −1
Original line number Diff line number Diff line
@@ -166,8 +166,9 @@ class FitsWriterImpl : public virtual BulkDataReceiverImpl<FitsWriter_private::R
	 * @throw CORBA::SystemException
	 * @throw ComponentErrors::ComponentErrorsEx
	 * @throw ManagementErrors::ManagementErrorsEx
	 * @return the name of the file that will be processed by the system
	 */
    virtual void startSubScan(const ::Management::TSubScanSetup & prm) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);
    virtual char *startSubScan(const ::Management::TSubScanSetup & prm) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);

    /**
     * Return the recording status of the component.
+3 −1
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ void FitsWriterImpl::stopScan() throw (CORBA::SystemException,ComponentErrors::C
	ACS_LOG(LM_FULL_INFO,"FitsWriterImpl::stopScan()",(LM_DEBUG,"STOP_SCAN_ISSUED"));
}

void FitsWriterImpl::startSubScan(const ::Management::TSubScanSetup & prm) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx)
char *FitsWriterImpl::startSubScan(const ::Management::TSubScanSetup & prm) throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx)
{
	//CSecAreaResourceWrapper<FitsWriter_private::CDataCollection> data=m_dataWrapper->Get();
	bool rec,inc;
@@ -272,6 +272,8 @@ void FitsWriterImpl::startSubScan(const ::Management::TSubScanSetup & prm) throw
		throw impl.getComponentErrorsEx();
	}
	ACS_LOG(LM_FULL_INFO,"FitsWriterImpl::startSubScan()",(LM_DEBUG,"START_SUBSCAN_ISSUED"));
	IRA::CString file=m_data->getFileName();
	return CORBA::string_dup((const char *)file);
}

CORBA::Boolean FitsWriterImpl::isRecording() throw (CORBA::SystemException,ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx)
+2 −1
Original line number Diff line number Diff line
@@ -68,7 +68,8 @@ static void setupDataTransfer(bool& scanStarted,Management::DataReceiver_ptr wri
		const bool& streamPrepared,const IRA::CString& obsName,const IRA::CString& prj,const IRA::CString& baseName,const IRA::CString& path,const IRA::CString& extraPath,const IRA::CString& schedule,const IRA::CString& targetID,
		const IRA::CString& layoutName,const ACS::stringSeq& layout,const long& scanTag,const long& device,const DWORD& scanID,const ACS::Time& startTime,const  DWORD& subScanID,
		const Management::TScanAxis& axis,const CConfiguration* config) throw (ComponentErrors::OperationErrorExImpl,
		ComponentErrors::CORBAProblemExImpl,ComponentErrors::ComponentNotActiveExImpl,ComponentErrors::UnexpectedExImpl,ManagementErrors::DataTransferSetupErrorExImpl);
		ComponentErrors::CORBAProblemExImpl,ComponentErrors::ComponentNotActiveExImpl,ComponentErrors::UnexpectedExImpl,
		ManagementErrors::DataTransferSetupErrorExImpl,ManagementErrors::BackendNotAvailableExImpl);

/**
 * This static method starts the data transfer between the backend and the configured data recorder.
+19 −2
Original line number Diff line number Diff line
@@ -345,12 +345,13 @@ void CCore::setupDataTransfer(bool& scanStarted,
							  const Management::TScanAxis& axis,
							  const CConfiguration* config
	) throw (ComponentErrors::OperationErrorExImpl,ComponentErrors::CORBAProblemExImpl,ComponentErrors::ComponentNotActiveExImpl,
			ComponentErrors::UnexpectedExImpl,ManagementErrors::DataTransferSetupErrorExImpl)
			ComponentErrors::UnexpectedExImpl,ManagementErrors::DataTransferSetupErrorExImpl,ManagementErrors::BackendNotAvailableExImpl)
{
	if (!streamPrepared) {
		_EXCPT(ManagementErrors::DataTransferSetupErrorExImpl,impl,"CCore::setupDataTansfer()");
		throw impl;
	}
	CORBA::String_var fullFileName;
 	try {
 		if (!CORBA::is_nil(writer)) {
 			Management::TScanSetup setup;
@@ -413,7 +414,7 @@ void CCore::setupDataTransfer(bool& scanStarted,
 			subSetup.extraPath=CORBA::string_dup((const char *)extraPath);
 			subSetup.baseName=CORBA::string_dup((const char *)baseName);
 			subSetup.targetID=CORBA::string_dup((const char *)targetID);
 			writer->startSubScan(subSetup);
 			fullFileName=writer->startSubScan(subSetup);
 		}
		else {
			_EXCPT(ComponentErrors::ComponentNotActiveExImpl,impl,"CCore::setupDataTransfer()");
@@ -437,6 +438,22 @@ void CCore::setupDataTransfer(bool& scanStarted,
 		impl.setMinor(ex.minor());
 		throw impl;
 	}
 	// also inform the backend on the currently processed file
	if (!CORBA::is_nil(backend)) {
		try {
			backend->setTargetFileName(fullFileName.in());
		}
		catch (...) {
			_EXCPT(ComponentErrors::OperationErrorExImpl,impl,"CCore::setupDataTransfer()");
			impl.setReason("could not pass the file name to the backend");
			backendError=true;
			throw impl;
		}
	}
	else {
		_EXCPT(ManagementErrors::BackendNotAvailableExImpl,impl,"CCore::setupDataTransfer()");
		throw impl;
	}
}

void CCore::stopScan(Management::DataReceiver_ptr writer,bool& writerError,bool& scanStarted) throw (ComponentErrors::OperationErrorExImpl)
Loading