IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
RemoteActionRequest.h
1 // RemoteActionRequest.h:
3 // ----------------------
4 //
14 
15 #ifndef __IPSDKCORE_REMOTEACTIONREQUEST_H__
16 #define __IPSDKCORE_REMOTEACTIONREQUEST_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::core::RemoteActionRequest::_bPreviousRes' : class 'ipsdk::ProcessingResult<T>' needs to have dll-interface to be used by clients of class 'ipsdk::core::RemoteActionRequest'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
23 #include <IPSDKCore/Processing/ActionRequest/BaseActionRequest.h>
25 #include <IPSDKUtil/BaseTypes.h>
26 #include <IPSDKUtil/Tools/Guid.h>
27 #include <IPSDKComm/TcpIp/Types.h>
28 #include <boost/thread/mutex.hpp>
29 #include <boost/thread/condition_variable.hpp>
30 
31 namespace ipsdk {
32 namespace core {
33 
36 
38 {
39  // friend class for protected accesses
40  friend class UpdateRemoteAction;
41 
42 public:
48 
49 // methods
50 public:
52  eActionRequestType getActionRequestType() const;
53 
56  BoolResult init(const Guid& socketGuid,
57  const Guid& providerGuid);
58 
61  const Guid& getSocketGuid() const;
62 
65  const Guid& getProviderGuid() const;
66 
69  bool isNoMoreActionDetected() const;
70 
71 protected:
74  ExecResult executeActionDerived();
75 
82  void updateAction(const ActionPtr& pAction);
83 
88  void updateActionFailure(const std::string& msg);
89 
94  void updateActionNoMore();
95 
97  void requestCancellationDerived();
98 
100  void clearDerived();
101 
103  void notifyActionCompletion(const ActionPtr& pAction);
104 
106  void deliveryCB(const Guid& socketGuid,
107  ipUInt64 nDeliveryId,
108  bool bSuccess);
109 
111  void connectionLostCB(const tcpip::SocketDesc& socketDesc,
112  const boost::system::error_code& ec);
113 
114 // attributes
115 protected:
118 
121 
124 
127 
129  boost::mutex _derivedMutex;
130 
132  boost::condition_variable _derivedCondition;
133 
136 };
137 
140 
141 inline eActionRequestType
143 {
145 }
146 
149 
150 } // end of namespace core
151 } // end of namespace ipsdk
152 
153 #pragma warning (pop)
154 
155 #endif // __IPSDKCORE_REMOTEACTIONREQUEST_H__
Action request is remote, associated action access may be delayed.
Definition: ActionRequestTypes.h:42
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
bool _bNoMoreActionDetected
flag indicating whether a no more action case has been detected
Definition: RemoteActionRequest.h:135
boost::condition_variable _derivedCondition
condition variable used to woke up waiting thread
Definition: RemoteActionRequest.h:132
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
Base class for action requests.
Definition: BaseActionRequest.h:40
Guid _providerGuid
provider guid associated to remote request
Definition: RemoteActionRequest.h:120
Guid _socketGuid
socket guid associated to remote request
Definition: RemoteActionRequest.h:117
boost::shared_ptr< BaseAction > ActionPtr
shared pointer to BaseAction
Definition: ActionTypes.h:54
#define IPSDKCORE_API
Import/Export macro for library IPSDKCore.
Definition: IPSDKCoreExports.h:27
Base types for multiplatform compatibility.
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Action allowing to update an action on a distant machine.
Definition: UpdateRemoteAction.h:32
Definition: SocketDesc.h:35
eActionRequestType
Enumerate describing action request type.
Definition: ActionRequestTypes.h:38
boost::mutex _derivedMutex
mutex used for concurrent accesses protection
Definition: RemoteActionRequest.h:129
ActionPtr _pAction
action associated to object
Definition: RemoteActionRequest.h:126
Class used for remote action request encapsulation.
Definition: RemoteActionRequest.h:37
Predefined types for ip addresses management.
Guid _socketCBGuid
guid of socket deconnection callback
Definition: RemoteActionRequest.h:123
Predefined types for actions management.
eActionRequestType getActionRequestType() const
retrieve action request type
Definition: RemoteActionRequest.h:142