Skip to content

Commit c0b982a

Browse files
committed
Use shared_from_this while creating BpfProgram or BpfMap, make get_map_names and get_program_names non-const
1 parent 1c2e170 commit c0b982a

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/core/bpf_object.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ void BpfObject::load() {
7474

7575
// ==================== Program Methods ====================
7676

77-
py::list BpfObject::get_program_names() const {
77+
py::list BpfObject::get_program_names() {
7878
if (!loaded_) {
7979
throw BpfException("BPF object not loaded");
8080
}
@@ -106,7 +106,7 @@ BpfObject::_get_or_create_program(struct bpf_program *prog) {
106106
}
107107

108108
// Create and cache
109-
auto bpf_prog = std::make_shared<BpfProgram>(this, prog, prog_name);
109+
auto bpf_prog = std::make_shared<BpfProgram>(shared_from_this(), prog, prog_name);
110110
prog_cache_[prog_name] = bpf_prog;
111111

112112
return bpf_prog;
@@ -125,7 +125,7 @@ std::shared_ptr<BpfProgram> BpfObject::get_program(const std::string &name) {
125125

126126
// Create and cache
127127
struct bpf_program *raw_prog = find_program_by_name(name);
128-
auto prog = std::make_shared<BpfProgram>(this, raw_prog, name);
128+
auto prog = std::make_shared<BpfProgram>(shared_from_this(), raw_prog, name);
129129
prog_cache_[name] = prog;
130130

131131
return prog;
@@ -148,8 +148,8 @@ BpfObject::find_program_by_name(const std::string &name) const {
148148

149149
py::dict BpfObject::get_cached_programs() const {
150150
py::dict programs;
151-
for (const auto &[name, prog] : prog_cache_) {
152-
programs[name] = prog;
151+
for (const auto &entry : prog_cache_) {
152+
programs[entry.first.c_str()] = entry.second;
153153
}
154154
return programs;
155155
}
@@ -178,7 +178,7 @@ py::dict BpfObject::attach_all() {
178178

179179
// ==================== Map Methods ====================
180180

181-
py::list BpfObject::get_map_names() const {
181+
py::list BpfObject::get_map_names() {
182182
if (!loaded_) {
183183
throw BpfException("BPF object not loaded");
184184
}
@@ -249,8 +249,8 @@ struct bpf_map *BpfObject::find_map_by_name(const std::string &name) const {
249249

250250
py::dict BpfObject::get_cached_maps() const {
251251
py::dict maps;
252-
for (const auto &[name, map] : maps_cache_) {
253-
maps[name] = map;
252+
for (const auto &entry : maps_cache_) {
253+
maps[entry.first.c_str()] = entry.second;
254254
}
255255
return maps;
256256
}

src/core/bpf_object.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,15 @@ class BpfObject : public std::enable_shared_from_this<BpfObject> {
6565
py::dict attach_all();
6666

6767
// Program access
68-
[[nodiscard]] py::list get_program_names() const;
68+
[[nodiscard]] py::list get_program_names();
6969
[[nodiscard]] std::shared_ptr<BpfProgram>
7070
get_program(const std::string &name);
7171
[[nodiscard]] struct bpf_program *
7272
find_program_by_name(const std::string &name) const;
7373
[[nodiscard]] py::dict get_cached_programs() const;
7474

7575
// Map access
76-
[[nodiscard]] py::list get_map_names() const;
76+
[[nodiscard]] py::list get_map_names();
7777
[[nodiscard]] std::shared_ptr<BpfMap> get_map(const std::string &name);
7878
[[nodiscard]] struct bpf_map *find_map_by_name(const std::string &name) const;
7979
[[nodiscard]] py::dict get_cached_maps() const;

0 commit comments

Comments
 (0)