Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_synchronizable_object.hpp
1#pragma once
2
3namespace spk
4{
9 class SynchronizableObject
10 {
11 private:
12 bool _needsSynchronization = false;
13
14 virtual void _onSynchronize() = 0;
15
16 public:
17 SynchronizableObject() = default;
18 virtual ~SynchronizableObject() = default;
19
23 void requestSynchronization() noexcept
24 {
25 _needsSynchronization = true;
26 }
27
32 bool needsSynchronization() const noexcept
33 {
34 return _needsSynchronization;
35 }
36
41 {
42 if (_needsSynchronization == false)
43 {
44 return;
45 }
46
47 _onSynchronize();
48 _needsSynchronization = false;
49 }
50
55 {
56 _onSynchronize();
57 _needsSynchronization = false;
58 }
59 };
60}
void forceSynchronization()
Forces synchronization regardless of current flag.
Definition spk_synchronizable_object.hpp:54
bool needsSynchronization() const noexcept
Checks if synchronization is pending.
Definition spk_synchronizable_object.hpp:32
void requestSynchronization() noexcept
Marks the object as needing synchronization.
Definition spk_synchronizable_object.hpp:23
void synchronize()
Performs synchronization if requested.
Definition spk_synchronizable_object.hpp:40