-peer protocol
*header
*handshake
- -choke
- -unchoke
- -interested
- -not_interested
+ *choke
+ *unchoke
+ *interested
+ *not_interested
+ -choke_received
+ -unchoke_received
+ -interested_received
+ -not_interested_received
-have
-necessary for dht?
-skip?
+ -have_received
-bitfield
-use to start filling priority queue of pieces
-start loading up pieces
+ -bitfield_received
-request
+ -request_receivied
-piece
+ -piece_received
-cancel
+ -cancel_received
-reject
+ -reject_received
-hash_request
+ -hash_request_received
-hashes
+ -hashes_received
-hash_reject
+ -hash_reject_received
-tests
-header
-handshake
+ -choke/unchoke
-tests
-watch
-signal handler