README revision cc7f415c
1460998e0SShuo ChenEngineering a Reactor 2460998e0SShuo Chen -- how to write a non-blocking network library from scratch. 3460998e0SShuo Chen 4460998e0SShuo ChenStep 0: a do-nothing event loop 542bf2220SShuo Chen EventLoop, assertInLoopThread() 6cc7f415cSShuo Chen test1: poll for 10 seconds, creates two threads, each one has an EventLoop 7460998e0SShuo Chen test2: abort() as it accesses event loop created in a different thread 8460998e0SShuo Chen 942bf2220SShuo ChenStep 1: prototype of reactor 1042bf2220SShuo Chen Channel, Poller, updateChannel(). 11cc7f415cSShuo Chen test1: poll for ever, creates two threads, each one has an EventLoop 1242bf2220SShuo Chen test2: same as before 1342bf2220SShuo Chen test3: poll a timerfd, which expires in 5 seconds 1442bf2220SShuo Chen 1542bf2220SShuo ChenStep 2: TimerQueue 1642bf2220SShuo Chen TimerQueue, Timer, TimerId, EventLoop::runAfter, EventLoop::runEvery 17cc7f415cSShuo Chen not thread safe 1842bf2220SShuo Chen test3: use EventLoop::runAfter 19cc7f415cSShuo Chen test4: timer queue unittest 2042bf2220SShuo Chen 2142bf2220SShuo ChenStep 3: wakeup(), runInLoop() 22cc7f415cSShuo Chen test5: runInLoop() 23cc7f415cSShuo Chen test6: runAfter() in a different thread 2442bf2220SShuo Chen 2542bf2220SShuo ChenStep 4: Acceptor 2642bf2220SShuo Chen 2742bf2220SShuo ChenStep 5: TcpServer 2842bf2220SShuo Chen 2942bf2220SShuo ChenStep 6: TcpConnection up and down 3042bf2220SShuo Chen 3142bf2220SShuo ChenStep 7: TcpConnection read 3242bf2220SShuo Chen 3342bf2220SShuo ChenStep 8: TcpConnection write 3442bf2220SShuo Chen 3542bf2220SShuo ChenStep 9: multithreaded TcpServer 3642bf2220SShuo Chen 3742bf2220SShuo ChenStep 10: Connector 3842bf2220SShuo Chen 3942bf2220SShuo ChenStep 11: TcpClient 4042bf2220SShuo Chen 4142bf2220SShuo ChenStep 12: epoll 4242bf2220SShuo Chen 43