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()13 void 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)33 void 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