diff --git a/core/epoll.cc b/core/epoll.cc index ace82031275b791e66d5a118f48ed25c0520ce8f..17132b2059ddbe41817a609b7c556afc0386f457 100644 --- a/core/epoll.cc +++ b/core/epoll.cc @@ -64,9 +64,9 @@ inline uint32_t events_poll_to_epoll(uint32_t e) } class epoll_obj { - std::unordered_map<fileref, epoll_event> map; + std::unordered_map<file*, epoll_event> map; public: - int add(fileref fp, struct epoll_event *event) + int add(file* fp, struct epoll_event *event) { if (map.count(fp)) { return EEXIST; @@ -74,7 +74,7 @@ public: map.emplace(std::move(fp), *event); return 0; } - int mod(fileref fp, struct epoll_event *event) + int mod(file* fp, struct epoll_event *event) { try { map.at(fp) = *event; @@ -83,7 +83,7 @@ public: return ENOENT; } } - int del(fileref fp) + int del(file* fp) { if (map.erase(fp)) { return 0; @@ -108,7 +108,7 @@ public: if (pollfds[i].revents) { --remain; assert(pollfds[i].fp); - events[remain].data = map[pollfds[i].fp].data; + events[remain].data = map[pollfds[i].fp.get()].data; events[remain].events = events_poll_to_epoll(pollfds[i].revents); trace_epoll_ready(pollfds[i].fp.get(), pollfds[i].revents); @@ -207,13 +207,13 @@ int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) switch (op) { case EPOLL_CTL_ADD: - error = epo->add(std::move(fp), event); + error = epo->add(fp.get(), event); break; case EPOLL_CTL_MOD: - error = epo->mod(std::move(fp), event); + error = epo->mod(fp.get(), event); break; case EPOLL_CTL_DEL: - error = epo->del(std::move(fp)); + error = epo->del(fp.get()); break; default: error = EINVAL;