WSF
WsfEventPipeFileWriteWorker.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEVENTPIPEFILEWRITEWORKER_HPP
13#define WSFEVENTPIPEFILEWRITEWORKER_HPP
14
15#include <condition_variable>
16#include <mutex>
17#include <queue>
18
19#include "UtPack.hpp"
20#include "UtThread.hpp"
21#include "UtWallClock.hpp"
22
23namespace wsf
24{
25namespace eventpipe
26{
27// this class manages a double-buffer for the writing of event-pipe messages to file
28class FileWriterWorker : public UtThread
29{
30public:
32 void Push(std::unique_ptr<UtPackMessage> msg);
33
34 void Run() override;
35 void StartRunning();
36 void StopRunning();
37
39
40private:
41 bool mRunning;
42 UtWallClock mClock;
43 std::mutex mFrontAccessMutex; // this is to prevent collisions of multiple sim-threads
44 std::mutex mGeneralMutex; // this is to prevent collisions between sim-threads and the write-thread
45 std::queue<std::unique_ptr<UtPackMessage>> mFrontMessageQueue;
46 std::queue<std::unique_ptr<UtPackMessage>> mBackMessageQueue;
47 std::condition_variable mBackMessagesAdded;
48 std::condition_variable mBackMessagesPopped;
49};
50} // namespace eventpipe
51} // namespace wsf
52
53#endif
Definition UtPackStream.hpp:127
FileWriterWorker()
Definition WsfEventPipeFileWriteWorker.cpp:14
void StartRunning()
Definition WsfEventPipeFileWriteWorker.cpp:123
void Push(std::unique_ptr< UtPackMessage > msg)
Definition WsfEventPipeFileWriteWorker.cpp:21
void StopRunning()
Definition WsfEventPipeFileWriteWorker.cpp:128
UtPackMessageStdStreamO * mStreamPtr
Definition WsfEventPipeFileWriteWorker.hpp:38
void Run() override
Definition WsfEventPipeFileWriteWorker.cpp:62
Definition WsfEventPipeEventIds.hpp:18
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved