34 #include "trm/TunerState.h"
35 #include "trm/TunerReservation.h"
44 Tuner::IdList & Filter<ByTunerId>(
const std::string &tunerId, Tuner::IdList &tuners)
46 return Filter_ByTunerId(tunerId, tuners);
50 Tuner::IdList & Filter<ByTunerState>(
const Enum<TunerState> &state, Tuner::IdList &tuners)
52 return Filter_ByTunerState(state, tuners);
56 Tuner::IdList & Filter<ByTunerLocator>(
const std::string &serviceLocator, Tuner::IdList &tuners)
58 return Filter_ByTunerLocator(serviceLocator, tuners);
62 Tuner::IdList & Filter<ByTunerEndBefore>(
const uint64_t &endTime, Tuner::IdList &tuners)
64 return Filter_ByTunerEndBefore(endTime, tuners, Activity::kRecord);
68 TunerReservation::TokenList & Filter<ByActivity>(
const Enum<Activity> &activity, TunerReservation::TokenList &reservations)
70 return Filter_ByActivity(activity, reservations);
75 TunerReservation::TokenList & Filter<ByStartAfter>(
const uint64_t &startTime, TunerReservation::TokenList &reservations)
77 return Filter_ByStartAfter(startTime, reservations);
82 TunerReservation::TokenList & Filter<ByReservationEndBefore>(
const uint64_t &endTime, TunerReservation::TokenList &reservations)
84 return Filter_ByReservationEndBefore(endTime, reservations);
88 TunerReservation::TokenList & Filter<ByToken>(
const std::string &token, TunerReservation::TokenList &reservations)
90 return Filter_ReservationByToken(token, reservations);
94 TunerReservation::TokenList & Filter<ByDevice>(
const std::string &device, TunerReservation::TokenList &reservations)
96 return Filter_ReservationByDevice(device, reservations);
100 TunerReservation::TokenList & Filter<ByInConflict>(
const bool &inConflict, TunerReservation::TokenList &reservations)
102 return Filter_ReservationByAttribute(inConflict, reservations);
106 TunerReservation::TokenList & Filter<ByReservationLocator>(
const std::string &serviceLocator, TunerReservation::TokenList &reservations)
108 return Filter_ByReservationLocator(serviceLocator, reservations);
112 TunerReservation::TokenList & Filter<ByReservationState>(
const int &state, TunerReservation::TokenList &reservations)
114 std::cout <<
"Filter<ByReservationState>" << std::endl;
116 return Filter_ByReservationState(state, reservations);
119 Tuner::IdList & Filter_ByTunerId(
const std::string &tunerId, Tuner::IdList &tuners)
121 std::cout <<
"Filter Reservations ByTunerId" << std::endl;
122 Tuner::IdList::iterator it = tuners.begin();
123 while(it != tuners.end()) {
124 const Tuner &tuner = Manager::getInstance().getTuner(*it);
125 if (tuner.getId().compare(tunerId) != 0) {
126 it = tuners.erase(it);
133 Assert(tuners.size() <= 1);
137 Tuner::IdList & Filter_ByTunerState(
const Enum<TunerState> &state, Tuner::IdList &tuners)
139 std::cout <<
"Filter Tuners ByTunerState " << tuners.size() << std::endl;
140 Tuner::IdList::iterator it = tuners.begin();
141 while(it != tuners.end()) {
142 std::cout <<
"checking tuner id " << *it << std::endl;
143 const Tuner &tuner = Manager::getInstance().getTuner(*it);
144 if (!(tuner.getState().getState() == state)) {
145 it = tuners.erase(it);
151 std::cout <<
"After Filter has " << tuners.size() <<
" left " << std::endl;
155 Tuner::IdList & Filter_ByTunerLocator(
const std::string &serviceLocator, Tuner::IdList &tuners)
157 std::cout <<
"Filter Tuners ByServiceLocator" << std::endl;
158 Tuner::IdList::iterator it = tuners.begin();
159 while (it != tuners.end()) {
160 const Tuner &tuner = Manager::getInstance().getTuner(*it);
161 if ((!tuner.getServiceLocator().empty()) && (tuner.getServiceLocator().compare(serviceLocator) != 0)) {
162 it = tuners.erase(it);
171 Tuner::IdList & Filter_ByTunerEndBefore(
const uint64_t &endTime, Tuner::IdList &tuners,
const Activity &activity)
176 std::cout <<
"Filter Reservations By ByEndBefore on Tuners" << std::endl;
178 Tuner::IdList::iterator it = tuners.begin();
179 while (it != tuners.end()) {
180 bool beyondEndTime =
false;
181 TunerReservation::TokenList reservationTokens;
182 Manager::getInstance().getReservationTokens(reservationTokens, *it);
183 TunerReservation::TokenList::iterator itt = reservationTokens.begin();
184 while (itt != reservationTokens.end()) {
185 TunerReservation &reservation = Manager::getInstance().getReservation(*itt);
186 if ((reservation.getActivity() == activity) &&
187 ((reservation.getStartTime() + reservation.getDuration()) > endTime)) {
188 beyondEndTime =
true;
195 std::cout <<
"Tuner " << Manager::getInstance().getTuner(*it).getId() <<
" goes beyond endTime " << endTime << std::endl;
196 it = tuners.erase(it);
205 TunerReservation::TokenList & Filter_ByActivity(
const Enum<Activity> &activity, TunerReservation::TokenList &reservations)
207 std::cout <<
"Filter Reservations By Activity start" << std::endl;
208 TunerReservation::TokenList::iterator it = reservations.begin();
209 while (it != reservations.end()) {
210 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
211 if (!(reservation.getActivity().getActivity() == activity)) {
212 it = reservations.erase(it);
219 std::cout <<
"Filter Reservations By DONE" << std::endl;
224 TunerReservation::TokenList & Filter_ByStartAfter(
const uint64_t &startTime, TunerReservation::TokenList &reservations)
226 std::cout <<
"Filter Reservations By ByStartAfter" << std::endl;
227 TunerReservation::TokenList::iterator it = reservations.begin();
228 while (it != reservations.end()) {
229 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
230 if (reservation.getStartTime() <= startTime) {
231 it = reservations.erase(it);
240 TunerReservation::TokenList & Filter_ByReservationEndBefore(
const uint64_t &endTime, TunerReservation::TokenList &reservations)
242 std::cout <<
"Filter Reservations By ByEndBefore on Reservations" << std::endl;
243 TunerReservation::TokenList::iterator it = reservations.begin();
244 while (it != reservations.end()) {
245 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
246 if ((reservation.getStartTime() + reservation.getDuration()) > endTime) {
247 it = reservations.erase(it);
256 TunerReservation::TokenList & Filter_ReservationByToken(
const std::string &token, TunerReservation::TokenList &reservations)
258 std::cout <<
"Filter Reservations By ByToken" << std::endl;
259 TunerReservation::TokenList::iterator it = reservations.begin();
260 while (it != reservations.end()) {
261 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
262 if (reservation.getReservationToken().compare(token) != 0) {
263 it = reservations.erase(it);
272 TunerReservation::TokenList & Filter_ReservationByDevice(
const std::string &device, TunerReservation::TokenList &reservations)
275 TunerReservation::TokenList::iterator it;
276 for (it = reservations.begin(); it != reservations.end(); it++) {
277 std::cout <<
"Start with reservation " << (*it) << std::endl;
280 std::cout <<
"Filter Reservations By ByDevice " << reservations.size() << std::endl;
281 TunerReservation::TokenList::iterator it = reservations.begin();
282 while (it != reservations.end()) {
283 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
285 if (reservation.getDevice().compare(device) != 0) {
286 it = reservations.erase(it);
295 TunerReservation::TokenList & Filter_ReservationByAttribute(
const bool &inConflict, TunerReservation::TokenList &reservations)
298 TunerReservation::TokenList::iterator it;
299 for (it = reservations.begin(); it != reservations.end(); it++) {
300 std::cout <<
"Start with reservation " << (*it) << std::endl;
303 std::cout <<
"Filter Reservations By ByInConflict " << reservations.size() << std::endl;
304 TunerReservation::TokenList::iterator it = reservations.begin();
305 while (it != reservations.end()) {
307 if ((inConflict) && (!Manager::getInstance().isPendingConflict((*it)))) {
308 it = reservations.erase(it);
310 else if((!inConflict) && (Manager::getInstance().isPendingConflict((*it)))) {
311 it = reservations.erase(it);
320 TunerReservation::TokenList & Filter_ByReservationLocator(
const std::string &serviceLocator, TunerReservation::TokenList &reservations)
322 std::cout <<
"Filter Reservations By ByServiceLocator" << std::endl;
323 TunerReservation::TokenList::iterator it = reservations.begin();
324 while (it != reservations.end()) {
325 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
326 if (reservation.getServiceLocator().compare(serviceLocator) != 0) {
327 it = reservations.erase(it);
336 TunerReservation::TokenList & Filter_ByReservationState(
int state, TunerReservation::TokenList &reservations)
338 std::cout <<
"Filter Reservations " << reservations.size() <<
" By State " << state << std::endl;
339 TunerReservation::TokenList::iterator it = reservations.begin();
340 while (it != reservations.end()) {
341 const TunerReservation &reservation = Manager::getInstance().getReservation(*it);
342 if (reservation.state != state) {
343 std::cout <<
"Removing reservation " << reservation.
getReservationToken() <<
" for being in state " << reservation.state << std::endl;
344 it = reservations.erase(it);