Major new Client fixes.
GitOrigin-RevId: 34c263a4adb3c312328530e1382108d98e9048a3
This commit is contained in:
parent
9ab0880680
commit
871fe2210d
@ -280,7 +280,7 @@ class TdReceiver {
|
|||||||
}
|
}
|
||||||
if (timeout != 0) {
|
if (timeout != 0) {
|
||||||
output_queue_->reader_get_event_fd().wait(static_cast<int>(timeout * 1000));
|
output_queue_->reader_get_event_fd().wait(static_cast<int>(timeout * 1000));
|
||||||
return receive(0);
|
return receive_unlocked(0);
|
||||||
}
|
}
|
||||||
return {0, 0, nullptr};
|
return {0, 0, nullptr};
|
||||||
}
|
}
|
||||||
@ -357,6 +357,8 @@ class MultiImplPool {
|
|||||||
std::shared_ptr<MultiImpl> get() {
|
std::shared_ptr<MultiImpl> get() {
|
||||||
std::unique_lock<std::mutex> lock(mutex_);
|
std::unique_lock<std::mutex> lock(mutex_);
|
||||||
if (impls_.empty()) {
|
if (impls_.empty()) {
|
||||||
|
init_openssl_threads();
|
||||||
|
|
||||||
impls_.resize(clamp(thread::hardware_concurrency(), 8u, 1000u) * 5 / 4);
|
impls_.resize(clamp(thread::hardware_concurrency(), 8u, 1000u) * 5 / 4);
|
||||||
}
|
}
|
||||||
auto &impl = *std::min_element(impls_.begin(), impls_.end(),
|
auto &impl = *std::min_element(impls_.begin(), impls_.end(),
|
||||||
@ -476,8 +478,6 @@ class Client::Impl final {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Client::Client() : impl_(std::make_unique<Impl>()) {
|
Client::Client() : impl_(std::make_unique<Impl>()) {
|
||||||
// At least it should be enough for everybody who uses TDLib
|
|
||||||
init_openssl_threads();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::send(Request &&request) {
|
void Client::send(Request &&request) {
|
||||||
|
@ -915,7 +915,7 @@ TEST(Client, MultiNew) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::set<int32> ids;
|
std::set<int32> ids;
|
||||||
while (ids.size() * threads_n * clients_n) {
|
while (ids.size() != static_cast<size_t>(threads_n) * clients_n) {
|
||||||
auto event = client.receive(10);
|
auto event = client.receive(10);
|
||||||
if (event.client_id != 0 && event.id == 3) {
|
if (event.client_id != 0 && event.id == 3) {
|
||||||
ids.insert(event.client_id);
|
ids.insert(event.client_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user