/// <summary> /// Constructor /// </summary> public RaspMailHandler(IMailHandlerConfiguration configuration) { IMailServerConfiguration sendingServerConfiguration = configuration.SendingServerConfiguration; IMailServerConfiguration recievingServerConfiguration = configuration.RecievingServerConfiguration; Type outBoxImplementationType = configuration.OutBoxImplementationType; Type inBoxImplementationType = configuration.InBoxImplementationType; _inboxFactory = InboxFactory.GetInstance(); _inbox = _inboxFactory.GetInbox(recievingServerConfiguration, inBoxImplementationType, this); _outbox = (IOutbox)outBoxImplementationType.GetConstructor(new Type[0]).Invoke(null); _outbox.OutboxServerConfiguration = sendingServerConfiguration; if (_inbox != null) { _inbox.OnExceptionThrown += new MailboxExceptionThrown(CallbackExceptionThrown); _inbox.OnInboxStateChange += new OnInboxStateChangeDelegate(CallbackOnInboxStateChange); } if (_outbox != null) { _outbox.OnExceptionThrown += new MailboxExceptionThrown(CallbackExceptionThrown); } }
/// <summary> /// Returns the singleton instance of the InboxFactory /// </summary> /// <returns></returns> public static InboxFactory GetInstance() { lock (_instanceLock) { if (_instance == null) _instance = new InboxFactory(); return _instance; } }