15 #ifndef __IPSDKCORE_BASEACTION_H__ 16 #define __IPSDKCORE_BASEACTION_H__ 20 #pragma warning (push) 21 #pragma warning (disable : 4251) 27 #include <IPSDKCore/Processing/Priority/NormalPriority.h> 28 #include <IPSDKBaseData/ToolTip/BaseToolTip.h> 29 #include <IPSDKSerialization/Engine/SerializationObjectWithGuid.h> 30 #include <IPSDKUtil/Tools/Guid.h> 31 #include <IPSDKUtil/Tools/Chrono.h> 32 #include <boost/enable_shared_from_this.hpp> 33 #include <boost/thread/mutex.hpp> 34 #include <boost/thread/condition_variable.hpp> 35 #include <boost/optional/optional.hpp> 45 public boost::enable_shared_from_this<BaseAction>
66 virtual bool isComplexAction()
const = 0;
76 const ePriority& getActionPriority()
const;
81 void setActionPriority(
const BasePriority& actionPriority);
95 bool hasSocketGuid()
const;
98 void setSocketGuid(
const Guid& socketGuid);
103 const Guid& getSocketGuid()
const;
114 void requestCancellation();
118 bool isCancellationRequested()
const;
123 void waitForCompletion();
134 double getFullActionDuration()
const;
140 double getExecutionActionDuration()
const;
155 bool isSynchronismForced()
const;
212 virtual
void requestCancellationdDerived() {}
224 virtual BoolResult syncInputDataDerived(
const Guid& processingSocketGuid) {
return true;}
227 virtual BoolResult syncOutputDataDerived(
const Guid& processingSocketGuid) {
return true;}
230 virtual void clearInputData() {}
233 virtual void clearIntermediateData() {}
237 virtual void clearOutputData() {}
271 void processCancellation();
274 void processRunException(
const std::string& msg);
284 void callCompletionCB();
304 double _fullActionDuration;
308 Chrono _executionActionChrono;
312 double _executionActionDuration;
315 boost::optional<Guid> _pSocketGuid;
318 bool volatile _bCancellationRequested;
321 mutable boost::mutex _mutex;
324 boost::condition_variable _condition;
327 bool _bForceSynchronous;
348 #pragma warning (pop) 350 #endif // __IPSDKCORE_BASEACTION_H__ eSynchroType
Enumerate describing synchronization type for execution.
Definition: ActionTypes.h:37
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Synchronism of execution will be defined by object prefered state.
Definition: ActionTypes.h:46
Header part of macros set for action class declaration.
eExecutionResultDerived
Enumerate describing execution status after call to runDerived.
Definition: BaseAction.h:205
virtual BoolResult globalCleanDerived()
method called to clean execution data in derived class before initialization or during call to clear ...
Definition: BaseAction.h:172
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
Definition of import/export macro for library.
Base class for priority encapsulation.
Definition: BasePriority.h:32
bool isInit() const
retrieve object initialization flag
Definition: BaseAction.h:350
Serialization object with builtin guid.
Definition: SerializationObjectWithGuid.h:26
#define IPSDKCORE_API
Import/Export macro for library IPSDKCore.
Definition: IPSDKCoreExports.h:27
eCleanReason
Enumerate describing clean reason.
Definition: BaseAction.h:180
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Class used for pending action request encapsulation.
Definition: PendingActionRequest.h:39
ePriority
Enumerate describing priority.
Definition: PriorityTypes.h:32
Predefined types for processing management.
std::list< ActionCompletionCB > ActionCompletionCBColl
collection of functions callback used to notify of action completion
Definition: ActionTypes.h:60
boost::function1< void, const ActionPtr & > ActionCompletionCB
function callback used to notify of action completion
Definition: ActionTypes.h:57
Class used for remote action request encapsulation.
Definition: RemoteActionRequest.h:37
Class used for local action request encapsulation.
Definition: LocalActionRequest.h:32
Chronometer class for library processing time evaluation.
Definition: Chrono.h:33
eExecutionStatus
Enumerate describing an execution status.
Definition: ProcessingTypes.h:33
Class used to encapsulate normal priority.
Definition: NormalPriority.h:26
Base class for objects with name and tool tip informations.
Definition: BaseToolTip.h:27
Predefined types for actions management.
Base class for library actions.
Definition: BaseAction.h:43
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26