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);