int RTPPublisher::waitForSubscribers(int count, int timeoutMs) { RScopeLock lock(_mutex); uint64_t now = Thread::getTimeStampMs(); while (unique_keys(_domainSubs) < (unsigned int)count) { _pubLock.wait(_mutex, timeoutMs); if (timeoutMs > 0 && Thread::getTimeStampMs() - timeoutMs > now) break; } return unique_keys(_domainSubs); }
TEST(lagi_cajun, ReaderParserErrors) { json::UnknownElement ue; std::istringstream missing_comma("[1 2]"); EXPECT_THROW(json::Reader::Read(ue, missing_comma), json::Exception); std::istringstream garbage_after_number("123!"); EXPECT_THROW(json::Reader::Read(ue, garbage_after_number), json::Exception); std::istringstream unexpected_eof("["); EXPECT_THROW(json::Reader::Read(ue, unexpected_eof), json::Exception); std::istringstream bad_initial_token("]"); EXPECT_THROW(json::Reader::Read(ue, bad_initial_token), json::Exception); std::istringstream garbage_after_end("[]a"); EXPECT_THROW(json::Reader::Read(ue, garbage_after_end), json::Exception); std::istringstream empty_str(""); EXPECT_THROW(json::Reader::Read(ue, empty_str), json::Exception); std::istringstream dupe_keys("{\"a\": [], \"a\": 0}"); EXPECT_THROW(json::Reader::Read(ue, dupe_keys), json::Exception); std::istringstream unique_keys("{\"a\": [], \"b\": 0}"); EXPECT_NO_THROW(json::Reader::Read(ue, unique_keys)); }