Ejemplo n.º 1
0
 void NotificationService_Sending(object sender, NotificationEventArgs e)
 {
     if (_filter != null && !_filter(e.Message))
     return;
       lock (_lock) {
     while (_sentMessages.Count > _maxMessages)
       _sentMessages.RemoveAt(0);
     _sentMessages.Add(e.Message);
     if (_blockAll)
       e.Message.Status = MessageStatus.Blocked; //to prevent it from sending
       }
 }
Ejemplo n.º 2
0
 public async Task SendAsync(OperationContext context, NotificationMessage message) {
   message.AttemptCount++;
   var provider = _providers.FirstOrDefault(c => c.CanSend(message));
   var args = new NotificationEventArgs(message, provider);
   if (Sending != null) {
     Sending(this, args);
     if (message.Status == MessageStatus.Blocked || message.Status == MessageStatus.Sent) {
       if (_log != null)
         _log.LogMessage(context, message);
       return;
     }
     provider = args.Provider; 
   }
   Util.Check(provider != null, 
     "Notification service failed to find notification provider for a message, message type: '{0}', media type: '{1}'.", 
     message.Type, message.MediaType);
   await provider.SendAsync(context, message).ConfigureAwait(false); 
   if (Sent != null)
     Sent(this, args); 
   if (_log != null)
     _log.LogMessage(context, message);
 }