Skip to content

Commit 7a55a6a

Browse files
committed
Merge parse lines implementations
1 parent 51e44ab commit 7a55a6a

File tree

5 files changed

+44
-51
lines changed

5 files changed

+44
-51
lines changed

include/pfs/parsers/lines.hpp

+2-11
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ template <typename Inserter>
3131
using inserted_type = typename Inserter::container_type::value_type;
3232

3333
template <typename Inserter>
34-
void parse_and_filter_lines(
34+
void parse_file_lines(
3535
const std::string& path,
3636
Inserter inserter,
3737
std::function<inserted_type<Inserter>(const std::string&)> parser,
@@ -58,6 +58,7 @@ void parse_and_filter_lines(
5858
}
5959

6060
auto inserted = parser(line);
61+
6162
if (filter && filter(inserted))
6263
{
6364
continue;
@@ -67,16 +68,6 @@ void parse_and_filter_lines(
6768
}
6869
}
6970

70-
template <typename Inserter>
71-
void parse_lines(
72-
const std::string& path,
73-
Inserter inserter,
74-
std::function<inserted_type<Inserter>(const std::string&)> parser,
75-
size_t lines_to_skip = 0)
76-
{
77-
parse_and_filter_lines(path, inserter, parser, nullptr, lines_to_skip);
78-
}
79-
8071
} // namespace parsers
8172
} // namespace impl
8273
} // namespace pfs

src/net.cpp

+17-16
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ std::vector<net_device> net::get_dev(net_device_filter filter) const
4444
static const size_t HEADER_LINES = 2;
4545

4646
std::vector<net_device> output;
47-
parsers::parse_and_filter_lines(path, std::back_inserter(output),
48-
parsers::parse_net_device_line, filter, HEADER_LINES);
47+
parsers::parse_file_lines(path, std::back_inserter(output),
48+
parsers::parse_net_device_line,
49+
filter, HEADER_LINES);
4950
return output;
5051
}
5152

@@ -117,9 +118,9 @@ std::vector<netlink_socket> net::get_netlink(netlink_socket_filter filter) const
117118
static const size_t HEADER_LINES = 1;
118119

119120
std::vector<netlink_socket> output;
120-
parsers::parse_and_filter_lines(path, std::back_inserter(output),
121-
parsers::parse_netlink_socket_line,
122-
filter, HEADER_LINES);
121+
parsers::parse_file_lines(path, std::back_inserter(output),
122+
parsers::parse_netlink_socket_line,
123+
filter, HEADER_LINES);
123124
return output;
124125
}
125126

@@ -131,9 +132,9 @@ std::vector<unix_socket> net::get_unix(unix_socket_filter filter) const
131132
static const size_t HEADER_LINES = 1;
132133

133134
std::vector<unix_socket> output;
134-
parsers::parse_and_filter_lines(path, std::back_inserter(output),
135-
parsers::parse_unix_socket_line,
136-
filter, HEADER_LINES);
135+
parsers::parse_file_lines(path, std::back_inserter(output),
136+
parsers::parse_unix_socket_line,
137+
filter, HEADER_LINES);
137138
return output;
138139
}
139140

@@ -145,23 +146,23 @@ std::vector<net_socket> net::get_net_sockets(const std::string& file,
145146
static const size_t HEADER_LINES = 1;
146147

147148
std::vector<net_socket> output;
148-
parsers::parse_and_filter_lines(path, std::back_inserter(output),
149-
parsers::parse_net_socket_line,
150-
filter, HEADER_LINES);
149+
parsers::parse_file_lines(path, std::back_inserter(output),
150+
parsers::parse_net_socket_line,
151+
filter, HEADER_LINES);
151152
return output;
152153
}
153154

154155
std::vector<net_route> net::get_route(net_route_filter filter) const
155156
{
156-
static const size_t HEADER_LINES = 1;
157-
158157
static const std::string ROUTES_FILE("route");
159158
auto path = _net_root + ROUTES_FILE;
160159

160+
static const size_t HEADER_LINES = 1;
161+
161162
std::vector<net_route> output;
162-
parsers::parse_and_filter_lines(path, std::back_inserter(output),
163-
parsers::parse_net_route_line,
164-
filter, HEADER_LINES);
163+
parsers::parse_file_lines(path, std::back_inserter(output),
164+
parsers::parse_net_route_line,
165+
filter, HEADER_LINES);
165166
return output;
166167
}
167168

src/procfs.cpp

+13-12
Original file line numberDiff line numberDiff line change
@@ -92,21 +92,22 @@ std::vector<zone> procfs::get_buddyinfo() const
9292
auto path = _root + BUDDYINFO_FILE;
9393

9494
std::vector<zone> output;
95-
parsers::parse_lines(path, std::back_inserter(output),
96-
parsers::parse_buddyinfo_line);
95+
parsers::parse_file_lines(path, std::back_inserter(output),
96+
parsers::parse_buddyinfo_line);
9797
return output;
9898
}
9999

