invokeIdentifier method
Resolves a stable Semantics identifier and dispatches one public
action while preserving the caller's required generation fence.
Implementation
Future<PatchbayInvocation> invokeIdentifier({
required String identifier,
required int generation,
required PatchbaySemanticsAction action,
String? text,
bool inputWasStdin = false,
String? requestId,
}) {
final String id = requestId ?? _newRequestId();
final List<String> invalid = <String>[
if (identifier.isEmpty) 'identifier',
if (generation < 0) 'generation',
if (!action.isPublicIdentifierAction) 'action',
];
if (invalid.isNotEmpty) {
return Future<PatchbayInvocation>.value(
PatchbayInvocation.rejected(
requestId: id,
rejection: PatchbayRejection(
code: 'invalidUiArguments',
notice:
'identifier must be non-empty, generation non-negative, and '
'action publicly declared.',
details: <String, Object?>{'invalid': invalid},
),
),
);
}
return _dispatch(
requestId: id,
action: action,
identifier: identifier,
text: text,
inputWasStdin: inputWasStdin,
resolve: (int? pinnedGeneration) => _resolver.byIdentifier(
identifier: identifier,
expectedGeneration: pinnedGeneration ?? generation,
action: action,
),
);
}