-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy paththrottler_tracker_test.h
58 lines (49 loc) · 3.22 KB
/
throttler_tracker_test.h
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#pragma once
#include "throttler_tracker.h"
#include <cloud/blockstore/libs/service/context.h>
#include <functional>
namespace NCloud::NBlockStore {
////////////////////////////////////////////////////////////////////////////////
struct TTestThrottlerTracker final
: public IThrottlerTracker
{
#define BLOCKSTORE_DECLARE_METHOD(name, ...) \
using T##name##TrackReceivedRequestHandler = std::function< \
void(TCallContext&, \
IVolumeInfo*, \
const NProto::T##name##Request& request)>; \
using T##name##TrackPostponedRequestHandler = \
std::function<void(TCallContext&, const NProto::T##name##Request&)>; \
using T##name##TrackAdvancedRequestHandler = \
std::function<void(TCallContext&, const NProto::T##name##Request&)>; \
\
T##name##TrackReceivedRequestHandler name##TrackReceivedRequestHandler; \
T##name##TrackPostponedRequestHandler name##TrackPostponedRequestHandler; \
T##name##TrackAdvancedRequestHandler name##TrackAdvancedRequestHandler; \
\
void TrackReceivedRequest( \
TCallContext& callContext, \
IVolumeInfo* volumeInfo, \
const NProto::T##name##Request& request) override \
{ \
name##TrackReceivedRequestHandler(callContext, volumeInfo, request); \
} \
\
void TrackPostponedRequest( \
TCallContext& callContext, \
const NProto::T##name##Request& request) override \
{ \
name##TrackPostponedRequestHandler(callContext, request); \
} \
\
void TrackAdvancedRequest( \
TCallContext& callContext, \
const NProto::T##name##Request& request) override \
{ \
name##TrackAdvancedRequestHandler(callContext, request); \
} \
// BLOCKSTORE_DECLARE_METHOD
BLOCKSTORE_SERVICE(BLOCKSTORE_DECLARE_METHOD)
#undef BLOCKSTORE_DECLARE_METHOD
};
} // namespace NCloud::NBlockStore