One queue state per direction.

There's a lot that goes into this change, but the main idea is that each
direction (guest_to_host, host_to_guest) has a QueueState instead of the
two directions sharing one. This complicates some things but makes
separation of responsibility easier for others. Here are some changes

- Allocation of a QueuePair requires checking that both the host_to_guest
  and guest_to_host states are clear
- The Connection class is removed and there is now only a Sender and a
  Receiver. The Sender and Receiver each take care of their own exiting,
  and the Connection is unnecessary because there's nothing special to
  be done when both the Sender and Receiver are finished that wouldn't
  be done by them finishing individually.
- The socket interfaces are inside of SocketSender and SocketReceiver to
  handle closes implicitly.
- The main's Worker class no longer seems valuable. Two small functions
  get the work done.
- A queue shutdown in one direction can leave the other direction open.

BUG: 72654144

Change-Id: If7073c4aa7596dd526fc6f7f51deb2360354df63
6 files changed
tree: 421bf7bfaee4da3db96f5842cad3926d266d2c5d
  1. common/
  2. guest/
  3. host/
  4. tools/
  5. Android.bp
  6. Android.mk
  7. OWNERS