/*========================================================================= * * Copyright NumFOCUS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *=========================================================================*/ #ifndef GDCMULCONNECTIONCALLBACK_H #define GDCMULCONNECTIONCALLBACK_H #include "gdcmTypes.h" //to be able to export the class namespace gdcm { class DataSet; namespace network { ///When a dataset comes back from a query/move/etc, the result can either be ///stored entirely in memory, or could be stored on disk. This class provides ///a mechanism to indicate what the ULConnectionManager should do with datasets ///that are produced through query results. ///The ULConnectionManager will call the HandleDataSet function during the course ///of receiving datasets. Particular implementations should fill in what that ///function does, including updating progress, etc. ///NOTE: since cmove requires that multiple event loops be employed, ///the callback function MUST set mHandledDataSet to true. ///otherwise, the cmove event loop handler will not know data was received, and ///proceed to end the loop prematurely. class GDCM_EXPORT ULConnectionCallback { bool mHandledDataSet; protected: bool mImplicit; //inherited callbacks MUST call this function for the cmove loop to work properly void DataSetHandled() { mHandledDataSet = true; } public: ULConnectionCallback():mHandledDataSet(false),mImplicit(true){} virtual ~ULConnectionCallback() = default; //placeholder for inherited objects virtual void HandleDataSet(const DataSet& inDataSet) = 0; virtual void HandleResponse(const DataSet& inDataSet) = 0; bool DataSetHandles() const { return mHandledDataSet; } void ResetHandledDataSet() { mHandledDataSet = false; } void SetImplicitFlag( const bool imp ) { mImplicit = imp; } }; } } #endif //GDCMULCONNECTIONCALLBACK_H