Switch data collection to use graphs
In the FIRUS server codebase, data requests are represented by nodes and edges in an Erlang graph. The edges represent the FTD of the request and connect nodes which represent the requestor and the driver access point. There are several benefits to this:
- Requests to a driver attribute occur only once per FTD -- no matter how many clients specify that attribute and FTD combination.
- Since similar requests are automatically merged, all clients receive the exact same data and timestamp.
- The graph data structure (in Erlang) can be queried to return all sorts of interesting formation.
Once the core has been converted, we need to run performance tests to make sure the new approach runs faster, or at least the same, as the current implementation.