audit_spy 1.0.0 copy "audit_spy: ^1.0.0" to clipboard
audit_spy: ^1.0.0 copied to clipboard

Visionary Software Solutions Audit Spy => Add some Audit Logging to iSpy

example/audit_spy_example.dart

import 'dart:math';

import 'package:audit_spy/audit_spy.dart';
import 'package:i_spy/i_spy.dart';
import 'package:logging/logging.dart';

final class Ping implements Event {}

final class Pong implements Event {}

final MutableAuditingMediator<Pong> pongMediator =
    auditedSimpleEventMediator<Pong>();
final MutableAuditingMediator<Ping> pingMediator =
    auditedSimpleEventMediator<Ping>();

final fate = Random();

final class Pinger
    with BasicObservable<Ping>
    implements Observable<Ping>, Observer<Pong> {
  final Set<Subscription<Ping>> stored = {};
  Pinger() {
    pongMediator.add(this);
    add(pingMediator);
  }

  void ping() => notifyObservers(Ping());

  @override
  void update(final Pong e) {
    if (fate.nextBool()) {
      ping();
    }
  }

  @override
  Set<Subscription<Ping>> get subscriptions => stored;
}

final class Ponger
    with BasicObservable<Pong>
    implements Observable<Pong>, Observer<Ping> {
  final Set<Subscription<Pong>> stored = {};
  Ponger() {
    pingMediator.add(this);
    add(pongMediator);
  }

  @override
  void update(final Ping e) {
    if (fate.nextBool()) {
      pong();
    }
  }

  void pong() => notifyObservers(Pong());
  @override
  Set<Subscription<Pong>> get subscriptions => stored;
}

/// Demonstrates that [Logging] goes to console.
void main() {
  final caught = [];
  final Pinger ping = Pinger();
  final Ponger pong = Ponger();
  Logger.root.onRecord.listen((record) {
    print(record);
    caught.add(record);
  });
  ping.ping();
  pong.pong();
  assert(caught.isNotEmpty);
}
1
likes
150
points
22
downloads

Publisher

verified publishervisionary.software

Weekly Downloads

Visionary Software Solutions Audit Spy => Add some Audit Logging to iSpy

Repository

Documentation

API reference

License

GPL-3.0 (license)

Dependencies

i_spy, logging

More

Packages that depend on audit_spy