1/*
2 * Copyright (C) 2018 The Android Open Source Project
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#include "src/traced/probes/filesystem/range_tree.h"
18#include "perfetto/base/logging.h"
19
20namespace perfetto {
21
22const std::set<std::string> RangeTree::Get(Inode inode) {
23  std::set<std::string> ret;
24  auto lower = map_.upper_bound(inode);
25  if (lower != map_.begin())
26    lower--;
27  for (const DataType& x : lower->second)
28    ret.emplace(x->ToString());
29  return ret;
30}
31
32void RangeTree::Insert(Inode inode, RangeTree::DataType value) {
33  auto lower = map_.rbegin();
34  if (!map_.empty()) {
35    PERFETTO_DCHECK(inode > lower->first);
36  }
37
38  if (map_.empty() || !lower->second.Add(value)) {
39    PERFETTO_DCHECK(map_[inode].Add(value));
40  }
41}
42
43}  // namespace perfetto
44