create method
McpTaskRecord
create({
- required String? owner,
- required McpTaskFlavor flavor,
- required String method,
- int? requestedTtlMs,
- DateTime? now,
Create a working task. The id is 128 random bits from a secure
source, so it cannot be guessed even where no owner binds it.
Implementation
McpTaskRecord create({
required String? owner,
required McpTaskFlavor flavor,
required String method,
int? requestedTtlMs,
DateTime? now,
}) {
purgeExpired(now: now);
final live = _tasks.values.where((t) => t.owner == owner && !t.isTerminal).length;
if (live >= maxTasksPerOwner) {
throw StateError('Too many tasks in flight ($live)');
}
final ttl = requestedTtlMs == null
? defaultTtl.inMilliseconds
: min(requestedTtlMs, maxTtl.inMilliseconds);
final id = List.generate(16, (_) => _random.nextInt(256).toRadixString(16).padLeft(2, '0')).join();
final record = McpTaskRecord._(id, owner, flavor, method, (now ?? DateTime.now()).toUtc(), ttl,
pollInterval.inMilliseconds);
_tasks[id] = record;
return record;
}