blob: e06612e5def5e1d177008f7159492fc203877634 [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'package:file/file.dart';
import 'package:file/src/io.dart' as io;
import 'recording_file_system.dart';
import 'recording_file_system_entity.dart';
/// [Link] implementation that records all invocation activity to its file
/// system's recording.
class RecordingLink extends RecordingFileSystemEntity<Link> implements Link {
/// Creates a new `RecordingLink`.
RecordingLink(RecordingFileSystem fileSystem, io.Link delegate)
: super(fileSystem, delegate) {
methods.addAll(<Symbol, Function>{
#create: _create,
#createSync: delegate.createSync,
#update: _update,
#updateSync: delegate.updateSync,
#target: delegate.target,
#targetSync: delegate.targetSync,
});
}
@override
Link wrap(Link delegate) => super.wrap(delegate) ?? wrapLink(delegate);
Future<Link> _create(String target, {bool recursive: false}) =>
delegate.create(target, recursive: recursive).then(wrap);
Future<Link> _update(String target) => delegate.update(target).then(wrap);
}