proxygen
proxygen::compress::SimStreamingCallback Class Reference

#include <SimStreamingCallback.h>

Inheritance diagram for proxygen::compress::SimStreamingCallback:
proxygen::HPACK::StreamingCallback

Public Member Functions

 SimStreamingCallback (uint16_t index, std::function< void(std::chrono::milliseconds)> cb, bool isP=false)
 
 SimStreamingCallback (SimStreamingCallback &&goner) noexcept
 
void onHeader (const folly::fbstring &name, const folly::fbstring &value) override
 
void onHeadersComplete (HTTPHeaderSize) override
 
void onDecodeError (HPACK::DecodeError decodeError) override
 
folly::Expected< proxygen::HTTPMessage *, HPACK::DecodeErrorgetResult ()
 
void maybeMarkHolDelay ()
 
- Public Member Functions inherited from proxygen::HPACK::StreamingCallback
virtual ~StreamingCallback ()
 

Public Attributes

uint16_t requestIndex {0}
 
uint16_t seqn {0}
 
HPACK::DecodeError error {HPACK::DecodeError::NONE}
 
proxygen::HTTPMessage msg
 
std::function< void(std::chrono::milliseconds)> headersCompleteCb
 
TimePoint holStart {TimeUtil::getZeroTimePoint()}
 
bool complete {false}
 
bool isPublic {false}
 
- Public Attributes inherited from proxygen::HPACK::StreamingCallback
HeaderCodec::Statsstats {nullptr}
 

Detailed Description

Definition at line 19 of file SimStreamingCallback.h.

Constructor & Destructor Documentation

proxygen::compress::SimStreamingCallback::SimStreamingCallback ( uint16_t  index,
std::function< void(std::chrono::milliseconds)>  cb,
bool  isP = false 
)
inline

Definition at line 21 of file SimStreamingCallback.h.

proxygen::compress::SimStreamingCallback::SimStreamingCallback ( SimStreamingCallback &&  goner)
inlinenoexcept

Definition at line 27 of file SimStreamingCallback.h.

References error, headersCompleteCb, msg, requestIndex, seqn, and folly::f14::swap().

27  {
28  std::swap(msg, goner.msg);
29  requestIndex = goner.requestIndex;
30  seqn = goner.seqn;
31  error = goner.error;
32  std::swap(headersCompleteCb, goner.headersCompleteCb);
33  }
std::function< void(std::chrono::milliseconds)> headersCompleteCb
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
Definition: F14TestUtil.h:414

Member Function Documentation

folly::Expected<proxygen::HTTPMessage*, HPACK::DecodeError> proxygen::compress::SimStreamingCallback::getResult ( )
inline

Definition at line 76 of file SimStreamingCallback.h.

References error, folly::makeUnexpected(), msg, and proxygen::HPACK::NONE.

76  {
78  return &msg;
79  } else {
81  }
82  }
constexpr Unexpected< typename std::decay< Error >::type > makeUnexpected(Error &&)
Definition: Expected.h:785
void proxygen::compress::SimStreamingCallback::maybeMarkHolDelay ( )
inline

Definition at line 84 of file SimStreamingCallback.h.

References complete, proxygen::getCurrentTime(), and holStart.

Referenced by proxygen::compress::HPACKScheme::decode(), and proxygen::compress::QPACKScheme::decode().

84  {
85  if (!complete) {
87  }
88  }
std::chrono::time_point< ClockType > getCurrentTime()
Definition: Time.h:41
void proxygen::compress::SimStreamingCallback::onDecodeError ( HPACK::DecodeError  decodeError)
inlineoverridevirtual

Implements proxygen::HPACK::StreamingCallback.

Definition at line 71 of file SimStreamingCallback.h.

References error.

71  {
72  error = decodeError;
73  DCHECK(false) << "Unexpected error in simulator";
74  }
void proxygen::compress::SimStreamingCallback::onHeader ( const folly::fbstring name,
const folly::fbstring value 
)
inlineoverridevirtual

Implements proxygen::HPACK::StreamingCallback.

Definition at line 35 of file SimStreamingCallback.h.

References proxygen::HTTPHeaders::add(), proxygen::HTTPMessage::getHeaders(), proxygen::HTTP_HEADER_HOST, isPublic, proxygen::headers::kAuthority, proxygen::headers::kHttps, proxygen::headers::kMethod, proxygen::headers::kPath, proxygen::headers::kScheme, msg, proxygen::HTTPMessage::setMethod(), proxygen::HTTPMessage::setSecure(), proxygen::HTTPMessage::setURL(), folly::basic_fbstring< E, T, A, Storage >::toStdString(), and value.

