Skip to content

Commit b3f1c5a

Browse files
committed
merge m_futureTable and m_asyncFutureTable together.
1 parent cbe5f33 commit b3f1c5a

File tree

2 files changed

+11
-35
lines changed

2 files changed

+11
-35
lines changed

src/transport/TcpRemotingClient.cpp

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ void TcpRemotingClient::boost_asio_work() {
6767
TcpRemotingClient::~TcpRemotingClient() {
6868
m_tcpTable.clear();
6969
m_futureTable.clear();
70-
m_asyncFutureTable.clear();
7170
m_namesrvAddrList.clear();
7271
removeAllTimerCallback();
7372
}
@@ -93,8 +92,11 @@ void TcpRemotingClient::stopAllTcpTransportThread() {
9392
{
9493
std::lock_guard<std::mutex> lock(m_futureTableLock);
9594
for (const auto& future : m_futureTable) {
96-
if (future.second)
97-
future.second->releaseThreadCondition();
95+
if (future.second) {
96+
if (!future.second->getAsyncFlag()) {
97+
future.second->releaseThreadCondition();
98+
}
99+
}
98100
}
99101
}
100102

@@ -222,7 +224,7 @@ bool TcpRemotingClient::invokeAsync(const string& addr,
222224
responseFuture->setRetrySendTimes(retrySendTimes);
223225
responseFuture->setBrokerAddr(addr);
224226
responseFuture->setRequestCommand(request);
225-
addAsyncResponseFuture(opaque, responseFuture);
227+
addResponseFuture(opaque, responseFuture);
226228

227229
// timeout monitor
228230
boost::asio::deadline_timer* t =
@@ -468,14 +470,11 @@ void TcpRemotingClient::ProcessData(const MemoryBlock& mem, const string& addr)
468470

469471
//<!process self;
470472
if (pRespondCmd->isResponseType()) {
471-
std::shared_ptr<ResponseFuture> pFuture = findAndDeleteAsyncResponseFuture(opaque);
473+
std::shared_ptr<ResponseFuture> pFuture = findAndDeleteResponseFuture(opaque);
472474
if (!pFuture) {
473-
pFuture = findAndDeleteResponseFuture(opaque);
474-
if (!pFuture) {
475-
LOG_DEBUG("responseFuture was deleted by timeout of opaque:%d", opaque);
476-
deleteAndZero(pRespondCmd);
477-
return;
478-
}
475+
LOG_DEBUG("responseFuture was deleted by timeout of opaque:%d", opaque);
476+
deleteAndZero(pRespondCmd);
477+
return;
479478
}
480479

481480
LOG_DEBUG("find_response opaque:%d", opaque);
@@ -514,7 +513,7 @@ void TcpRemotingClient::handleAsyncRequestTimeout(const boost::system::error_cod
514513

515514
LOG_DEBUG("handleAsyncRequestTimeout opaque:%d, e_code:%d, msg:%s", opaque, e.value(), e.message().data());
516515

517-
std::shared_ptr<ResponseFuture> pFuture(findAndDeleteAsyncResponseFuture(opaque));
516+
std::shared_ptr<ResponseFuture> pFuture(findAndDeleteResponseFuture(opaque));
518517
if (pFuture) {
519518
LOG_ERROR("no response got for opaque:%d", opaque);
520519
eraseTimerCallback(opaque);
@@ -560,23 +559,6 @@ std::shared_ptr<ResponseFuture> TcpRemotingClient::findAndDeleteResponseFuture(i
560559
return pResponseFuture;
561560
}
562561

563-
void TcpRemotingClient::addAsyncResponseFuture(int opaque, std::shared_ptr<ResponseFuture> pFuture) {
564-
std::lock_guard<std::mutex> lock(m_asyncFutureTableLock);
565-
m_asyncFutureTable[opaque] = pFuture;
566-
}
567-
568-
// Note: after call this function, shared_ptr of m_asyncFutureTable[opaque] will
569-
// be erased, so caller must ensure the life cycle of returned shared_ptr;
570-
std::shared_ptr<ResponseFuture> TcpRemotingClient::findAndDeleteAsyncResponseFuture(int opaque) {
571-
std::lock_guard<std::mutex> lock(m_asyncFutureTableLock);
572-
std::shared_ptr<ResponseFuture> pResponseFuture;
573-
if (m_asyncFutureTable.find(opaque) != m_asyncFutureTable.end()) {
574-
pResponseFuture = m_asyncFutureTable[opaque];
575-
m_asyncFutureTable.erase(opaque);
576-
}
577-
return pResponseFuture;
578-
}
579-
580562
void TcpRemotingClient::registerProcessor(MQRequestCode requestCode, ClientRemotingProcessor* clientRemotingProcessor) {
581563
if (m_requestTable.find(requestCode) != m_requestTable.end())
582564
m_requestTable.erase(requestCode);

src/transport/TcpRemotingClient.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,6 @@ class TcpRemotingClient {
8181
void addResponseFuture(int opaque, std::shared_ptr<ResponseFuture> pFuture);
8282
std::shared_ptr<ResponseFuture> findAndDeleteResponseFuture(int opaque);
8383

84-
void addAsyncResponseFuture(int opaque, std::shared_ptr<ResponseFuture> pFuture);
85-
std::shared_ptr<ResponseFuture> findAndDeleteAsyncResponseFuture(int opaque);
86-
8784
void addTimerCallback(boost::asio::deadline_timer* t, int opaque);
8885
void eraseTimerCallback(int opaque);
8986
void cancelTimerCallback(int opaque);
@@ -105,9 +102,6 @@ class TcpRemotingClient {
105102
ResMap m_futureTable; //<! id->future;
106103
std::mutex m_futureTableLock;
107104

108-
ResMap m_asyncFutureTable;
109-
std::mutex m_asyncFutureTableLock;
110-
111105
AsyncTimerMap m_asyncTimerTable;
112106
std::mutex m_asyncTimerTableLock;
113107

0 commit comments

Comments
 (0)