compareStructures static method

int compareStructures(
  1. Structure? initial,
  2. Structure? next,
  3. DistributedConnection connection
)
Compare two structures Initial structure to compare with Next structure to compare with the initial DistributedConnection is required in case a structure holds items at the other end

Implementation

static int compareStructures(
    Structure? initial, Structure? next, DistributedConnection connection) {
  if (next == null) return StructureComparisonResult.Null;

  if (initial == null) return StructureComparisonResult.Structure;

  if (next == initial) return StructureComparisonResult.Same;

  if (initial.length != next.length)
    return StructureComparisonResult.Structure;

  var previousKeys = initial.getKeys();
  var nextKeys = next.getKeys();

  for (var i = 0; i < previousKeys.length; i++)
    if (previousKeys[i] != nextKeys[i])
      return StructureComparisonResult.Structure;

  var previousTypes = getStructureDateTypes(initial, connection);
  var nextTypes = getStructureDateTypes(next, connection);

  for (var i = 0; i < previousTypes.length; i++)
    if (previousTypes[i] != nextTypes[i])
      return StructureComparisonResult.StructureSameKeys;

  return StructureComparisonResult.StructureSameTypes;
}