proxygen
Params.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-present, Facebook, Inc.
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 #pragma once
10 
11 #include <boost/variant.hpp>
13 #include <fizz/client/PskCache.h>
14 #include <fizz/protocol/Events.h>
15 #include <fizz/record/Types.h>
16 #include <folly/io/IOBuf.h>
18 
19 namespace fizz {
20 
21 class CertificateVerifier;
22 class ServerExtensions;
23 
24 namespace server {
25 class FizzServerContext;
26 }
27 
28 namespace client {
29 class FizzClientContext;
30 }
31 
32 struct Accept : EventType<Event::Accept> {
34  std::shared_ptr<const server::FizzServerContext> context;
35  std::shared_ptr<ServerExtensions> extensions;
36 };
37 
38 struct Connect : EventType<Event::Connect> {
39  std::shared_ptr<const client::FizzClientContext> context;
40  std::shared_ptr<const CertificateVerifier> verifier;
43  std::shared_ptr<ClientExtensions> extensions;
44 };
45 
46 struct EarlyAppWrite : EventType<Event::EarlyAppWrite> {
48  std::unique_ptr<folly::IOBuf> data;
50 };
51 
52 struct AppWrite : EventType<Event::AppWrite> {
54  std::unique_ptr<folly::IOBuf> data;
56 };
57 
58 struct AppData : EventType<Event::AppData> {
59  std::unique_ptr<folly::IOBuf> data;
60 
61  explicit AppData(std::unique_ptr<folly::IOBuf> buf) : data(std::move(buf)) {}
62 };
63 
64 struct WriteNewSessionTicket : EventType<Event::WriteNewSessionTicket> {
66 };
67 
71 using Param = boost::variant<
81  Finished,
83  KeyUpdate,
84  Alert,
85  Accept,
86  Connect,
87  AppData,
88  AppWrite,
91 
92 class EventVisitor : public boost::static_visitor<Event> {
93  public:
94  template <class T>
95  Event operator()(const T&) const {
96  return T::event;
97  }
98 };
99 
100 // App closes bypass the state machine so aren't in the Param variant.
101 struct AppClose {};
102 
103 } // namespace fizz
std::unique_ptr< folly::IOBuf > data
Definition: Params.h:48
std::shared_ptr< const client::FizzClientContext > context
Definition: Params.h:39
std::shared_ptr< const server::FizzServerContext > context
Definition: Params.h:34
#define T(v)
Definition: http_parser.c:233
std::unique_ptr< folly::IOBuf > data
Definition: Params.h:59
std::shared_ptr< const CertificateVerifier > verifier
Definition: Params.h:40
folly::Optional< client::CachedPsk > cachedPsk
Definition: Params.h:42
boost::variant< ClientHello, ServerHello, EndOfEarlyData, HelloRetryRequest, EncryptedExtensions, CertificateRequest, CompressedCertificate, CertificateMsg, CertificateVerify, Finished, NewSessionTicket, KeyUpdate, Alert, Accept, Connect, AppData, AppWrite, EarlyAppWrite, WriteNewSessionTicket > Param
Definition: Params.h:90
folly::Executor * executor
Definition: Params.h:33
std::shared_ptr< ClientExtensions > extensions
Definition: Params.h:43
std::shared_ptr< ServerExtensions > extensions
Definition: Params.h:35
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
STL namespace.
AppData(std::unique_ptr< folly::IOBuf > buf)
Definition: Params.h:61
Event operator()(const T &) const
Definition: Params.h:95
folly::WriteFlags flags
Definition: Params.h:49
Definition: Actions.h:16
Event
Definition: Events.h:15
std::unique_ptr< folly::IOBuf > Buf
Definition: Types.h:22
folly::Optional< std::string > sni
Definition: Params.h:41
std::unique_ptr< folly::IOBuf > data
Definition: Params.h:54
folly::WriteFlags flags
Definition: Params.h:55