pingConfig method

Future<List<PingResult>> pingConfig(
  1. String jsonConfig,
  2. List<int> ports,
  3. String testingUrl
)

Implementation

Future<List<PingResult>> pingConfig(
  String jsonConfig,
  List<int> ports,
  String testingUrl,
) async {
  final urlPtr = StringUtf8Pointer(testingUrl).toNativeUtf8();
  final configPtr = StringUtf8Pointer(jsonConfig).toNativeUtf8();
  final pingConfig = _pingConfigPtr.asFunction<_PingConfigDart>();

  try {
    final portsPtr = calloc<Int32>(ports.length);
    for (var i = 0; i < ports.length; i++) {
      portsPtr[i] = ports[i];
    }

    final result =
        _getTransferPayload(
              await Isolate.run(
                () => pingConfig(configPtr, portsPtr, ports.length, urlPtr),
              ),
            )
            as List<dynamic>;

    return result.map((json) => PingResult.fromJson(json)).toList();
  } finally {
    calloc.free(urlPtr);
    calloc.free(configPtr);
  }
}