A Dante Device Manager stores information related to interacting with dante devices. Right now, it stores mdns information found from start_discovery() and a sequence ID. Currently, the control of dante devices is separate from the discovery of them. I found that for some devices on the network, mdns discovery can be slow or not happen at all, so I switched to using direct ip addresses and channel numbers/names (essentially exactly the information that is needed to send the udp packet to make the connection). In the case of make_subscription() and clear_subscription(), the only state changed by DanteDeviceManager is a sequence ID, which is an incrementing 16-bit integer, though whether this is really needed is suspect.