This is an automated email from the ASF dual-hosted git repository.
acanary pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 654fbe6 Commenting EventIO methods (#6712)
654fbe6 is described below
commit 654fbe6a6794be4ab060666ed909dcbebeee82ec
Author: a-a-ron <[email protected]>
AuthorDate: Fri May 1 11:12:06 2020 -0500
Commenting EventIO methods (#6712)
* Commenting EventIO methods
---
iocore/net/P_UnixNet.h | 61 ++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 49 insertions(+), 12 deletions(-)
diff --git a/iocore/net/P_UnixNet.h b/iocore/net/P_UnixNet.h
index 800be6b..8399196 100644
--- a/iocore/net/P_UnixNet.h
+++ b/iocore/net/P_UnixNet.h
@@ -79,33 +79,55 @@ class NetEvent;
class UnixUDPConnection;
struct DNSConnection;
struct NetAccept;
+
+/// Unified API for setting and clearing kernel and epoll events.
struct EventIO {
- int fd = -1;
+ int fd = -1; ///< file descriptor, often a system port
#if TS_USE_KQUEUE || TS_USE_EPOLL && !defined(USE_EDGE_TRIGGER) || TS_USE_PORT
- int events = 0;
+ int events = 0; ///< a bit mask of enabled events
#endif
- EventLoop event_loop = nullptr;
- bool syscall = true;
- int type = 0;
+ EventLoop event_loop = nullptr; ///< the assigned event loop
+ bool syscall = true; ///< if false, disable all functionality
(for QUIC)
+ int type = 0; ///< class identifier of union data.
union {
Continuation *c;
NetEvent *ne;
DNSConnection *dnscon;
NetAccept *na;
UnixUDPConnection *uc;
- } data;
+ } data; ///< a kind of continuation
+
int start(EventLoop l, DNSConnection *vc, int events);
int start(EventLoop l, NetAccept *vc, int events);
int start(EventLoop l, NetEvent *ne, int events);
int start(EventLoop l, UnixUDPConnection *vc, int events);
+ /** Setup a continuation to be called when a file descriptor is available
for read or write.
+ @param l the event loop
+ @param fd file descriptor (or port)
+ @param c the continuation to call
+ @param events a mask of flags (for details `man epoll_ctl`)
+ @return int the number of events created, -1 is error
+ */
int start(EventLoop l, int fd, Continuation *c, int events);
- // Change the existing events by adding modify(EVENTIO_READ)
- // or removing modify(-EVENTIO_READ), for level triggered I/O
+
+ /** Alter the events that will trigger the continuation, for level triggered
I/O.
+ @param events add with positive mask(+EVENTIO_READ), or remove with
negative mask (-EVENTIO_READ)
+ @return int the number of events created, -1 is error
+ */
int modify(int events);
- // Refresh the existing events (i.e. KQUEUE EV_CLEAR), for edge triggered I/O
+
+ /** Refresh the existing events (i.e. KQUEUE EV_CLEAR), for edge triggered
I/O
+ @param events mask of events
+ @return int the number of events created, -1 is error
+ */
int refresh(int events);
+
+ /// Remove the kernal or epoll event. Returns 0 on success.
int stop();
+
+ /// Remove the epoll event and close the connection. Returns 0 on success.
int close();
+
EventIO() { data.c = nullptr; }
};
@@ -506,9 +528,15 @@ check_transient_accept_error(int res)
}
}
-//
-// Disable a NetEvent
-//
+/** Disable reading on the NetEvent @a ne.
+ @param nh Nethandler that owns @a ne.
+ @param ne The @c NetEvent to modify.
+
+ - If write is already disable, also disable the inactivity timeout.
+ - clear read enabled flag.
+ - Remove the @c epoll READ flag.
+ - Take @a ne out of the read ready list.
+*/
static inline void
read_disable(NetHandler *nh, NetEvent *ne)
{
@@ -521,6 +549,15 @@ read_disable(NetHandler *nh, NetEvent *ne)
ne->ep.modify(-EVENTIO_READ);
}
+/** Disable writing on the NetEvent @a ne.
+ @param nh Nethandler that owns @a ne.
+ @param ne The @c NetEvent to modify.
+
+ - If read is already disable, also disable the inactivity timeout.
+ - clear write enabled flag.
+ - Remove the @c epoll WRITE flag.
+ - Take @a ne out of the write ready list.
+*/
static inline void
write_disable(NetHandler *nh, NetEvent *ne)
{