1 /* 2 * Copyright (c) Facebook, Inc. and its affiliates. 3 * All rights reserved. 4 * 5 * This source code is licensed under the BSD-style license found in the 6 * LICENSE file in the root directory of this source tree. 7 */ 8 9 #include <proxygen/lib/http/HTTPMessageFilters.h> 10 11 namespace proxygen { 12 pause()13void HTTPMessageFilter::pause() noexcept { 14 if (nextElementIsPaused_) { 15 return; 16 } 17 18 nextElementIsPaused_ = true; 19 20 if (prev_.which() == 0) { 21 auto prev = boost::get<HTTPMessageFilter*>(prev_); 22 if (prev) { 23 prev->pause(); 24 } 25 } else { 26 auto prev = boost::get<HTTPTransaction*>(prev_); 27 if (prev) { 28 prev->pauseIngress(); 29 } 30 } 31 } 32 resume(uint64_t offset)33void HTTPMessageFilter::resume(uint64_t offset) noexcept { 34 nextElementIsPaused_ = false; 35 if (prev_.which() == 0) { 36 auto prev = boost::get<HTTPMessageFilter*>(prev_); 37 if (prev) { 38 prev->resume(offset); 39 } 40 } else { 41 auto prev = boost::get<HTTPTransaction*>(prev_); 42 if (prev) { 43 prev->resumeIngress(); 44 } 45 } 46 } 47 48 } // namespace proxygen 49