Referenced by proxygen::compress::QMINScheme::decode().

36  {
37  if (name[0] == ':' && !isPublic) {
38  if (name == headers::kMethod) {
39  msg.setMethod(value);
40  } else if (name == headers::kScheme) {
41  if (value == headers::kHttps) {
42  msg.setSecure(true);
43  }
44  } else if (name == headers::kAuthority) {
46  } else if (name == headers::kPath) {
47  msg.setURL(value.toStdString());
48  } else {
49  DCHECK(false) << "Bad header name=" << name << " value=" << value;
50  }
51  } else {
52  msg.getHeaders().add(name.toStdString(), value.toStdString());
53  }
54  }
const std::string kScheme
void setSecure(bool secure)
Definition: HTTPMessage.h:534
ParseURL setURL(T &&url)
Definition: HTTPMessage.h:183
std::basic_string< E, T, A > toStdString() const
Definition: FBString.h:1227
static const char *const value
Definition: Conv.cpp:50
HTTPHeaders & getHeaders()
Definition: HTTPMessage.h:273
void setMethod(HTTPMethod method)
const std::string kPath
void add(folly::StringPiece name, folly::StringPiece value)
Definition: HTTPHeaders.cpp:52
const std::string kAuthority
const std::string kMethod
const std::string kHttps
void proxygen::compress::SimStreamingCallback::onHeadersComplete ( HTTPHeaderSize  )
inlineoverridevirtual

Implements proxygen::HPACK::StreamingCallback.

Definition at line 56 of file SimStreamingCallback.h.

References proxygen::HTTPHeaders::combine(), complete, proxygen::HTTPMessage::getHeaders(), proxygen::TimeUtilGeneric< ClockType >::getZeroTimePoint(), headersCompleteCb, holStart, proxygen::HTTP_HEADER_COOKIE, proxygen::millisecondsSince(), msg, and proxygen::HTTPHeaders::set().

Referenced by proxygen::compress::QMINScheme::decode().

56  {
57  auto combinedCookie = msg.getHeaders().combine(HTTP_HEADER_COOKIE, "; ");
58  if (!combinedCookie.empty()) {
59  msg.getHeaders().set(HTTP_HEADER_COOKIE, combinedCookie);
60  }
61  std::chrono::milliseconds holDelay(0);
63  holDelay = millisecondsSince(holStart);
64  }
65  complete = true;
66  if (headersCompleteCb) {
67  headersCompleteCb(holDelay);
68  }
69  }
std::string combine(const T &header, const std::string &separator=COMBINE_SEPARATOR) const
Definition: HTTPHeaders.h:382
void set(folly::StringPiece name, const std::string &value)
Definition: HTTPHeaders.h:119
std::function< void(std::chrono::milliseconds)> headersCompleteCb
HTTPHeaders & getHeaders()
Definition: HTTPMessage.h:273
std::chrono::milliseconds millisecondsSince(std::chrono::time_point< ClockType > t)
Definition: Time.h:101
static const std::chrono::time_point< ClockType > & getZeroTimePoint()
Definition: Time.h:178

Member Data Documentation

bool proxygen::compress::SimStreamingCallback::complete {false}

Definition at line 98 of file SimStreamingCallback.h.

Referenced by maybeMarkHolDelay(), and onHeadersComplete().

HPACK::DecodeError proxygen::compress::SimStreamingCallback::error {HPACK::DecodeError::NONE}

Definition at line 94 of file SimStreamingCallback.h.

Referenced by getResult(), onDecodeError(), and SimStreamingCallback().

std::function<void(std::chrono::milliseconds)> proxygen::compress::SimStreamingCallback::headersCompleteCb

Definition at line 96 of file SimStreamingCallback.h.

Referenced by onHeadersComplete(), and SimStreamingCallback().

TimePoint proxygen::compress::SimStreamingCallback::holStart {TimeUtil::getZeroTimePoint()}

Definition at line 97 of file SimStreamingCallback.h.

Referenced by maybeMarkHolDelay(), and onHeadersComplete().

bool proxygen::compress::SimStreamingCallback::isPublic {false}

Definition at line 99 of file SimStreamingCallback.h.

Referenced by onHeader().

proxygen::HTTPMessage proxygen::compress::SimStreamingCallback::msg
uint16_t proxygen::compress::SimStreamingCallback::requestIndex {0}
uint16_t proxygen::compress::SimStreamingCallback::seqn {0}

The documentation for this class was generated from the following file: