ewmscp  ..
Public Member Functions | Private Attributes | List of all members
buffqueue Class Reference
Collaboration diagram for buffqueue:
[legend]

Public Member Functions

 buffqueue ()
 
void enqueue (testFile *f)
 
testFiledequeue ()
 
decltype(queue.size()) size ()
 
void endOfInput ()
 

Private Attributes

std::deque< testFile * > queue
 
std::mutex queue_mutex
 
std::condition_variable cv
 
bool expectingInput
 

Detailed Description

Definition at line 51 of file fileopstest.cpp.

Constructor & Destructor Documentation

◆ buffqueue()

buffqueue::buffqueue ( )
inline

Definition at line 58 of file fileopstest.cpp.

58 : expectingInput(true) {};

Member Function Documentation

◆ dequeue()

testFile* buffqueue::dequeue ( )
inline

Definition at line 64 of file fileopstest.cpp.

64  {
65  std::unique_lock<decltype(queue_mutex)> lock(queue_mutex);
66 
67  while (queue.empty()) {
68  if (!expectingInput) {
69  return nullptr;
70  }
71 
72  cv.wait(lock);
73  }
74 
75  auto f = queue.front();
76  queue.pop_front();
77  return f;
78  }

References cv, expectingInput, f(), queue, and queue_mutex.

Referenced by collectStats(), and consumer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ endOfInput()

void buffqueue::endOfInput ( )
inline

Definition at line 82 of file fileopstest.cpp.

82  {
83  expectingInput = false;
84  cv.notify_all();
85  }

References cv, and expectingInput.

Referenced by main().

Here is the caller graph for this function:

◆ enqueue()

void buffqueue::enqueue ( testFile f)
inline

Definition at line 59 of file fileopstest.cpp.

59  {
60  std::unique_lock<decltype(queue_mutex)> lock(queue_mutex);
61  queue.emplace_back(f);
62  cv.notify_all();
63  }

References cv, f(), queue, and queue_mutex.

Referenced by consumer(), and creator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ size()

decltype(queue.size()) buffqueue::size ( )
inline

Definition at line 79 of file fileopstest.cpp.

79  {
80  return queue.size();
81  }

References queue.

Referenced by creator().

Here is the caller graph for this function:

Member Data Documentation

◆ cv

std::condition_variable buffqueue::cv
private

Definition at line 55 of file fileopstest.cpp.

Referenced by dequeue(), endOfInput(), and enqueue().

◆ expectingInput

bool buffqueue::expectingInput
private

Definition at line 56 of file fileopstest.cpp.

Referenced by dequeue(), and endOfInput().

◆ queue

std::deque<testFile*> buffqueue::queue
private

Definition at line 53 of file fileopstest.cpp.

Referenced by dequeue(), enqueue(), and size().

◆ queue_mutex

std::mutex buffqueue::queue_mutex
private

Definition at line 54 of file fileopstest.cpp.

Referenced by dequeue(), and enqueue().


The documentation for this class was generated from the following file:
buffqueue::cv
std::condition_variable cv
Definition: fileopstest.cpp:55
buffqueue::queue
std::deque< testFile * > queue
Definition: fileopstest.cpp:53
buffqueue::expectingInput
bool expectingInput
Definition: fileopstest.cpp:56
buffqueue::queue_mutex
std::mutex queue_mutex
Definition: fileopstest.cpp:54
f
int f(int a, int line)
Definition: cctest.cpp:4