Skip to content

Commit

Permalink
Fix issue #8: Add logging of events that flow through event bus
Browse files Browse the repository at this point in the history
  • Loading branch information
marcojakob committed Sep 16, 2013
1 parent 3d8a2b3 commit d5e9b7f
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 4 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
Changelog
================

## Version 0.2.3 (2013-09-16) ##
* Fix issue #8: Add logging of events that flow through event bus

## Version 0.2.2 (2013-09-16) ##
* Change default of SimpleEventBus to sync (same as factory in EventBus)

Expand Down
8 changes: 7 additions & 1 deletion example/event_bus_example.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,19 @@ import 'dart:html';

import 'dart:async';
import 'events.dart' as events;
import 'package:logging_handlers/logging_handlers_shared.dart';
import 'package:logging/logging.dart';

int counterA = 1;
int counterB = 1;

void main() {
// Init logging.
Logger.root.onRecord.listen(new PrintHandler().call);
Logger.root.level = Level.FINEST;

// Initialize the global event bus.
events.init(new events.EventBus());
events.init(new events.LoggingEventBus());

// Initialize the listener boxes.
Listener listener1 = new Listener(query('#listener-1'));
Expand Down
4 changes: 2 additions & 2 deletions example/events.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ void init(EventBus eventBus) {
_eventBus = eventBus;
}

final EventType<String> textUpdateA = new EventType<String>();
final EventType<String> textUpdateB = new EventType<String>();
final EventType<String> textUpdateA = new EventType<String>('textUpdateA');
final EventType<String> textUpdateB = new EventType<String>('textUpdateB');
9 changes: 9 additions & 0 deletions lib/event_bus.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
library event_bus;

import 'package:logging/logging.dart';
import 'dart:async';

part 'src/simple_event_bus.dart';
part 'src/logging_event_bus.dart';

/**
* Dispatches events to listeners using the Dart [Stream] API. The [EventBus]
Expand Down Expand Up @@ -58,6 +60,13 @@ abstract class EventBus {
*/
class EventType<T> {

String name;

/**
* Constructor with an optional [name] for logging purposes.
*/
EventType([this.name]);

/**
* Returns true if the provided data is of type [T].
*
Expand Down
14 changes: 14 additions & 0 deletions lib/src/logging_event_bus.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
part of event_bus;

final _logger = new Logger("event_bus");

/**
* A [SimpleEventBus] that adds logging.
*/
class LoggingEventBus extends SimpleEventBus {

void fire(EventType/*<T>*/ eventType, /*<T>*/ data) {
super.fire(eventType, data);
_logger.finest('event fired: ${eventType.name}');
}
}
5 changes: 4 additions & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
name: event_bus
version: 0.2.2
version: 0.2.3
author: Marco Jakob <majakob@gmx.ch>
description: A simple Event Bus using Dart Streams for decoupling applications
homepage: https://github.com/marcojakob/dart-event-bus
documentation: http://edu.makery.ch/projects/dart-event-bus
dependencies:
logging: any
dev_dependencies:
browser: any
logging_handlers: any
unittest: any

0 comments on commit d5e9b7f

Please sign in to comment.