Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
rtt
base
OperationCallerInterface.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
tag: Peter Soetens Thu Nov 22 00:53:20 2012 +0100 OperationCallerInterface.cpp
3
4
OperationCallerInterface.cpp - description
5
-------------------
6
begin : Thu Nov 22 2012
7
copyright : (C) 2012 Peter Soetens
8
email : peter@thesourceworks.com
9
10
***************************************************************************
11
* This library is free software; you can redistribute it and/or *
12
* modify it under the terms of the GNU General Public *
13
* License as published by the Free Software Foundation; *
14
* version 2 of the License. *
15
* *
16
* As a special exception, you may use this file as part of a free *
17
* software library without restriction. Specifically, if other files *
18
* instantiate templates or use macros or inline functions from this *
19
* file, or you compile this file and link it with other files to *
20
* produce an executable, this file does not by itself cause the *
21
* resulting executable to be covered by the GNU General Public *
22
* License. This exception does not however invalidate any other *
23
* reasons why the executable file might be covered by the GNU General *
24
* Public License. *
25
* *
26
* This library is distributed in the hope that it will be useful, *
27
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
28
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29
* General Public License for more details. *
30
* *
31
* You should have received a copy of the GNU General Public *
32
* License along with this library; if not, write to the Free Software *
33
* Foundation, Inc., 59 Temple Place, *
34
* Suite 330, Boston, MA 02111-1307 USA *
35
* *
36
***************************************************************************/
37
38
39
#include "
OperationCallerInterface.hpp
"
40
#include "../internal/GlobalEngine.hpp"
41
42
using namespace
RTT
;
43
using namespace
base
;
44
using namespace
internal
;
45
46
OperationCallerInterface::OperationCallerInterface
()
47
: myengine(0), caller(0), met(
ClientThread
)
48
{}
49
50
OperationCallerInterface::OperationCallerInterface
(
OperationCallerInterface
const
& orig)
51
:
myengine
(orig.
myengine
),
caller
(orig.
caller
),
met
(orig.
met
)
52
{}
53
54
OperationCallerInterface::~OperationCallerInterface
()
55
{
56
}
57
58
void
OperationCallerInterface::setOwner
(
ExecutionEngine
* ee) {
59
myengine
= ee;
60
}
61
62
void
OperationCallerInterface::setCaller
(
ExecutionEngine
* ee) {
63
caller
= ee;
64
}
65
66
bool
OperationCallerInterface::setThread
(
ExecutionThread
et,
ExecutionEngine
* executor) {
67
met
= et;
68
setOwner
(executor);
69
return
true
;
70
}
71
72
bool
OperationCallerInterface::isSend
()
73
{
74
if
(
met
==
ClientThread
)
return
false
;
75
// OwnThread case:
76
if
(
myengine
->
isSelf
() )
return
false
;
77
return
true
;
// all other OwnThread cases
78
}
79
80
ExecutionEngine
*
OperationCallerInterface::getMessageProcessor
()
const
81
{
82
ExecutionEngine
* ret = (
met
==
OwnThread
?
myengine
:
GlobalEngine::Instance
());
83
if
(ret == 0 )
84
return
GlobalEngine::Instance
();
// best-effort for Operations not tied to an EE
85
return
ret;
86
}
87
88
89
// report an error if an exception was thrown while calling exec()
90
void
OperationCallerInterface::reportError
() {
91
// This localOperation was added to a TaskContext or to a Service owned by a TaskContext
92
if
(this->
myengine
!= 0)
93
this->
myengine
->
setExceptionTask
();
94
}
95
RTT::base::OperationCallerInterface::~OperationCallerInterface
virtual ~OperationCallerInterface()
Definition:
OperationCallerInterface.cpp:54
RTT::base::OperationCallerInterface
Definition:
OperationCallerInterface.hpp:53
RTT::ExecutionEngine::isSelf
bool isSelf() const
Definition:
ExecutionEngine.cpp:287
RTT::base::OperationCallerInterface::setThread
bool setThread(ExecutionThread et, ExecutionEngine *executor)
Definition:
OperationCallerInterface.cpp:66
RTT::base::OperationCallerInterface::setCaller
virtual void setCaller(ExecutionEngine *ee)
Definition:
OperationCallerInterface.cpp:62
RTT::OwnThread
Definition:
OperationBase.hpp:59
RTT::base::OperationCallerInterface::isSend
bool isSend()
Definition:
OperationCallerInterface.cpp:72
RTT::base::OperationCallerInterface::reportError
void reportError()
Definition:
OperationCallerInterface.cpp:90
RTT::ExecutionEngine
Definition:
ExecutionEngine.hpp:69
RTT::base::OperationCallerInterface::caller
ExecutionEngine * caller
Definition:
OperationCallerInterface.hpp:125
RTT::base::OperationCallerInterface::met
ExecutionThread met
Definition:
OperationCallerInterface.hpp:126
RTT::base::OperationCallerInterface::myengine
ExecutionEngine * myengine
Definition:
OperationCallerInterface.hpp:124
RTT::base::OperationCallerInterface::OperationCallerInterface
OperationCallerInterface()
Definition:
OperationCallerInterface.cpp:46
RTT::base::OperationCallerInterface::setOwner
virtual void setOwner(ExecutionEngine *ee)
Definition:
OperationCallerInterface.cpp:58
RTT::internal::GlobalEngine::Instance
static RTT_API ExecutionEngine * Instance()
Definition:
GlobalEngine.hpp:70
RTT::base::OperationCallerInterface::getMessageProcessor
ExecutionEngine * getMessageProcessor() const
Definition:
OperationCallerInterface.cpp:80
base
internal
RTT::ExecutionEngine::setExceptionTask
void setExceptionTask()
Definition:
ExecutionEngine.cpp:412
OperationCallerInterface.hpp
RTT
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition:
Activity.cpp:53
RTT::ClientThread
Definition:
OperationBase.hpp:59
RTT::ExecutionThread
ExecutionThread
Definition:
OperationBase.hpp:59
rtt
Author(s): RTT Developers
autogenerated on Fri Oct 25 2019 03:59:34