invoke method

  1. @override
InvokeResponse invoke(
  1. Map params,
  2. Responder responder,
  3. InvokeResponse response,
  4. Node? parentNode, [
  5. int maxPermission = Permission.CONFIG,
])
override

Called by the link internals to invoke this node.

Implementation

@override
InvokeResponse invoke(
  Map params,
  Responder responder,
  InvokeResponse response,
  Node? parentNode, [
  int maxPermission = Permission.CONFIG,
]) {
  if (_invokeCallback == null) {
    return response..close(DSError.NOT_IMPLEMENTED);
  }

  var parentPath = parentNode is LocalNode ? parentNode.path : null;

  var permission = responder.nodeProvider.permissions.getPermission(
    parentPath,
    responder,
  );

  if (maxPermission < permission) {
    permission = maxPermission;
  }

  if (getInvokePermission() <= permission) {
    _invokeCallback!(params, responder, response, parentNode as LocalNode?);
    return response;
  } else {
    return response..close(DSError.PERMISSION_DENIED);
  }
}