- bool putMessageImpl(
- const MessageT& message, size_t maxSize, bool throws=true) {
- checkPid();
- bool signal = false;
- {
- folly::SpinLockGuard g(spinlock_);
- if (checkDraining(throws) || !checkQueueSize(maxSize, throws)) {
- return false;
- }
- if (numActiveConsumers_ < numConsumers_) {
- signal = true;
- }
- queue_.emplace_back(message, RequestContext::saveContext());
- if (signal) {
- ensureSignalLocked();
- }
- }
- return true;
- }
-
- template<typename InputIteratorT>