/// <summary>
        /// Get all messages for the provider with the given name.
        /// </summary>
        /// <param name="providerName">The name of the provider</param>
        /// <returns>All messages in this store for the given provdider</returns>
        public IList <IMessage> GetMessages(string providerName)
        {
            MessageProviderFactory factory = MessageProviderFactory.Instance;

            using (MessageDataContext context = new MessageDataContext(connectionString))
            {
                IQueryable <StoredMessage> query = from msg in context.Messages
                                                   where !msg.IsDeleted
                                                   select msg;

                return(MakeMessages(query.ToList <StoredMessage>()));
            }
        }
        private void OnMessagesExpired(IList <string> expiredIds)
        {
            MessageProviderFactory factory = MessageProviderFactory.Instance;

            foreach (string expiredId in expiredIds)
            {
                IMessage message = GetMessage(expiredId);

                if (message != null)
                {
                    MessageProvider provider = factory.GetProvider(message.Provider);

                    if (provider != null)
                    {
                        provider.OnMessageExpired(this, message);
                    }
                }
            }
        }
        /// <summary>
        /// Send all pending messages.
        /// </summary>
        public void SendAllMessages()
        {
            MessageProviderFactory factory = MessageProviderFactory.Instance;

            using (MessageDataContext context = new MessageDataContext(connectionString))
            {
                IQueryable <StoredMessage> query = from msg in context.Messages
                                                   where !msg.IsDeleted
                                                   select msg;

                IList <IMessage> messages = MakeMessages(query.ToList <StoredMessage>());

                foreach (IMessage message in messages)
                {
                    MessageProvider provider = factory.GetProvider(message.Provider);

                    if (provider != null)
                    {
                        provider.Send(message);
                    }
                }
            }
        }