blob: efaac3e2ffa78489137ee796d8bb2d5635a7dd63 [file] [log] [blame]
Yingdi Yu7d773322015-03-22 21:32:48 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Alexander Afanasyevbe998ac2017-05-06 13:11:42 -07003 * Copyright (c) 2014-2017, Regents of the University of California
Yingdi Yu7d773322015-03-22 21:32:48 -07004 *
Alexander Afanasyevbe998ac2017-05-06 13:11:42 -07005 * This file is part of NDN DeLorean, An Authentication System for Data Archives in
6 * Named Data Networking. See AUTHORS.md for complete list of NDN DeLorean authors
7 * and contributors.
Yingdi Yu7d773322015-03-22 21:32:48 -07008 *
Alexander Afanasyevbe998ac2017-05-06 13:11:42 -07009 * NDN DeLorean is free software: you can redistribute it and/or modify it under
10 * the terms of the GNU General Public License as published by the Free Software
11 * Foundation, either version 3 of the License, or (at your option) any later
12 * version.
Yingdi Yu7d773322015-03-22 21:32:48 -070013 *
Alexander Afanasyevbe998ac2017-05-06 13:11:42 -070014 * NDN DeLorean is distributed in the hope that it will be useful, but WITHOUT ANY
15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
16 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
Yingdi Yu7d773322015-03-22 21:32:48 -070017 *
Alexander Afanasyevbe998ac2017-05-06 13:11:42 -070018 * You should have received a copy of the GNU General Public License along with NDN
19 * DeLorean, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
Yingdi Yu7d773322015-03-22 21:32:48 -070020 */
21
22#include "rule.hpp"
23
Alexander Afanasyev49e2e4c2017-05-06 13:42:57 -070024namespace ndn {
25namespace delorean {
Yingdi Yu7d773322015-03-22 21:32:48 -070026namespace conf {
27
28Rule::Rule(const std::string& id)
29 : m_id(id)
30{
31}
32
33Rule::~Rule()
34{
35}
36
37const std::string&
38Rule::getId()
39{
40 return m_id;
41}
42
43void
44Rule::addFilter(const shared_ptr<Filter>& filter)
45{
46 m_filters.push_back(filter);
47}
48
49void
50Rule::addChecker(const shared_ptr<Checker>& checker)
51{
52 m_checkers.push_back(checker);
53}
54
55bool
56Rule::match(const Data& data)
57{
58 if (m_filters.empty())
59 return true;
60
61 for (auto& filter : m_filters) {
62 if (!filter->match(data))
63 return false;
64 }
65
66 return true;
67}
68
69bool
70Rule::check(const Data& data)
71{
72 for (auto& checker : m_checkers) {
73 bool result = checker->check(data);
74 if (result)
75 return result;
76 }
77
78 return false;
79}
80
81} // namespace conf
Alexander Afanasyev49e2e4c2017-05-06 13:42:57 -070082} // namespace delorean
83} // namespace ndn