pxmlw6n2f/Gazebo_Distributed_TCP/gazebo/common/Event.cc

103 lines
2.5 KiB
C++
Raw Permalink Normal View History

2019-03-28 10:57:49 +08:00
/*
* Copyright (C) 2012 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include "gazebo/common/Console.hh"
#include "gazebo/common/Event.hh"
using namespace gazebo;
using namespace event;
//////////////////////////////////////////////////
EventPrivate::EventPrivate()
: signaled(false)
{
}
//////////////////////////////////////////////////
Event::Event()
: dataPtr(new EventPrivate())
{
}
//////////////////////////////////////////////////
Event::Event(EventPrivate &_d)
: dataPtr(&_d)
{
}
//////////////////////////////////////////////////
Event::~Event()
{
delete this->dataPtr;
this->dataPtr = NULL;
}
//////////////////////////////////////////////////
bool Event::GetSignaled() const
{
return this->dataPtr->signaled;
}
//////////////////////////////////////////////////
ConnectionPrivate::ConnectionPrivate()
: event(NULL), id(-1)
{
}
//////////////////////////////////////////////////
ConnectionPrivate::ConnectionPrivate(Event *_e, int _i)
: event(_e), id(_i)
{
}
//////////////////////////////////////////////////
Connection::Connection()
: dataPtr(new ConnectionPrivate())
{
}
//////////////////////////////////////////////////
Connection::Connection(Event *_e, int _i)
: dataPtr(new ConnectionPrivate(_e, _i))
{
this->dataPtr->creationTime = common::Time::GetWallTime();
}
//////////////////////////////////////////////////
Connection::~Connection()
{
common::Time diffTime = common::Time::GetWallTime() -
this->dataPtr->creationTime;
if ((this->dataPtr->event && !this->dataPtr->event->GetSignaled()) &&
diffTime < common::Time(0, 10000))
gzwarn << "Warning: Deleteing a connection right after creation. "
<< "Make sure to save the ConnectionPtr from a Connect call\n";
if (this->dataPtr->event && this->dataPtr->id >= 0)
{
this->dataPtr->event->Disconnect(this->dataPtr->id);
this->dataPtr->id = -1;
this->dataPtr->event = NULL;
}
}
//////////////////////////////////////////////////
int Connection::GetId() const
{
return this->dataPtr->id;
}