28 #ifndef _mtsCommandQueuedWrite_h
29 #define _mtsCommandQueuedWrite_h
41 template <
class _argumentType>
76 BaseType(mailBox, actualCommand, size),
80 if (argumentPrototype) {
86 CMN_LOG_INIT_ERROR <<
"Class mtsCommandQueuedWrite: constructor: can't find argument prototype from actual command."
107 <<
" to " << size << std::endl;
110 if (argumentPrototype) {
116 CMN_LOG_INIT_ERROR <<
"Class mtsCommandQueuedWrite: constructor: can't find argument prototype from actual command."
132 << this->
Name <<
"\"" << std::endl;
137 if (!argumentTyped) {
143 << this->
Name <<
"\" ["
153 CMN_LOG_RUN_ERROR <<
"Class mtsCommandQueuedWrite: Execute: ArgumentsQueue full for \""
154 << this->
Name <<
"\"" << std::endl;
155 cmnThrow(
"mtsCommandQueuedWrite: Execute: ArgumentsQueue.Put failed");
160 CMN_LOG_RUN_ERROR <<
"Class mtsCommandQueuedWrite: Execute: BlockingFlagQueue full for \""
161 << this->
Name <<
"\"" << std::endl;
163 cmnThrow(
"mtsCommandQueuedWrite: Execute: BlockingFlagQueue.Put failed");
168 CMN_LOG_RUN_ERROR <<
"Class mtsCommandQueuedWrite: Execute: FinishedEventQueue.Put failed for \""
169 << this->
Name <<
"\"" << std::endl;
172 cmnThrow(
"mtsCommandQueuedWrite: Execute: FinishedEventQueue.Put failed");
178 << this->
Name <<
"\"" << std::endl;
182 cmnThrow(
"mtsCommandQueuedWrite: Execute: MailBox.Write failed");
241 virtual void ToStream(std::ostream & outputStream)
const;
253 this->ActualCommand->SetArgumentPrototype(argumentPrototype);
254 this->
Allocate(this->ArgumentQueueSize);
265 return this->ActualCommand->GetArgumentPrototype();
270 return ArgumentsQueue.Peek();
275 return ArgumentsQueue.Get();
279 #endif // _mtsCommandQueuedWrite_h
friend class mtsCommandQueuedWriteGeneric
Definition: mtsCommandWriteBase.h:43
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
mtsQueue< mtsBlockingType > BlockingFlagQueue
Definition: mtsCommandQueuedWriteBase.h:45
mtsGenericTypesUnwrap< ArgumentQueueType >::BaseType ArgumentQueueBaseType
Definition: mtsCommandQueuedWrite.h:48
const mtsGenericObject * GetArgumentPrototype(void) const
Definition: mtsCommandQueuedWrite.h:189
pointer Get(void)
Definition: mtsQueue.h:179
Definition: mtsExecutionResult.h:44
bool IsEnabled(void) const
Definition: mtsCommandBase.h:105
#define CMN_LOG_RUN_ERROR
Definition: cmnLogger.h:166
virtual mtsCommandQueuedWriteBase * Clone(mtsMailBox *mailBox, size_t size) const
Definition: mtsCommandQueuedWrite.h:96
bool Write(mtsCommandBase *command)
void SetSize(size_type size, const_reference value)
Definition: mtsQueue.h:99
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
Definition: mtsForwardDeclarations.h:55
Definition: mtsExecutionResult.h:44
Definition: mtsExecutionResult.h:44
#define CMN_LOG_INIT_ERROR
Definition: cmnLogger.h:162
Base class for data object in cisstMultiTask.
Definition: mtsGenericObject.h:56
virtual mtsGenericObject * ArgumentGet(void)
Definition: mtsCommandQueuedWrite.h:274
mtsCommandQueuedWriteBase BaseType
Definition: mtsCommandQueuedWrite.h:45
virtual void SetArgumentPrototype(const mtsGenericObject *argumentPrototype)
Definition: mtsCommandQueuedWrite.h:252
mtsQueue< ArgumentQueueType > ArgumentsQueue
Definition: mtsCommandQueuedWrite.h:55
virtual mtsCommandQueuedWriteGeneric * Clone(mtsMailBox *mailBox, size_t size) const
Definition: mtsCommandQueuedWrite.h:243
mtsCommandQueuedWrite(mtsCommandWriteBase *actualCommand)
Definition: mtsCommandQueuedWrite.h:69
#define CMN_LOG_RUN_WARNING
Definition: cmnLogger.h:167
virtual const mtsGenericObject * ArgumentPeek(void) const
Definition: mtsCommandQueuedWrite.h:193
size_t ArgumentQueueSize
Definition: mtsCommandQueuedWrite.h:215
std::string Name
Definition: mtsCommandBase.h:52
Definition: mtsCommandWriteBase.h:40
Definition: mtsExecutionResult.h:44
Definition: mtsCommandQueuedWrite.h:209
mtsGenericTypesUnwrapImpl< T, cmnIsDerivedFromTemplated< T, mtsGenericObjectProxyBase >::IS_DERIVED >::BaseType BaseType
Definition: mtsGenericObjectProxy.h:715
mtsQueueGeneric ArgumentsQueue
Definition: mtsCommandQueuedWrite.h:217
Defines base class for a queued write command.
Definition: mtsQueue.h:196
virtual ~mtsCommandQueuedWriteGeneric()
Definition: mtsCommandQueuedWrite.h:238
mtsMailBox * MailBox
Definition: mtsCommandQueuedWriteBase.h:40
Definition: mtsCommandQueuedWriteBase.h:37
virtual mtsGenericObject * ArgumentGet(void)
Definition: mtsCommandQueuedWrite.h:198
mtsCommandQueuedWrite(void)
Definition: mtsCommandQueuedWrite.h:63
virtual void Allocate(size_t size)
Definition: mtsCommandQueuedWrite.h:102
const mtsGenericObject * GetArgumentPrototype(void) const
Definition: mtsCommandQueuedWrite.h:264
#define cmnThrow(a)
Definition: MinimalCmn.h:4
bool IsFull(void) const
Definition: mtsQueue.h:124
virtual ~mtsCommandQueuedWrite()
Definition: mtsCommandQueuedWrite.h:93
const_pointer Put(const typename mtsGenericTypesUnwrap< value_type >::BaseType &newObject)
Definition: mtsQueue.h:146
Definition: mtsExecutionResult.h:44
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking, mtsCommandWriteBase *finishedEventHandler)
Definition: mtsCommandQueuedWrite.h:122
mtsCommandQueuedWrite< ArgumentType > ThisType
Definition: mtsCommandQueuedWrite.h:51
Definition: mtsExecutionResult.h:34
Definition: mtsExecutionResult.h:44
Definition: mtsQueue.h:40
mtsGenericTypes< ArgumentType >::FinalType ArgumentQueueType
Definition: mtsCommandQueuedWrite.h:47
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking)
_argumentType ArgumentType
Definition: mtsCommandQueuedWrite.h:46
mtsCommandQueuedWrite(mtsMailBox *mailBox, mtsCommandWriteBase *actualCommand, size_t size)
Definition: mtsCommandQueuedWrite.h:75
mtsQueue< mtsCommandWriteBase * > FinishedEventQueue
Definition: mtsCommandQueuedWriteBase.h:50
#define CMN_LOG_INIT_WARNING
Definition: cmnLogger.h:163
Definition: mtsGenericObjectProxy.h:45
mtsBlockingType
Definition: mtsForwardDeclarations.h:55
Definition: mtsMailBox.h:36
virtual const mtsGenericObject * ArgumentPeek(void) const
Definition: mtsCommandQueuedWrite.h:269
virtual void Allocate(size_t size)=0
mtsCommandWriteBase * ActualCommand
Definition: mtsCommandQueuedWriteBase.h:41
mtsCommandQueuedWriteGeneric ThisType
Definition: mtsCommandQueuedWrite.h:213
virtual const mtsGenericObject * GetArgumentPrototype(void) const
Definition: mtsCommandWriteBase.h:93
mtsCommandQueuedWriteBase BaseType
Definition: mtsCommandQueuedWrite.h:212
virtual void ToStream(std::ostream &outputStream) const
Definition: mtsCommandQueuedWrite.h:42