Skip to content

Commit a012103

Browse files
committed
Expose Sender::checkTimeouts() as public method.
Will be used by a future non-polling interface.
1 parent f428a9f commit a012103

File tree

4 files changed

+29
-28
lines changed

4 files changed

+29
-28
lines changed

src/Mock/MockSender.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class MockSender : public Core::Sender {
4646
(override));
4747
MOCK_METHOD(void, handleErrorPacket, (Driver::Packet * packet), (override));
4848
MOCK_METHOD(void, poll, (), (override));
49+
MOCK_METHOD(void, checkTimeouts, (), (override));
4950
};
5051

5152
} // namespace Mock

src/Sender.cc

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,22 @@ Sender::poll()
517517
checkTimeouts();
518518
}
519519

520+
/**
521+
* Make incremental progress processing expired Sender timeouts.
522+
*
523+
* Pulled out of poll() for ease of testing.
524+
*/
525+
void
526+
Sender::checkTimeouts()
527+
{
528+
uint index = nextBucketIndex.fetch_add(1, std::memory_order_relaxed) &
529+
MessageBucketMap::HASH_KEY_MASK;
530+
MessageBucket* bucket = messageBuckets.buckets.at(index);
531+
uint64_t now = PerfUtils::Cycles::rdtsc();
532+
checkPingTimeouts(now, bucket);
533+
checkMessageTimeouts(now, bucket);
534+
}
535+
520536
/**
521537
* Destruct a Message. Will release all contained Packet objects.
522538
*/
@@ -993,22 +1009,6 @@ Sender::checkPingTimeouts(uint64_t now, MessageBucket* bucket)
9931009
}
9941010
}
9951011

996-
/**
997-
* Process any Sender timeouts that have expired.
998-
*
999-
* Pulled out of poll() for ease of testing.
1000-
*/
1001-
void
1002-
Sender::checkTimeouts()
1003-
{
1004-
uint index = nextBucketIndex.fetch_add(1, std::memory_order_relaxed) &
1005-
MessageBucketMap::HASH_KEY_MASK;
1006-
MessageBucket* bucket = messageBuckets.buckets.at(index);
1007-
uint64_t now = PerfUtils::Cycles::rdtsc();
1008-
checkPingTimeouts(now, bucket);
1009-
checkMessageTimeouts(now, bucket);
1010-
}
1011-
10121012
/**
10131013
* Send out packets for any messages with unscheduled/granted bytes.
10141014
*

src/Sender.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class Sender {
5454
virtual void handleUnknownPacket(Driver::Packet* packet);
5555
virtual void handleErrorPacket(Driver::Packet* packet);
5656
virtual void poll();
57+
virtual void checkTimeouts();
5758

5859
private:
5960
/// Forward declarations
@@ -403,7 +404,6 @@ class Sender {
403404
void dropMessage(Sender::Message* message);
404405
void checkMessageTimeouts(uint64_t now, MessageBucket* bucket);
405406
void checkPingTimeouts(uint64_t now, MessageBucket* bucket);
406-
void checkTimeouts();
407407
void trySend();
408408

409409
/// Transport identifier.

src/SenderTest.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,6 +1087,17 @@ TEST_F(SenderTest, poll)
10871087
sender->poll();
10881088
}
10891089

1090+
TEST_F(SenderTest, checkTimeouts)
1091+
{
1092+
Sender::MessageBucket* bucket = sender->messageBuckets.buckets.at(0);
1093+
1094+
EXPECT_EQ(0, sender->nextBucketIndex.load());
1095+
1096+
sender->checkTimeouts();
1097+
1098+
EXPECT_EQ(1, sender->nextBucketIndex.load());
1099+
}
1100+
10901101
TEST_F(SenderTest, Message_destructor)
10911102
{
10921103
const int MAX_RAW_PACKET_LENGTH = 2000;
@@ -1702,17 +1713,6 @@ TEST_F(SenderTest, checkPingTimeouts)
17021713
EXPECT_EQ(10001, message[5]->pingTimeout.expirationCycleTime);
17031714
}
17041715

1705-
TEST_F(SenderTest, checkTimeouts)
1706-
{
1707-
Sender::MessageBucket* bucket = sender->messageBuckets.buckets.at(0);
1708-
1709-
EXPECT_EQ(0, sender->nextBucketIndex.load());
1710-
1711-
sender->checkTimeouts();
1712-
1713-
EXPECT_EQ(1, sender->nextBucketIndex.load());
1714-
}
1715-
17161716
TEST_F(SenderTest, trySend_basic)
17171717
{
17181718
Protocol::MessageId id = {42, 10};

0 commit comments

Comments
 (0)