ResourceProfileEntity.cpp
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5 *
6 * ArmarX is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * ArmarX is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * @package MemoryX::Core::MemoryTypes
19 * @author Manfred Kroehnert (Manfred dot Kroehnert at kit dot edu)
20 * @date 2015
21 * @copyright http://www.gnu.org/licenses/gpl.txt
22 * GNU General Public License
23 */
24
26
29
30namespace memoryx
31{
32 const std::string ResourceProfileEntity::DURATION = "duration";
33 const std::string ResourceProfileEntity::CPU_USAGE = "cpuUsage";
34 const std::string ResourceProfileEntity::MEMORY_USAGE = "memoryUsage";
35
37 {
38 initializeAttributes();
39
40 // initialize with 0 values
41 setDuration(new StatisticMeasures(0, 0, 0));
42 setCpuUsage(new StatisticMeasures(0, 0, 0));
44 }
45
46 ResourceProfileEntity::ResourceProfileEntity(const StatisticMeasuresBasePtr& duration,
47 const StatisticMeasuresBasePtr& cpuUsage,
48 const StatisticMeasuresBasePtr& memoryUsage) :
49 Entity()
50 {
51 initializeAttributes();
52
53 setDuration(duration);
54 setCpuUsage(cpuUsage);
55 setMemoryUsage(memoryUsage);
56 }
57
58 void
59 ResourceProfileEntity::initializeAttributes()
60 {
61 putAttribute(new EntityAttribute(DURATION));
62 putAttribute(new EntityAttribute(CPU_USAGE));
63 putAttribute(new EntityAttribute(MEMORY_USAGE));
64 }
65
67 IceUtil::Shared(source),
68 ::armarx::Serializable(source),
69 EntityBase(), // dont copy
70 ResourceProfileEntityBase(source),
71 Entity(source)
72 {
73 }
74
78
79 void
80 ResourceProfileEntity::output(std::ostream& stream) const
81 {
82 Entity::output(stream);
83 }
84
85 Ice::ObjectPtr
87 {
88 return this->clone();
89 }
90
92 ResourceProfileEntity::clone(const Ice::Current& context) const
93 {
94 std::shared_lock entityLock(entityMutex);
95 std::scoped_lock attributesLock(attributesMutex);
96 std::scoped_lock wrappersLock(wrappersMutex);
97 return new ResourceProfileEntity(*this);
98 }
99
100 StatisticMeasuresBasePtr
101 ResourceProfileEntity::getDuration(const Ice::Current& context) const
102 {
103 return getAttributeValue(DURATION)->get<StatisticMeasuresBase>();
104 }
105
106 void
107 ResourceProfileEntity::setDuration(const StatisticMeasuresBasePtr& duration,
108 const Ice::Current& context)
109 {
110 putAttribute(DURATION, duration);
111 }
112
113 StatisticMeasuresBasePtr
114 ResourceProfileEntity::getCpuUsage(const Ice::Current& context) const
115 {
116 return getAttributeValue(CPU_USAGE)->get<StatisticMeasuresBase>();
117 }
118
119 void
120 ResourceProfileEntity::setCpuUsage(const StatisticMeasuresBasePtr& cpuUsage,
121 const Ice::Current& context)
122 {
123 putAttribute(CPU_USAGE, cpuUsage);
124 }
125
126 StatisticMeasuresBasePtr
127 ResourceProfileEntity::getMemoryUsage(const Ice::Current& context) const
128 {
129 return getAttributeValue(MEMORY_USAGE)->get<StatisticMeasuresBase>();
130 }
131
132 void
133 ResourceProfileEntity::setMemoryUsage(const StatisticMeasuresBasePtr& memoryUsage,
134 const Ice::Current& context)
135 {
136 putAttribute(MEMORY_USAGE, memoryUsage);
137 }
138} // namespace memoryx
Attribute of MemoryX entities.
Entity(const Entity &source)
Definition Entity.cpp:34
virtual armarx::VariantPtr getAttributeValue(const ::std::string &attrName) const
Retrieve value of an attribute from entity.
Definition Entity.cpp:327
std::mutex attributesMutex
Definition Entity.h:524
std::recursive_mutex wrappersMutex
Definition Entity.h:526
void output(std::ostream &stream) const
Definition Entity.cpp:436
void putAttribute(const ::memoryx::EntityAttributeBasePtr &attr, const ::Ice::Current &=Ice::emptyCurrent) override
Store attribute in entity.
Definition Entity.cpp:347
std::shared_mutex entityMutex
Definition Entity.h:525
ResourceProfileEntityPtr clone(const Ice::Current &c=Ice::emptyCurrent) const
StatisticMeasuresBasePtr getCpuUsage(const Ice::Current &c=Ice::emptyCurrent) const override
StatisticMeasuresBasePtr getDuration(const Ice::Current &c=Ice::emptyCurrent) const override
void setMemoryUsage(const StatisticMeasuresBasePtr &memoryUsage, const Ice::Current &c=Ice::emptyCurrent) override
StatisticMeasuresBasePtr getMemoryUsage(const Ice::Current &c=Ice::emptyCurrent) const override
Ice::ObjectPtr ice_clone() const override
void setCpuUsage(const StatisticMeasuresBasePtr &cpuUsage, const Ice::Current &c=Ice::emptyCurrent) override
void setDuration(const StatisticMeasuresBasePtr &duration, const Ice::Current &c=Ice::emptyCurrent) override
This file offers overloads of toIce() and fromIce() functions for STL container types.
VirtualRobot headers.
IceInternal::Handle< ResourceProfileEntity > ResourceProfileEntityPtr