15 #ifndef __IPSDKCORE_BASEACTIONPROVIDER_H__ 16 #define __IPSDKCORE_BASEACTIONPROVIDER_H__ 21 #pragma warning (push) 22 #pragma warning (disable : 4251 4275) 29 #include <IPSDKUtil/Tools/Chrono.h> 30 #include <IPSDKUtil/Tools/Guid.h> 31 #include <boost/noncopyable.hpp> 32 #include <boost/enable_shared_from_this.hpp> 33 #include <boost/thread/mutex.hpp> 34 #include <boost/thread/condition_variable.hpp> 35 #include <boost/chrono/duration.hpp> 39 class BaseAsyncProcessor;
43 class BaseRequestOrigin;
46 class ProviderManager;
47 class AskForRemoteAction;
48 class UpdateRemoteAction;
49 class UpdatePendingAction;
55 public boost::enable_shared_from_this<BaseActionProvider>
79 const Guid& getGuid()
const;
83 const ePriority& getActionsPriority()
const;
96 bool areActionsPending()
const;
100 void waitForCompletion();
106 bool waitForCompletion(
const boost::chrono::milliseconds& duration);
112 bool waitForCompletion(
const boost::chrono::system_clock::time_point& deadLineTime);
118 void requestCancellation();
122 bool isCancellationRequested()
const;
132 double getFullExecutionDuration()
const;
152 bool existsRemoteProvider(
const Guid& socketGuid);
162 void addRemoteProvider(
const Guid& socketGuid);
169 bool unRegisterRemoteProvider(
const Guid& socketGuid);
193 bool& bProcessCompletionCheck,
198 virtual bool hasPendingAction()
const = 0;
205 bool& bRestartProvider) {
206 bRestartProvider =
false;
239 void internalClear();
248 void checkForCompletion();
252 const boost::system::error_code& ec);
269 boost::mutex _completionCBMutex;
272 bool volatile _bCancellationRequested;
278 bool volatile _bPendingActions;
287 double _fullExecutionDuration;
290 typedef std::map<Guid, Guid> GuidMap;
293 GuidMap _socketCBGuidColl;
296 mutable boost::mutex _mutex;
299 boost::condition_variable _condition;
320 #pragma warning (pop) 322 #endif // __IPSDKCORE_BASEACTIONPROVIDER_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::shared_ptr< const BaseSerializationObject > SerializationObjectConstPtr
shared pointer to a const base serialization object
Definition: SerializationTypes.h:32
Action allowing to update a pending action on a distant machine.
Definition: UpdatePendingAction.h:32
virtual BoolResult notifyDerived(const ActionRequestPtr &pActionRequest, const SerializationObjectConstPtr &pCbAdditionalData, bool &bRestartProvider)
method used to notify of execution completion for a given request
Definition: BaseActionProvider.h:203
virtual void clearDerived()
clear of data in derived class
Definition: BaseActionProvider.h:211
boost::function1< void, const ActionProviderPtr & > ProviderCompletionCB
function callback used to notify of action provider completion
Definition: ActionProviderTypes.h:64
Definition of import/export macro for library.
Base class for priority encapsulation.
Definition: BasePriority.h:32
Base class for action providers.
Definition: BaseActionProvider.h:54
#define IPSDKCORE_API
Import/Export macro for library IPSDKCore.
Definition: IPSDKCoreExports.h:27
virtual void requestCancellationDerived()
method allowing to request cancellation in derived classes
Definition: BaseActionProvider.h:214
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Predefined types for action provider management.
Base class for asynchronous processors.
Definition: BaseAsyncProcessor.h:29
std::map< Guid, ActionRequestPtr > ActionRequestColl
collection of action requests
Definition: ActionProviderTypes.h:61
ePriority
Enumerate describing priority.
Definition: PriorityTypes.h:32
bool isInit() const
retrieve object initialization flag
Definition: BaseActionProvider.h:309
Action allowing to update an action on a distant machine.
Definition: UpdateRemoteAction.h:32
Definition: SocketDesc.h:35
Predefined types for processing management.
boost::shared_ptr< BaseActionRequest > ActionRequestPtr
shared pointer for action requests
Definition: ActionRequestTypes.h:52
Chronometer class for library processing time evaluation.
Definition: Chrono.h:33
Class allowing to manager providers execution with respect to their priority.
Definition: ProviderManager.h:37
boost::shared_ptr< BaseSerializationObject > SerializationObjectPtr
shared pointer to a base serialization object
Definition: SerializationTypes.h:23
std::list< ProviderCompletionCB > ProviderCompletionCBColl
collection of functions callback used to notify of action provider completion
Definition: ActionProviderTypes.h:67
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
eExecutionStatus
Enumerate describing an execution status.
Definition: ProcessingTypes.h:33
Predefined types for ip addresses management.
Predefined types for priorities management.
Action allowing to ask for a new action on a distant machine.
Definition: AskForRemoteAction.h:31
Singleton class used to manage execution threads.
Definition: ThreadManager.h:38