@@ -27,10 +27,12 @@ import global_resource_usage;
27
27
namespace infinity {
28
28
29
29
class NewCleanupTask ;
30
+ class NotifyOptimizeTask ;
31
+ class NotifyCompactTask ;
30
32
31
33
export class PeriodicTrigger {
32
34
public:
33
- explicit PeriodicTrigger (i64 interval) : interval_(interval), last_check_(std::chrono::system_clock::now()) {
35
+ explicit PeriodicTrigger (const i64 interval) : interval_(interval), last_check_(std::chrono::system_clock::now()) {
34
36
#ifdef INFINITY_DEBUG
35
37
GlobalResourceUsage::IncrObjectCount (" PeriodicTrigger" );
36
38
#endif
@@ -44,7 +46,7 @@ public:
44
46
45
47
bool Check ();
46
48
47
- void UpdateInternal (i64 new_interval) { interval_ = new_interval; }
49
+ void UpdateInternal (const i64 new_interval) { interval_ = new_interval; }
48
50
49
51
virtual void Trigger () = 0;
50
52
@@ -58,47 +60,49 @@ protected:
58
60
59
61
export class NewCleanupPeriodicTrigger final : public PeriodicTrigger {
60
62
public:
61
- NewCleanupPeriodicTrigger (i64 interval) : PeriodicTrigger(interval) {}
63
+ explicit NewCleanupPeriodicTrigger (const i64 interval) : PeriodicTrigger(interval) {}
62
64
63
65
std::shared_ptr<NewCleanupTask> CreateNewCleanupTask ();
64
66
65
- virtual void Trigger () override ;
67
+ void Trigger () override ;
66
68
67
69
private:
68
70
//
69
71
};
70
72
71
73
export class CheckpointPeriodicTrigger final : public PeriodicTrigger {
72
74
public:
73
- explicit CheckpointPeriodicTrigger (i64 interval) : PeriodicTrigger(interval) {}
75
+ explicit CheckpointPeriodicTrigger (const i64 interval) : PeriodicTrigger(interval) {}
74
76
75
- virtual void Trigger () override ;
77
+ void Trigger () override ;
76
78
};
77
79
78
- export class CompactSegmentPeriodicTrigger final : public PeriodicTrigger {
80
+ export class CompactPeriodicTrigger final : public PeriodicTrigger {
79
81
public:
80
- explicit CompactSegmentPeriodicTrigger ( i64 interval, CompactionProcessor *compact_processor)
82
+ explicit CompactPeriodicTrigger ( const i64 interval, CompactionProcessor *compact_processor)
81
83
: PeriodicTrigger(interval), compact_processor_(compact_processor) {}
82
84
83
- explicit CompactSegmentPeriodicTrigger ( i64 interval) : PeriodicTrigger(interval) {}
85
+ explicit CompactPeriodicTrigger ( const i64 interval) : PeriodicTrigger(interval) {}
84
86
85
- virtual void Trigger () override ;
87
+ void Trigger () override ;
86
88
87
89
private:
88
90
CompactionProcessor *const compact_processor_{};
91
+ std::shared_ptr<NotifyCompactTask> compact_task_{};
89
92
};
90
93
91
94
export class OptimizeIndexPeriodicTrigger final : public PeriodicTrigger {
92
95
public:
93
- explicit OptimizeIndexPeriodicTrigger (i64 interval, CompactionProcessor *compact_processor)
96
+ explicit OptimizeIndexPeriodicTrigger (const i64 interval, CompactionProcessor *compact_processor)
94
97
: PeriodicTrigger(interval), compact_processor_(compact_processor) {}
95
98
96
- explicit OptimizeIndexPeriodicTrigger (i64 interval) : PeriodicTrigger(interval) {}
99
+ explicit OptimizeIndexPeriodicTrigger (const i64 interval) : PeriodicTrigger(interval) {}
97
100
98
- virtual void Trigger () override ;
101
+ void Trigger () override ;
99
102
100
103
private:
101
104
CompactionProcessor *const compact_processor_ = nullptr ;
105
+ std::shared_ptr<NotifyOptimizeTask> optimize_task_{};
102
106
};
103
107
104
108
} // namespace infinity
0 commit comments