17 #ifndef STRATEGIES_HPP_
18 #define STRATEGIES_HPP_
22 #ifdef KAA_USE_CONFIGURATION
36 class UuidProcessStrategy :
public AbstractStrategy {
39 std::function<
bool (uuid_t)> isSubscribed
40 , std::function<
void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribe
41 , std::function<
void (uuid_t)> unsubscribe)
42 : isSubscribedFn_(isSubscribed)
43 , subscribeFn_(subscribe)
44 , unsubscribeFn_(unsubscribe)
48 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);
51 std::function<bool (uuid_t)> isSubscribedFn_;
52 std::function<void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribeFn_;
53 std::function<void (uuid_t)> unsubscribeFn_;
61 class RecordProcessStrategy :
public AbstractStrategy {
63 RecordProcessStrategy(
64 std::function<
bool (uuid_t)> isSubscribed
65 , std::function<
void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribe
66 , std::function<
void (uuid_t)> unsubscribe,
bool isRootRecord =
false)
67 : isSubscribedFn_(isSubscribed)
68 , subscribeFn_(subscribe)
69 , unsubscribeFn_(unsubscribe)
70 , isRootRecord_(isRootRecord)
73 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);
75 std::function<bool (uuid_t)> isSubscribedFn_;
76 std::function<void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribeFn_;
77 std::function<void (uuid_t)> unsubscribeFn_;
78 std::list<std::pair<uuid_t, std::shared_ptr<ICommonRecord> > > recordToSubscribe;
79 std::list<uuid_t> recordToUnSubscribe;
87 class ArrayProcessStrategy :
public AbstractStrategy {
89 ArrayProcessStrategy(std::function<
bool (uuid_t)> isSubscribed
90 , std::function<
void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribe
91 , std::function<
void (uuid_t)> unsubscribe)
92 : isSubscribedFn_(isSubscribed)
93 , subscribeFn_(subscribe)
94 , unsubscribeFn_(unsubscribe)
97 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);
99 static const std::string array_holder_field;
100 std::function<bool (uuid_t)> isSubscribedFn_;
101 std::function<void (uuid_t, std::shared_ptr<ICommonRecord>)> subscribeFn_;
102 std::function<void (uuid_t)> unsubscribeFn_;
108 class ArrayResetStrategy :
public AbstractStrategy {
110 ArrayResetStrategy(std::function<
bool (uuid_t)> isSubscribed
111 , std::function<
void (uuid_t)> unsubscribe)
112 : isSubscribedFn_(isSubscribed)
113 , unsubscribeFn_(unsubscribe)
116 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);
117 void unregisterRecord(ICommonRecord &record);
118 void unregisterArray(ICommonArray &record);
120 std::function<bool (uuid_t)> isSubscribedFn_;
121 std::function<void (uuid_t)> unsubscribeFn_;
127 class NullProcessStrategy :
public AbstractStrategy {
129 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);
135 class CommonProcessStrategy :
public AbstractStrategy {
137 void run(std::shared_ptr<ICommonRecord> parent,
const std::string &field,
const avro::GenericDatum &datum);