cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsCommandQueuedWriteBase.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Ankur Kapoor, Peter Kazanzides, Anton Deguet
7  Created on: 2005-05-02
8 
9  (C) Copyright 2005-2014 Johns Hopkins University (JHU), All Rights Reserved.
10 
11 --- begin cisst license - do not edit ---
12 
13 This software is provided "as is" under an open source license, with
14 no warranty. The complete license can be found in license.txt and
15 http://www.cisst.org/cisst/license.txt.
16 
17 --- end cisst license ---
18 */
19 
20 
26 #ifndef _mtsCommandQueuedWriteBase_h
27 #define _mtsCommandQueuedWriteBase_h
28 
31 
32 // Always include last
34 
36 
38 protected:
42 
46 
51 
53  BaseType("??"),
54  MailBox(0),
55  ActualCommand(0),
56  BlockingFlagQueue(0, MTS_NOT_BLOCKING)
57  {
58  mtsCommandWriteBase *cmd = 0;
59  FinishedEventQueue.SetSize(0, cmd);
60  }
61 
62 public:
63  inline mtsCommandQueuedWriteBase(mtsMailBox * mailBox, mtsCommandWriteBase * actualCommand, size_t size):
64  BaseType(actualCommand->GetName()),
65  MailBox(mailBox),
66  ActualCommand(actualCommand),
67  BlockingFlagQueue(size, MTS_NOT_BLOCKING)
68  {
69  mtsCommandWriteBase *cmd = 0;
70  FinishedEventQueue.SetSize(size, cmd);
71  this->SetArgumentPrototype(ActualCommand->GetArgumentPrototype());
72  }
73 
74 
75  inline virtual ~mtsCommandQueuedWriteBase() {}
76 
77 
78  inline virtual mtsCommandWriteBase * GetActualCommand(void) {
79  return ActualCommand;
80  }
81 
82 
83  virtual void ToStream(std::ostream & outputStream) const;
84 
85 
86  virtual mtsCommandQueuedWriteBase * Clone(mtsMailBox* mailBox, size_t size) const = 0;
87 
88 
89  // Allocate should be called when a task calls GetMethodXXX().
90  virtual void Allocate(size_t size) = 0;
91 
92 
94  mtsBlockingType blocking);
95 
96 
98  mtsBlockingType blocking,
99  mtsCommandWriteBase *finishedEventHandler) = 0;
100 
101 
102  virtual const mtsGenericObject * ArgumentPeek(void) const = 0;
103 
104 
105  virtual mtsGenericObject * ArgumentGet(void) = 0;
106 
107  mtsBlockingType BlockingFlagGet(void);
108 
109  mtsCommandWriteBase *FinishedEventGet(void);
110 
111  inline virtual const std::string GetMailBoxName(void) const {
112  return this->MailBox ? this->MailBox->GetName() : "NULL";
113  }
114 };
115 
116 #endif // _mtsCommandQueuedWrite_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
mtsQueue< mtsBlockingType > BlockingFlagQueue
Definition: mtsCommandQueuedWriteBase.h:45
Defines a mailbox for communication between tasks.
mtsCommandWriteBase BaseType
Definition: mtsCommandQueuedWriteBase.h:39
virtual const std::string GetMailBoxName(void) const
Definition: mtsCommandQueuedWriteBase.h:111
mtsCommandQueuedWriteBase(void)
Definition: mtsCommandQueuedWriteBase.h:52
Definition: mtsForwardDeclarations.h:55
virtual mtsCommandWriteBase * GetActualCommand(void)
Definition: mtsCommandQueuedWriteBase.h:78
virtual void ToStream(std::ostream &outputStream) const =0
Base class for data object in cisstMultiTask.
Definition: mtsGenericObject.h:56
Defines a base class for a command with one argument.
virtual ~mtsCommandQueuedWriteBase()
Definition: mtsCommandQueuedWriteBase.h:75
Definition: mtsCommandWriteBase.h:40
mtsMailBox * MailBox
Definition: mtsCommandQueuedWriteBase.h:40
Definition: mtsCommandQueuedWriteBase.h:37
virtual void SetArgumentPrototype(const mtsGenericObject *argumentPrototype)
Definition: mtsCommandWriteBase.h:105
Definition: mtsExecutionResult.h:34
mtsCommandQueuedWriteBase(mtsMailBox *mailBox, mtsCommandWriteBase *actualCommand, size_t size)
Definition: mtsCommandQueuedWriteBase.h:63
mtsQueue< mtsCommandWriteBase * > FinishedEventQueue
Definition: mtsCommandQueuedWriteBase.h:50
Rules of exporting.
virtual mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking)=0
mtsBlockingType
Definition: mtsForwardDeclarations.h:55
Definition: mtsMailBox.h:36
mtsCommandWriteBase * ActualCommand
Definition: mtsCommandQueuedWriteBase.h:41