summaryrefslogtreecommitdiff
path: root/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.h
blob: bfb48216f797ba9d1880d69756e77665482e2f8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <windows.h>

#include <iostream>       // std::cout
#include <thread>         // std::thread
#include <mutex> 

namespace RpcServer
{
    class Metering
    {
    public:
        Metering(__int64 period);
        void SetSamplePeriod(__int64 period);
        __int64 GetMeteringData() const;
        void MeteringWorker();
        void WaitForMeteringData() const;
        void StartMetering(__int64 samplePeriod, __int64 context);
        void StopMetering();
        ~Metering();

    private:
        volatile __int64 _data;
        volatile __int64 samplePeriod;
        PTP_TIMER tpTimer = nullptr;
        HANDLE event;
        volatile bool stopMeteringRequested = false;
    };
}