100100
std::vector<cgroup_controller> procfs::get_cgroups() const
101101
{
102-
static const size_t HEADER_LINES = 1;
103-
104102
static const std::string CGROUPS_FILE("cgroups");
105103
auto path = _root + CGROUPS_FILE;
106104

105+
static const size_t HEADER_LINES = 1;
106+
107107
std::vector<cgroup_controller> output;
108-
parsers::parse_lines(path, std::back_inserter(output),
109-
parsers::parse_cgroup_controller_line, HEADER_LINES);
108+
parsers::parse_file_lines(path, std::back_inserter(output),
109+
parsers::parse_cgroup_controller_line,
110+
/* filter = */ nullptr, HEADER_LINES);
110111
return output;
111112
}
112113

@@ -124,8 +125,8 @@ std::unordered_map<std::string, bool> procfs::get_filesystems() const
124125
auto path = _root + FILESYSTEMS_FILE;
125126

126127
std::unordered_map<std::string, bool> output;
127-
parsers::parse_lines(path, std::inserter(output, output.begin()),
128-
parsers::parse_filesystems_line);
128+
parsers::parse_file_lines(path, std::inserter(output, output.begin()),
129+
parsers::parse_filesystems_line);
129130
return output;
130131
}
131132

@@ -135,8 +136,8 @@ std::unordered_map<std::string, size_t> procfs::get_meminfo() const
135136
auto path = _root + MEMINFO_FILE;
136137

137138
std::unordered_map<std::string, size_t> output;
138-
parsers::parse_lines(path, std::inserter(output, output.begin()),
139-
parsers::parse_meminfo_line);
139+
parsers::parse_file_lines(path, std::inserter(output, output.begin()),
140+
parsers::parse_meminfo_line);
140141
return output;
141142
}
142143

@@ -172,8 +173,8 @@ std::vector<module> procfs::get_modules() const
172173
auto path = _root + MODULES_FILE;
173174

174175
std::vector<module> output;
175-
parsers::parse_lines(path, std::back_inserter(output),
176-
parsers::parse_modules_line);
176+
parsers::parse_file_lines(path, std::back_inserter(output),
177+
parsers::parse_modules_line);
177178
return output;
178179
}
179180

src/task.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ std::vector<cgroup> task::get_cgroups() const
8080
auto path = _task_root + CGROUP_FILE;
8181

8282
std::vector<cgroup> output;
83-
parsers::parse_lines(path, std::back_inserter(output),
84-
parsers::parse_cgroup_line);
83+
parsers::parse_file_lines(path, std::back_inserter(output),
84+
parsers::parse_cgroup_line);
8585
return output;
8686
}
8787

@@ -345,8 +345,8 @@ std::vector<mem_region> task::get_maps() const
345345
auto path = _task_root + MAPS_FILE;
346346

347347
std::vector<mem_region> output;
348-
parsers::parse_lines(path, std::back_inserter(output),
349-
parsers::parse_maps_line);
348+
parsers::parse_file_lines(path, std::back_inserter(output),
349+
parsers::parse_maps_line);
350350
return output;
351351
}
352352

@@ -364,8 +364,8 @@ std::vector<mount> task::get_mountinfo() const
364364
auto path = _task_root + MOUNTINFO_FILE;
365365

366366
std::vector<mount> output;
367-
parsers::parse_lines(path, std::back_inserter(output),
368-
parsers::parse_mountinfo_line);
367+
parsers::parse_file_lines(path, std::back_inserter(output),
368+
parsers::parse_mountinfo_line);
369369
return output;
370370
}
371371

@@ -473,8 +473,8 @@ std::vector<id_map> task::get_uid_map() const
473473
auto path = _task_root + UID_MAP_FILE;
474474

475475
std::vector<id_map> output;
476-
parsers::parse_lines(path, std::back_inserter(output),
477-
parsers::parse_id_map_line);
476+
parsers::parse_file_lines(path, std::back_inserter(output),
477+
parsers::parse_id_map_line);
478478
return output;
479479
}
480480

@@ -484,8 +484,8 @@ std::vector<id_map> task::get_gid_map() const
484484
auto path = _task_root + GID_MAP_FILE;
485485

486486
std::vector<id_map> output;
487-
parsers::parse_lines(path, std::back_inserter(output),
488-
parsers::parse_id_map_line);
487+
parsers::parse_file_lines(path, std::back_inserter(output),
488+
parsers::parse_id_map_line);
489489
return output;
490490
}
491491

test/test_parsers.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ TEST_CASE("Parse lines move()-s", "[parsers]")
5050
pfs::impl::defer unlink_temp_file([&file] { unlink(file.c_str()); });
5151

5252
std::vector<obj> output;
53-
parse_lines(file, std::back_inserter(output), parser);
53+
parse_file_lines(file, std::back_inserter(output), parser);
5454

5555
REQUIRE(output.size() == content.size());
5656
for (size_t i = 0; i < output.size(); ++i)
@@ -105,6 +105,6 @@ TEST_CASE("Parse lines functionality", "[parsers]")
105105
}
106106

107107
file = create_temp_file(content);
108-
parse_and_filter_lines(file, std::back_inserter(output), parser, filter, skipped);
108+
parse_file_lines(file, std::back_inserter(output), parser, filter, skipped);
109109
REQUIRE(output == expected);
110110
}

0 commit comments

Comments
 (0)