client-cpp  0.0.1-SNAPSHOT
Strategies.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014 CyberVision, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef STRATEGIES_HPP_
18 #define STRATEGIES_HPP_
19 
21 #include <boost/function.hpp>
22 #include <list>
25 
26 namespace kaa {
27 
33 public:
35  boost::function<bool (uuid_t)> isSubscribed
36  , boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribe
37  , boost::function<void (uuid_t)> unsubscribe)
38  {
39  isSubscribedFn_ = isSubscribed;
40  subscribeFn_ = subscribe;
41  unsubscribeFn_ = unsubscribe;
42  }
43 
44  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
45 
46 private:
47  boost::function<bool (uuid_t)> isSubscribedFn_;
48  boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribeFn_;
49  boost::function<void (uuid_t)> unsubscribeFn_;
50 };
51 
58 public:
60  boost::function<bool (uuid_t)> isSubscribed
61  , boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribe
62  , boost::function<void (uuid_t)> unsubscribe, bool isRootRecord = false)
63  {
64  isSubscribedFn_ = isSubscribed;
65  subscribeFn_ = subscribe;
66  unsubscribeFn_ = unsubscribe;
67  isRootRecord_ = isRootRecord;
68  }
69  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
70 private:
71  boost::function<bool (uuid_t)> isSubscribedFn_;
72  boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribeFn_;
73  boost::function<void (uuid_t)> unsubscribeFn_;
74  std::list<std::pair<uuid_t, boost::shared_ptr<ICommonRecord> > > recordToSubscribe;
75  std::list<uuid_t> recordToUnSubscribe;
76 
77  bool isRootRecord_;
78 };
79 
84 public:
85  ArrayProcessStrategy(boost::function<bool (uuid_t)> isSubscribed
86  , boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribe
87  , boost::function<void (uuid_t)> unsubscribe)
88  {
89  isSubscribedFn_ = isSubscribed;
90  subscribeFn_ = subscribe;
91  unsubscribeFn_ = unsubscribe;
92  }
93  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
94 private:
95  static const std::string array_holder_field;
96  boost::function<bool (uuid_t)> isSubscribedFn_;
97  boost::function<void (uuid_t, boost::shared_ptr<ICommonRecord>)> subscribeFn_;
98  boost::function<void (uuid_t)> unsubscribeFn_;
99 };
100 
105 public:
106  ArrayResetStrategy(boost::function<bool (uuid_t)> isSubscribed
107  , boost::function<void (uuid_t)> unsubscribe)
108  {
109  isSubscribedFn_ = isSubscribed;
110  unsubscribeFn_ = unsubscribe;
111  }
112  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
113  void unregisterRecord(ICommonRecord &record);
114  void unregisterArray(ICommonArray &record);
115 private:
116  boost::function<bool (uuid_t)> isSubscribedFn_;
117  boost::function<void (uuid_t)> unsubscribeFn_;
118 };
119 
124 public:
125  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
126 };
127 
132 public:
133  void run(boost::shared_ptr<ICommonRecord> parent, const std::string &field, const avro::GenericDatum &datum);
134 };
135 
136 } // namespace kaa
137 
138 
139 #endif /* STRATEGIES_HPP_ */
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
RecordProcessStrategy(boost::function< bool(uuid_t)> isSubscribed, boost::function< void(uuid_t, boost::shared_ptr< ICommonRecord >)> subscribe, boost::function< void(uuid_t)> unsubscribe, bool isRootRecord=false)
Definition: Strategies.hpp:59
ArrayResetStrategy(boost::function< bool(uuid_t)> isSubscribed, boost::function< void(uuid_t)> unsubscribe)
Definition: Strategies.hpp:106
boost::uuids::uuid uuid_t
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
void run(boost::shared_ptr< ICommonRecord > parent, const std::string &field, const avro::GenericDatum &datum)
void unregisterRecord(ICommonRecord &record)
void unregisterArray(ICommonArray &record)
ArrayProcessStrategy(boost::function< bool(uuid_t)> isSubscribed, boost::function< void(uuid_t, boost::shared_ptr< ICommonRecord >)> subscribe, boost::function< void(uuid_t)> unsubscribe)
Definition: Strategies.hpp:85
UuidProcessStrategy(boost::function< bool(uuid_t)> isSubscribed, boost::function< void(uuid_t, boost::shared_ptr< ICommonRecord >)> subscribe, boost::function< void(uuid_t)> unsubscribe)
Definition: Strategies.hpp:34