summaryrefslogtreecommitdiff
path: root/fake-service/lib/smail/combined_observer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'fake-service/lib/smail/combined_observer.rb')
-rw-r--r--fake-service/lib/smail/combined_observer.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/fake-service/lib/smail/combined_observer.rb b/fake-service/lib/smail/combined_observer.rb
new file mode 100644
index 00000000..a3e920ca
--- /dev/null
+++ b/fake-service/lib/smail/combined_observer.rb
@@ -0,0 +1,23 @@
+module Smail
+ class CombinedObserver
+ def initialize(*observers)
+ @observers = observers
+ end
+
+ def <<(observer)
+ @observers << observer
+ end
+
+ def mail_added(mail)
+ @observers.each { |o| o.mail_added(mail) }
+ end
+
+ def mail_removed(mail)
+ @observers.each { |o| o.mail_removed(mail) }
+ end
+
+ def mail_updated(before, after)
+ @observers.each { |o| o.mail_updated(before, after) }
+ end
+ end
+end