Notification changes
[pithos-ms-client] / trunk / Pithos.Core / Agents / Notifier.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Pithos.Core
7 {
8     public class Notifier:IDisposable
9     {
10         private readonly IStatusNotification _statusNotification;
11
12         private readonly Notification _endNotification;
13
14         public Notifier(IStatusNotification statusNotification,string startMessage,string endMessage)
15             :this(statusNotification,new Notification{Message=startMessage},new Notification{Message=endMessage} )
16         {
17             
18         }
19
20         public Notifier(IStatusNotification statusNotification,Notification startNotification,Notification endNotification)
21         {
22             _statusNotification = statusNotification;
23             _endNotification = endNotification;
24             _statusNotification.Notify(startNotification);
25         }
26
27
28         public void Dispose()
29         {
30             Dispose(true);
31             GC.SuppressFinalize(this);
32         }
33
34         ~Notifier()
35         {
36             Dispose(false);
37         }
38
39         protected virtual void Dispose(bool disposing)
40         {
41             if (disposing)
42             {
43                 _statusNotification.Notify(_endNotification);        
44             }
45         }
46     }
47 }