dactor 1.1.0 copy "dactor: ^1.1.0" to clipboard
dactor: ^1.1.0 copied to clipboard

An actor system for Dart

example/dactor_example.dart

import 'package:dactor/dactor.dart';
import 'package:dactor/src/local_actor_system.dart';
import 'package:dactor/src/local_message.dart';

class CounterActor extends Actor {
  int _count = 0;

  @override
  Future<void> onMessage(dynamic message) async {
    if (message is LocalMessage) {
      if (message.payload == 'increment') {
        _count++;
        print('Count: $_count');
        message.sender?.tell(LocalMessage(payload: _count));
      } else if (message.payload == 'get') {
        message.sender?.tell(LocalMessage(payload: _count));
      }
    }
  }

  @override
  void preStart() {
    print('Counter actor started');
  }

  @override
  void postStop() {
    print('Counter actor stopped');
  }
}

void main() async {
  final system = LocalActorSystem();
  final actor = await system.spawn('counter', () => CounterActor());

  actor.tell(LocalMessage(payload: 'increment'));
  actor.tell(LocalMessage(payload: 'increment'));

  final response = await actor.ask(
    LocalMessage(payload: 'get'),
    Duration(seconds: 1),
  );
  print('Count from ask: ${(response as LocalMessage).payload}');

  await system.shutdown();
}
1
likes
130
points
25
downloads

Publisher

unverified uploader

Weekly Downloads

An actor system for Dart

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

cbor, meta, test, uuid

More

Packages that depend on dactor