TransferReceiver - fixed assignment operator

This commit is contained in:
Pavel Kirienko
2014-02-10 18:46:26 +04:00
parent b2adf25485
commit e9680c04d0
3 changed files with 31 additions and 3 deletions
@@ -34,6 +34,8 @@ private:
bool isInitialized() const { return iface_index_ != IFACE_INDEX_NOTSET; }
void cleanup();
TidRelation getTidRelation(const RxFrame& frame) const;
void updateTransferTimings();
@@ -42,6 +44,8 @@ private:
bool validate(const RxFrame& frame) const;
ResultCode receive(const RxFrame& frame);
TransferReceiver(const TransferReceiver&); // = delete (not needed)
public:
TransferReceiver()
: prev_transfer_timestamp_(0)
@@ -68,10 +72,20 @@ public:
assert(node_id != NODE_ID_BROADCAST);
}
~TransferReceiver()
~TransferReceiver() { cleanup(); }
TransferReceiver& operator=(const TransferReceiver& rhs)
{
if (bufmgr_ != NULL && node_id_ != NODE_ID_INVALID)
bufmgr_->remove(node_id_);
cleanup();
prev_transfer_timestamp_ = rhs.prev_transfer_timestamp_;
this_transfer_timestamp_ = rhs.this_transfer_timestamp_;
transfer_interval_ = rhs.transfer_interval_;
bufmgr_ = rhs.bufmgr_;
tid_ = rhs.tid_;
node_id_ = rhs.node_id_;
iface_index_ = rhs.iface_index_;
next_frame_index_ = rhs.next_frame_index_;
return *this;
}
bool isTimedOut(uint64_t timestamp) const;
@@ -16,6 +16,12 @@ const uint64_t TransferReceiver::DEFAULT_TRANSFER_INTERVAL;
const uint64_t TransferReceiver::MIN_TRANSFER_INTERVAL;
const uint64_t TransferReceiver::MAX_TRANSFER_INTERVAL;
void TransferReceiver::cleanup()
{
if (bufmgr_ != NULL && node_id_ != NODE_ID_INVALID)
bufmgr_->remove(node_id_);
}
TransferReceiver::TidRelation TransferReceiver::getTidRelation(const RxFrame& frame) const
{
const int distance = tid_.forwardDistance(frame.transfer_id);
@@ -203,6 +203,14 @@ TEST(TransferReceiver, Basic)
ASSERT_LT(TransferReceiver::DEFAULT_TRANSFER_INTERVAL, rcv.getInterval());
ASSERT_LE(TransferReceiver::MIN_TRANSFER_INTERVAL, rcv.getInterval());
ASSERT_GE(TransferReceiver::MAX_TRANSFER_INTERVAL, rcv.getInterval());
ASSERT_TRUE(matchBufferContent(bufmgr.access(gen.source_node_id), "12345678qwe"));
/*
* Buffer cleanup
*/
ASSERT_TRUE(bufmgr.access(gen.source_node_id));
context.receiver = TransferReceiver();
ASSERT_FALSE(bufmgr.access(gen.source_node_id));
}