MCPcopy Create free account
hub / github.com/apache/trafficserver / modify

Method modify

src/iocore/net/EventIO.cc:61–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61int
62EventIO::modify(int e)
63{
64 if (!this->syscall) {
65 return 0;
66 }
67
68 ink_assert(event_loop);
69#if TS_USE_EPOLL && !defined(USE_EDGE_TRIGGER)
70 struct epoll_event ev;
71 memset(&ev, 0, sizeof(ev));
72 int new_events = events, old_events = events;
73 if (e < 0)
74 new_events &= ~(-e);
75 else
76 new_events |= e;
77 events = new_events;
78 ev.events = new_events;
79 ev.data.ptr = this;
80 if (!new_events)
81 return epoll_ctl(event_loop->epoll_fd, EPOLL_CTL_DEL, fd, &ev);
82 else if (!old_events)
83 return epoll_ctl(event_loop->epoll_fd, EPOLL_CTL_ADD, fd, &ev);
84 else
85 return epoll_ctl(event_loop->epoll_fd, EPOLL_CTL_MOD, fd, &ev);
86#endif
87#if TS_USE_KQUEUE && !defined(USE_EDGE_TRIGGER)
88 int n = 0;
89 struct kevent ev[2];
90 int ee = events;
91 if (e < 0) {
92 ee &= ~(-e);
93 if ((-e) & EVENTIO_READ)
94 EV_SET(&ev[n++], fd, EVFILT_READ, EV_DELETE, 0, 0, this);
95 if ((-e) & EVENTIO_WRITE)
96 EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_DELETE, 0, 0, this);
97 } else {
98 ee |= e;
99 if (e & EVENTIO_READ)
100 EV_SET(&ev[n++], fd, EVFILT_READ, EV_ADD | INK_EV_EDGE_TRIGGER, 0, 0, this);
101 if (e & EVENTIO_WRITE)
102 EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_ADD | INK_EV_EDGE_TRIGGER, 0, 0, this);
103 }
104 events = ee;
105 if (n)
106 return kevent(event_loop->kqueue_fd, &ev[0], n, nullptr, 0, nullptr);
107 else
108 return 0;
109#endif
110 (void)e; // ATS_UNUSED
111 return 0;
112}
113
114int
115EventIO::refresh(int e)

Callers 6

read_disableFunction · 0.80
write_disableFunction · 0.80
reenableMethod · 0.80
reenable_reMethod · 0.80
process_enabled_listMethod · 0.80
process_ready_listMethod · 0.80

Calls 2

memsetFunction · 0.85
keventClass · 0.70

Tested by

no test coverage detected