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