Skip to content
Snippets Groups Projects
Commit eacbb137 authored by Simon Ottenhaus's avatar Simon Ottenhaus
Browse files

fixed reference counting problem testing maybe needed?

parent 535e905b
No related branches found
No related tags found
No related merge requests found
......@@ -50,6 +50,7 @@ void SharedObjectBase::ref(const Current &c)
boost::lock_guard<boost::mutex> lock(this->_counterMutex);
_referenceCount++;
#ifdef VERBOSE
ARMARX_LOG_S << "ref: " << _referenceCount << " " << this << flush;
#endif
......
......@@ -25,6 +25,21 @@ namespace armarx {
this->referenceRobot = NULL;
}
LinkedPose::LinkedPose(const LinkedPose &other) :
IceUtil::Shared(other),
PoseBase(other),
FramedPoseBase(other),
LinkedPoseBase(other),
Pose(other),
FramedPose(other)
{
if(referenceRobot)
{
//ARMARX_WARNING_S << "Calling referenceRobot->ref() in cctor of LinkedPose";
referenceRobot->ref();
}
}
LinkedPose::LinkedPose(const Eigen::Matrix3f& m, const Eigen::Vector3f& v, const std::string& s, const SharedRobotInterfacePrx& referenceRobot) :
Pose(m, v),
FramedPose(m, v, s)
......@@ -130,6 +145,46 @@ namespace armarx {
}
}
void LinkedPose::__read(IceInternal::BasicStream *__is, bool __rid)
{
LinkedPoseBase::__read(__is, __rid);
if(referenceRobot)
{
//ARMARX_WARNING_S << "Calling referenceRobot->ref() in __read(IceInternal::BasicStream *__is, bool __rid) of LinkedPose";
referenceRobot->ref();
}
}
void LinkedPose::__read(const Ice::InputStreamPtr &__is, bool __rid)
{
LinkedPoseBase::__read(__is, __rid);
if(referenceRobot)
{
//ARMARX_WARNING_S << "Calling referenceRobot->ref() in __read(const Ice::InputStreamPtr &__is, bool __rid) of LinkedPose";
referenceRobot->ref();
}
}
/*void LinkedPose::__write(IceInternal::BasicStream *__os) const
{
LinkedPoseBase::__write(__os);
if(referenceRobot)
{
ARMARX_WARNING_S << "Calling referenceRobot->ref() in __write(IceInternal::BasicStream *__os) of LinkedPose";
referenceRobot->ref();
}
}
void LinkedPose::__write(const Ice::OutputStreamPtr &__os) const
{
LinkedPoseBase::__write(__os);
if(referenceRobot)
{
ARMARX_WARNING_S << "Calling referenceRobot->ref() in __write(const Ice::OutputStreamPtr &__os) of LinkedPose";
referenceRobot->ref();
}
}*/
LinkedVector3::LinkedVector3()
{
}
......
......@@ -61,6 +61,7 @@ namespace armarx
{
public:
LinkedPose();
LinkedPose(const LinkedPose &other);
LinkedPose(const Eigen::Matrix3f& m, const Eigen::Vector3f& v, const std::string& frame, const SharedRobotInterfacePrx& referenceRobot);
LinkedPose(const Eigen::Matrix4f& m, const std::string& frame, const SharedRobotInterfacePrx& referenceRobot);
......@@ -125,6 +126,9 @@ namespace armarx
public:
virtual void serialize(const armarx::ObjectSerializerBasePtr& serializer, const ::Ice::Current& = ::Ice::Current()) const;
virtual void deserialize(const armarx::ObjectSerializerBasePtr& serializer, const ::Ice::Current& = ::Ice::Current());
virtual void __read(::IceInternal::BasicStream *__is, bool __rid);
virtual void __read(const ::Ice::InputStreamPtr &__is, bool __rid);
};
typedef IceInternal::Handle<LinkedPose> LinkedPosePtr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment