28#ifndef _mtsCommandQueuedWrite_h
29#define _mtsCommandQueuedWrite_h
41template <
class _argumentType>
51 typedef mtsCommandQueuedWrite<ArgumentType>
ThisType;
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);
std::string Name
Definition mtsCommandBase.h:52
bool IsEnabled(void) const
Definition mtsCommandBase.h:105
mtsCommandWriteBase * ActualCommand
Definition mtsCommandQueuedWriteBase.h:41
mtsCommandQueuedWriteBase(void)
Definition mtsCommandQueuedWriteBase.h:52
mtsQueue< mtsCommandWriteBase * > FinishedEventQueue
Definition mtsCommandQueuedWriteBase.h:50
mtsQueue< mtsBlockingType > BlockingFlagQueue
Definition mtsCommandQueuedWriteBase.h:45
mtsMailBox * MailBox
Definition mtsCommandQueuedWriteBase.h:40
virtual mtsGenericObject * ArgumentGet(void)
Definition mtsCommandQueuedWrite.h:274
virtual void Allocate(size_t size)
const mtsGenericObject * GetArgumentPrototype(void) const
Definition mtsCommandQueuedWrite.h:264
virtual void SetArgumentPrototype(const mtsGenericObject *argumentPrototype)
Definition mtsCommandQueuedWrite.h:252
mtsCommandQueuedWriteGeneric ThisType
Definition mtsCommandQueuedWrite.h:213
mtsCommandQueuedWriteGeneric(mtsMailBox *mailBox, mtsCommandWriteBase *actualCommand, size_t size)
virtual const mtsGenericObject * ArgumentPeek(void) const
Definition mtsCommandQueuedWrite.h:269
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking, mtsCommandWriteBase *finishedEventHandler)
size_t ArgumentQueueSize
Definition mtsCommandQueuedWrite.h:215
virtual mtsCommandQueuedWriteGeneric * Clone(mtsMailBox *mailBox, size_t size) const
Definition mtsCommandQueuedWrite.h:243
mtsQueueGeneric ArgumentsQueue
Definition mtsCommandQueuedWrite.h:217
mtsCommandQueuedWriteBase BaseType
Definition mtsCommandQueuedWrite.h:212
virtual void ToStream(std::ostream &outputStream) const
virtual ~mtsCommandQueuedWriteGeneric()
Definition mtsCommandQueuedWrite.h:238
virtual ~mtsCommandQueuedWrite()
Definition mtsCommandQueuedWrite.h:93
const mtsGenericObject * GetArgumentPrototype(void) const
Definition mtsCommandQueuedWrite.h:189
_argumentType ArgumentType
Definition mtsCommandQueuedWrite.h:46
virtual mtsGenericObject * ArgumentGet(void)
Definition mtsCommandQueuedWrite.h:198
mtsCommandQueuedWrite(mtsMailBox *mailBox, mtsCommandWriteBase *actualCommand, size_t size)
Definition mtsCommandQueuedWrite.h:75
mtsCommandQueuedWriteBase BaseType
Definition mtsCommandQueuedWrite.h:45
mtsCommandQueuedWrite(void)
Definition mtsCommandQueuedWrite.h:63
mtsGenericTypesUnwrap< ArgumentQueueType >::BaseType ArgumentQueueBaseType
Definition mtsCommandQueuedWrite.h:48
virtual const mtsGenericObject * ArgumentPeek(void) const
Definition mtsCommandQueuedWrite.h:193
mtsCommandQueuedWrite(mtsCommandWriteBase *actualCommand)
Definition mtsCommandQueuedWrite.h:69
virtual void Allocate(size_t size)
Definition mtsCommandQueuedWrite.h:102
mtsGenericTypes< ArgumentType >::FinalType ArgumentQueueType
Definition mtsCommandQueuedWrite.h:47
mtsQueue< ArgumentQueueType > ArgumentsQueue
Definition mtsCommandQueuedWrite.h:55
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking, mtsCommandWriteBase *finishedEventHandler)
Definition mtsCommandQueuedWrite.h:122
virtual mtsCommandQueuedWriteBase * Clone(mtsMailBox *mailBox, size_t size) const
Definition mtsCommandQueuedWrite.h:96
mtsCommandQueuedWrite< ArgumentType > ThisType
Definition mtsCommandQueuedWrite.h:51
Definition mtsCommandWriteBase.h:40
virtual const mtsGenericObject * GetArgumentPrototype(void) const
Definition mtsCommandWriteBase.h:93
mtsCommandWriteBase(void)
Definition mtsCommandWriteBase.h:49
friend class mtsCommandQueuedWriteGeneric
Definition mtsCommandWriteBase.h:43
Definition mtsExecutionResult.h:34
@ COMMAND_QUEUED
Definition mtsExecutionResult.h:44
@ UNDEFINED
Definition mtsExecutionResult.h:44
@ COMMAND_HAS_NO_MAILBOX
Definition mtsExecutionResult.h:44
@ COMMAND_ARGUMENT_QUEUE_FULL
Definition mtsExecutionResult.h:44
@ INVALID_INPUT_TYPE
Definition mtsExecutionResult.h:44
@ COMMAND_DISABLED
Definition mtsExecutionResult.h:44
Base class for data object in cisstMultiTask.
Definition mtsGenericObject.h:52
mtsGenericTypesImpl< T, cmnIsDerivedFrom< T, mtsGenericObject >::IS_DERIVED >::FinalType FinalType
Definition mtsGenericObjectProxy.h:686
mtsGenericTypesUnwrapImpl< T, cmnIsDerivedFromTemplated< T, mtsGenericObjectProxyBase >::IS_DERIVED >::BaseType BaseType
Definition mtsGenericObjectProxy.h:732
Definition mtsMailBox.h:36
bool Write(mtsCommandBase *command)
Definition mtsQueue.h:197
pointer Peek(void) const
Definition mtsQueue.h:360
pointer Get(void)
Definition mtsQueue.h:371
bool IsFull(void) const
Definition mtsQueue.h:124
pointer Get(void)
Definition mtsQueue.h:179
pointer Peek(void) const
Definition mtsQueue.h:168
const_pointer Put(const typename mtsGenericTypesUnwrap< value_type >::BaseType &newObject)
Definition mtsQueue.h:146
size_type GetSize(void) const
Definition mtsQueue.h:106
void SetSize(size_type size, const_reference value)
Definition mtsQueue.h:99
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CMN_LOG_RUN_ERROR
Definition cmnLogger.h:166
#define CMN_LOG_RUN_WARNING
Definition cmnLogger.h:167
#define CMN_LOG_INIT_WARNING
Definition cmnLogger.h:163
#define CMN_LOG_INIT_ERROR
Definition cmnLogger.h:162
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
Defines base class for a queued write command.
mtsBlockingType
Definition mtsForwardDeclarations.h:54
@ MTS_NOT_BLOCKING
Definition mtsForwardDeclarations.h:54
size_type size(void) const
Definition vctDynamicConstMatrixBase.h:228