dataexchange.h
Go to the documentation of this file.
256 BlockUploader,
258 IncreaseQueueSize,
260 SignalUploader
277 DataUploader(unsigned int queueSize, FullQueueBehavior b, DataDownloader<DataType>* downloader = NULL);
723 NoNotificationBlocking,
726 QtEvent,
728 Callback
879 class FARSA_UTIL_TEMPLATE DataUploaderDownloader : public DataUploader<UploadedData_t>, public DataDownloader<DownloadedData_t>
900 typedef typename DataDownloader<DownloadedData>::NewDatumAvailableBehavior NewDatumAvailableBehavior;
924 DataUploaderDownloader(unsigned int uploadQueueSize, FullQueueBehavior fullQueueBehavior, NewDatumAvailableBehavior newDatumAvailableBehavior, DataUploaderDownloader<DownloadedData, UploadedData>* other = NULL) :
949 DataUploaderDownloader(unsigned int uploadQueueSize, FullQueueBehavior fullQueueBehavior, QObject* o, DataUploaderDownloader<DownloadedData, UploadedData>* other = NULL) :
974 DataUploaderDownloader(unsigned int uploadQueueSize, FullQueueBehavior fullQueueBehavior, NewDatumNotifiable<DownloadedData>* o, DataUploaderDownloader<DownloadedData, UploadedData>* other = NULL) :
1294 DataUploader<DataType_t>::DataUploader(unsigned int queueSize, FullQueueBehavior b, DataDownloader<DataType>* downloader) :
1307 // If we are associated with a downloader, we must not delete the queue, the downloader will take care of it
1353 throw UploaderDownloaderAssociationNotPresentException(UploaderDownloaderAssociationNotPresentException::DownloaderNotPresent);
1424 // Putting the new datum in the queue, extracting the next element and moving the uploader iterator forward
1433 // To update the variables with available space and data in queue, we have to check if the queue was full
1434 // and then check which is the FullQueueBehavior, to undestand what has been done in createDatum()
1441 // The downloader has downloaded one datum before we could add the new one, so we have to update the counters
1446 // The queue has grown, but still there is no space left. We only have to increase numDataInQueue
1461 // Waking up the downloader, in case it was sleeping. This doesn't conflict with sendNotification() because if the
1467 // If the downloader expects a callback to be called, we have to release the lock, otherwise a deadlock
1481 // Remeber that this function is not thread-safe and that the downloader must not be accessed concurrently to a
1491 throw UploaderDownloaderAssociationNotUniqueException(UploaderDownloaderAssociationNotUniqueException::UploaderAlreadyAssociated);
1492 } else if ((downloader->m_queue != NULL) && (downloader->m_queue->uploader != NULL) && (downloader->m_queue->uploader != this)) {
1493 throw UploaderDownloaderAssociationNotUniqueException(UploaderDownloaderAssociationNotUniqueException::DownloaderAlreadyAssociated);
1514 DataDownloader<DataType_t>::DataDownloader(NewDatumAvailableBehavior b, DataUploader<DataType>* uploader) :
1520 if ((m_newDatumAvailableBehavior != NoNotification) && (m_newDatumAvailableBehavior != NoNotificationBlocking)) {
1522 throw InvalidNewDatumAvailableBehaviorException("when the NewDatumAvailableBehavior is \"QtEvent\" you must specify the QObject that receives the event");
1524 throw InvalidNewDatumAvailableBehaviorException("when the NewDatumAvailableBehavior is \"Callback\" you must specify the NewDatumNotifiable object whose callback is called");
1541 throw InvalidNewDatumAvailableBehaviorException("when the NewDatumAvailableBehavior is \"QtEvent\" you must specify a valid (i.e. not NULL) QObject");
1550 DataDownloader<DataType_t>::DataDownloader(NewDatumNotifiable<DataType>* o, DataUploader<DataType>* uploader) :
1557 throw InvalidNewDatumAvailableBehaviorException("when the NewDatumAvailableBehavior is \"Callback\" you must specify a valid (i.e. not NULL) NewDatumNotifiable");
1587 throw UploaderDownloaderAssociationNotPresentException(UploaderDownloaderAssociationNotPresentException::UploaderNotPresent);
1601 throw UploaderDownloaderAssociationNotPresentException(UploaderDownloaderAssociationNotPresentException::UploaderNotPresent);