ArmNN
 22.08
TestTimelinePacketHandler Class Reference

#include <TestTimelinePacketHandler.hpp>

Inheritance diagram for TestTimelinePacketHandler:

Public Member Functions

 TestTimelinePacketHandler ()
 
virtual std::vector< uint32_t > GetHeadersAccepted () override
 
virtual void HandlePacket (const arm::pipe::Packet &packet) override
 
void Stop ()
 
void WaitOnInferenceCompletion (unsigned int timeout)
 
void SetInferenceComplete ()
 
const TimelineModelGetTimelineModel () const
 
virtual void SetConnection (IInternalProfilingConnection *profilingConnection) override
 

Detailed Description

Definition at line 48 of file TestTimelinePacketHandler.hpp.

Constructor & Destructor Documentation

◆ TestTimelinePacketHandler()

Definition at line 51 of file TestTimelinePacketHandler.hpp.

51  :
52  m_Connection(nullptr),
53  m_InferenceCompleted(false),
54  m_DirectoryHeader(CreateTimelinePacketHeader(1, 0, 0, 0, 0, 0).first),
55  m_MessageHeader(CreateTimelinePacketHeader(1, 0, 1, 0, 0, 0).first),
56  m_MessageDecoder(m_TimelineModel),
57  m_Decoder(1, 1, 0, m_MessageDecoder),
58  m_DirectoryDecoder(1, 0, 0, m_Decoder, true)
59  { m_MessageDecoder.SetPacketHandler(this); }
void SetPacketHandler(TestTimelinePacketHandler *packetHandler)

Member Function Documentation

◆ GetHeadersAccepted()

std::vector< uint32_t > GetHeadersAccepted ( )
overridevirtual

Definition at line 21 of file TestTimelinePacketHandler.cpp.

22 {
23  std::vector<uint32_t> headers;
24  headers.push_back(m_DirectoryHeader); // message directory
25  headers.push_back(m_MessageHeader); // message
26  return headers;
27 }

◆ GetTimelineModel()

const TimelineModel& GetTimelineModel ( ) const
inline

Definition at line 70 of file TestTimelinePacketHandler.hpp.

70 {return m_TimelineModel;}

◆ HandlePacket()

void HandlePacket ( const arm::pipe::Packet &  packet)
overridevirtual

Definition at line 29 of file TestTimelinePacketHandler.cpp.

30 {
31  if (packet.GetHeader() == m_DirectoryHeader)
32  {
33  ProcessDirectoryPacket(packet);
34  }
35  else if (packet.GetHeader() == m_MessageHeader)
36  {
37  ProcessMessagePacket(packet);
38  }
39  else
40  {
41  std::stringstream ss;
42  ss << "Received a packet with unknown header [" << packet.GetHeader() << "]";
43  throw arm::pipe::ProfilingException(ss.str());
44  }
45 }

◆ SetConnection()

virtual void SetConnection ( IInternalProfilingConnection *  profilingConnection)
inlineoverridevirtual

Definition at line 72 of file TestTimelinePacketHandler.hpp.

73  {
74  m_Connection = profilingConnection;
75  }

◆ SetInferenceComplete()

void SetInferenceComplete ( )

Definition at line 72 of file TestTimelinePacketHandler.cpp.

73 {
74  { // only lock when we are updating the inference completed variable
75  std::unique_lock<std::mutex> lck(m_InferenceCompletedMutex);
76  m_InferenceCompleted = true;
77  }
78  m_InferenceCompletedConditionVariable.notify_one();
79 }

◆ Stop()

void Stop ( )

Definition at line 47 of file TestTimelinePacketHandler.cpp.

48 {
49  m_Connection->Close();
50 }

◆ WaitOnInferenceCompletion()

void WaitOnInferenceCompletion ( unsigned int  timeout)

Definition at line 52 of file TestTimelinePacketHandler.cpp.

53 {
54  std::unique_lock<std::mutex> lck(m_InferenceCompletedMutex);
55 
56  auto start = std::chrono::high_resolution_clock::now();
57  // Here we we will go back to sleep after a spurious wake up if
58  // m_InferenceCompleted is not yet true.
59  if (!m_InferenceCompletedConditionVariable.wait_for(lck,
60  std::chrono::milliseconds(timeout),
61  [&]{return m_InferenceCompleted == true;}))
62  {
63  auto finish = std::chrono::high_resolution_clock::now();
64  std::chrono::duration<double, std::milli> elapsed = finish - start;
65  std::stringstream ss;
66  ss << "Timed out waiting on inference completion for " << elapsed.count() << " ms";
67  throw arm::pipe::TimeoutException(ss.str());
68  }
69  return;
70 }

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