Rather than having pending_queue store the (conn, dpids), perhaps we should just iterate over all switch-controller pairs? Seems like a clearer separation of concerns to me.

i.e.

```
for (dpid, controller_id) in self.simulation.all_controller_switch_pairs:
  for p in pending_queue.get_message_ids(dpid, controller_id):
...
```

Fine to add this as a TODO to be refactored later