implementAsBlocking static method

NSURLHandleClient implementAsBlocking({
  1. required void URLHandle_resourceDataDidBecomeAvailable_(
    1. NSURLHandle,
    2. NSData
    ),
  2. required void URLHandleResourceDidBeginLoading_(
    1. NSURLHandle
    ),
  3. required void URLHandleResourceDidFinishLoading_(
    1. NSURLHandle
    ),
  4. required void URLHandleResourceDidCancelLoading_(
    1. NSURLHandle
    ),
  5. required void URLHandle_resourceDidFailLoadingWithReason_(
    1. NSURLHandle,
    2. NSString
    ),
  6. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSURLHandleClient protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly. All methods that can be implemented as blocking listeners will be.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSURLHandleClient implementAsBlocking({
  required void Function(objc.NSURLHandle, objc.NSData)
  URLHandle_resourceDataDidBecomeAvailable_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidBeginLoading_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidFinishLoading_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidCancelLoading_,
  required void Function(objc.NSURLHandle, objc.NSString)
  URLHandle_resourceDidFailLoadingWithReason_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSURLHandleClient');
  NSURLHandleClient
      .URLHandle_resourceDataDidBecomeAvailable_.implementAsBlocking(
    builder,
    URLHandle_resourceDataDidBecomeAvailable_,
  );
  NSURLHandleClient.URLHandleResourceDidBeginLoading_.implementAsBlocking(
    builder,
    URLHandleResourceDidBeginLoading_,
  );
  NSURLHandleClient.URLHandleResourceDidFinishLoading_.implementAsBlocking(
    builder,
    URLHandleResourceDidFinishLoading_,
  );
  NSURLHandleClient.URLHandleResourceDidCancelLoading_.implementAsBlocking(
    builder,
    URLHandleResourceDidCancelLoading_,
  );
  NSURLHandleClient
      .URLHandle_resourceDidFailLoadingWithReason_.implementAsBlocking(
    builder,
    URLHandle_resourceDidFailLoadingWithReason_,
  );
  builder.addProtocol($protocol);
  return NSURLHandleClient.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}