Allow to get the size of the queue.

This commit is contained in:
Chunting Gu
2019-09-04 16:27:01 +08:00
parent ad1016734e
commit 4c413e245d
4 changed files with 14 additions and 7 deletions
+1 -1
View File
@@ -103,7 +103,7 @@ ResponsePtr ClientSession::DoSend(RequestPtr request, bool stream) {
client->set_ssl_verify(ssl_verify_);
client->set_buffer_size(buffer_size_);
client->set_timeout(timeout_);
Error error = client->Request(request, !reuse, stream);
if (error) {
+6 -1
View File
@@ -54,9 +54,14 @@ public:
not_empty_cv_.notify_one();
}
std::size_t Size() const {
std::lock_guard<std::mutex> lock(mutex_);
return message_list_.size();
}
private:
std::list<T> message_list_;
std::mutex mutex_;
mutable std::mutex mutex_;
std::condition_variable not_empty_cv_;
};
+7 -4
View File
@@ -250,10 +250,13 @@ void Server::WorkerRoutine() {
void Server::StopWorkers() {
LOG_INFO("Stopping workers...");
// Clear pending connections.
// The connections will be closed later.
LOG_INFO("Clear pending connections...");
queue_.Clear();
// Clear/drop pending connections.
// The connections will be closed later (see DoStop).
// Alternatively, we can wait for the pending connections to be handled.
if (queue_.Size() != 0) {
LOG_INFO("Clear pending connections...");
queue_.Clear();
}
// Enqueue a null connection to trigger the first worker to stop.
queue_.Push(ConnectionPtr());