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 
25 #include "ResourceProfileEntity.h"
26 
29 
30 namespace 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));
43  setMemoryUsage(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 
76  {
77  }
78 
79  void
80  ResourceProfileEntity::output(std::ostream& stream) const
81  {
82  Entity::output(stream);
83  }
84 
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
memoryx::Entity::putAttribute
void putAttribute(const ::memoryx::EntityAttributeBasePtr &attr, const ::Ice::Current &=Ice::emptyCurrent) override
Store attribute in entity.
Definition: Entity.cpp:347
memoryx::ResourceProfileEntity::ResourceProfileEntity
ResourceProfileEntity()
Definition: ResourceProfileEntity.cpp:36
memoryx
VirtualRobot headers.
Definition: CommonPlacesTester.cpp:48
memoryx::VariantType::StatisticMeasures
const armarx::VariantTypeId StatisticMeasures
Definition: StatisticMeasures.h:33
IceUtil
Definition: Instance.h:21
memoryx::ResourceProfileEntity::getCpuUsage
StatisticMeasuresBasePtr getCpuUsage(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ResourceProfileEntity.cpp:114
memoryx::Entity::output
void output(std::ostream &stream) const
Definition: Entity.cpp:436
memoryx::Entity::getAttributeValue
virtual armarx::VariantPtr getAttributeValue(const ::std::string &attrName) const
Retrieve value of an attribute from entity.
Definition: Entity.cpp:327
IceInternal::Handle
Definition: forward_declarations.h:8
memoryx::ResourceProfileEntity::getDuration
StatisticMeasuresBasePtr getDuration(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ResourceProfileEntity.cpp:101
StatisticMeasures.h
memoryx::Entity::attributesMutex
std::mutex attributesMutex
Definition: Entity.h:524
memoryx::ResourceProfileEntity::~ResourceProfileEntity
~ResourceProfileEntity() override
Definition: ResourceProfileEntity.cpp:75
memoryx::ResourceProfileEntity::clone
ResourceProfileEntityPtr clone(const Ice::Current &c=Ice::emptyCurrent) const
Definition: ResourceProfileEntity.cpp:92
boost::source
Vertex source(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:661
ResourceProfileEntity.h
memoryx::ResourceProfileEntity::setDuration
void setDuration(const StatisticMeasuresBasePtr &duration, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ResourceProfileEntity.cpp:107
memoryx::Entity::entityMutex
std::shared_mutex entityMutex
Definition: Entity.h:525
memoryx::ResourceProfileEntity::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ResourceProfileEntity.cpp:86
memoryx::EntityAttribute
Attribute of MemoryX entities.
Definition: EntityAttribute.h:49
memoryx::ResourceProfileEntity::getMemoryUsage
StatisticMeasuresBasePtr getMemoryUsage(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ResourceProfileEntity.cpp:127
MemoryXTypesObjectFactories.h
memoryx::ResourceProfileEntity
Definition: ResourceProfileEntity.h:36
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:36
memoryx::Entity
Definition: Entity.h:245
memoryx::ResourceProfileEntity::setCpuUsage
void setCpuUsage(const StatisticMeasuresBasePtr &cpuUsage, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ResourceProfileEntity.cpp:120
memoryx::ResourceProfileEntity::setMemoryUsage
void setMemoryUsage(const StatisticMeasuresBasePtr &memoryUsage, const Ice::Current &c=Ice::emptyCurrent) override
Definition: ResourceProfileEntity.cpp:133
memoryx::Entity::wrappersMutex
std::recursive_mutex wrappersMutex
Definition: Entity.h:526
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27