proxygen
Application Struct Reference

Public Member Functions

 Application ()
 
void loop ()
 

Public Attributes

FiberManager fiberManager
 
std::queue< Promise< int > > pendingRequests
 
size_t toSend
 
size_t maxOutstanding
 

Detailed Description

Definition at line 26 of file FibersTestApp.cpp.

Constructor & Destructor Documentation

Application::Application ( )
inline

Definition at line 28 of file FibersTestApp.cpp.

29  : fiberManager(std::make_unique<SimpleLoopController>()),
30  toSend(20),
31  maxOutstanding(5) {}
size_t maxOutstanding
FiberManager fiberManager

Member Function Documentation

void Application::loop ( )
inline

Definition at line 33 of file FibersTestApp.cpp.

References folly::fibers::await(), folly::gen::move, folly::fibers::SimpleLoopController::stop(), and folly::value().

Referenced by main().

33  {
34  if (pendingRequests.size() == maxOutstanding || toSend == 0) {
35  if (pendingRequests.empty()) {
36  return;
37  }
38  intptr_t value = rand() % 1000;
39  std::cout << "Completing request with data = " << value << std::endl;
40 
41  pendingRequests.front().setValue(value);
42  pendingRequests.pop();
43  } else {
44  static size_t id_counter = 1;
45  size_t id = id_counter++;
46  std::cout << "Adding new request with id = " << id << std::endl;
47 
48  fiberManager.addTask([this, id]() {
49  std::cout << "Executing fiber with id = " << id << std::endl;
50 
51  auto result1 = await([this](Promise<int> fiber) {
52  pendingRequests.push(std::move(fiber));
53  });
54 
55  std::cout << "Fiber id = " << id << " got result1 = " << result1
56  << std::endl;
57 
58  auto result2 = await([this](Promise<int> fiber) {
59  pendingRequests.push(std::move(fiber));
60  });
61  std::cout << "Fiber id = " << id << " got result2 = " << result2
62  << std::endl;
63  });
64 
65  if (--toSend == 0) {
66  auto& loopController =
68  loopController.stop();
69  }
70  }
71  }
size_t maxOutstanding
FiberManager fiberManager
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
std::queue< Promise< int > > pendingRequests
static const char *const value
Definition: Conv.cpp:50
LoopController & loopController()
FirstArgOf< F >::type::value_type await(F &&func)

Member Data Documentation

FiberManager Application::fiberManager

Definition at line 73 of file FibersTestApp.cpp.

Referenced by main().

size_t Application::maxOutstanding

Definition at line 77 of file FibersTestApp.cpp.

std::queue<Promise<int> > Application::pendingRequests

Definition at line 75 of file FibersTestApp.cpp.

size_t Application::toSend

Definition at line 76 of file FibersTestApp.cpp.


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