| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- <?php
 - 
 - /*
 -  * This file is part of SwiftMailer.
 -  * (c) 2004-2009 Chris Corbyn
 -  *
 -  * For the full copyright and license information, please view the LICENSE
 -  * file that was distributed with this source code.
 -  */
 - 
 - 
 - /**
 -  * Reduces network flooding when sending large amounts of mail.
 -  * @package Swift
 -  * @subpackage Plugins
 -  * @author Chris Corbyn
 -  */
 - class Swift_Plugins_AntiFloodPlugin
 -   implements Swift_Events_SendListener, Swift_Plugins_Sleeper
 - {
 -   
 -   /**
 -    * The number of emails to send before restarting Transport.
 -    * @var int
 -    * @access private
 -    */
 -   private $_threshold;
 -   
 -   /**
 -    * The number of seconds to sleep for during a restart.
 -    * @var int
 -    * @access private
 -    */
 -   private $_sleep;
 -   
 -   /**
 -    * The internal counter.
 -    * @var int
 -    * @access private
 -    */
 -   private $_counter = 0;
 -   
 -   /**
 -    * The Sleeper instance for sleeping.
 -    * @var Swift_Plugins_Sleeper
 -    * @access private
 -    */
 -   private $_sleeper;
 -   
 -   /**
 -    * Create a new AntiFloodPlugin with $threshold and $sleep time.
 -    * @param int $threshold
 -    * @param int $sleep time
 -    * @param Swift_Plugins_Sleeper $sleeper (not needed really)
 -    */
 -   public function __construct($threshold = 99, $sleep = 0,
 -     Swift_Plugins_Sleeper $sleeper = null)
 -   {
 -     $this->setThreshold($threshold);
 -     $this->setSleepTime($sleep);
 -     $this->_sleeper = $sleeper;
 -   }
 -   
 -   /**
 -    * Set the number of emails to send before restarting.
 -    * @param int $threshold
 -    */
 -   public function setThreshold($threshold)
 -   {
 -     $this->_threshold = $threshold;
 -   }
 -   
 -   /**
 -    * Get the number of emails to send before restarting.
 -    * @return int
 -    */
 -   public function getThreshold()
 -   {
 -     return $this->_threshold;
 -   }
 -   
 -   /**
 -    * Set the number of seconds to sleep for during a restart.
 -    * @param int $sleep time
 -    */
 -   public function setSleepTime($sleep)
 -   {
 -     $this->_sleep = $sleep;
 -   }
 -   
 -   /**
 -    * Get the number of seconds to sleep for during a restart.
 -    * @return int
 -    */
 -   public function getSleepTime()
 -   {
 -     return $this->_sleep;
 -   }
 -   
 -   /**
 -    * Invoked immediately before the Message is sent.
 -    * @param Swift_Events_SendEvent $evt
 -    */
 -   public function beforeSendPerformed(Swift_Events_SendEvent $evt)
 -   {
 -   }
 -   
 -   /**
 -    * Invoked immediately after the Message is sent.
 -    * @param Swift_Events_SendEvent $evt
 -    */
 -   public function sendPerformed(Swift_Events_SendEvent $evt)
 -   {
 -     ++$this->_counter;
 -     if ($this->_counter >= $this->_threshold)
 -     {
 -       $transport = $evt->getTransport();
 -       $transport->stop();
 -       if ($this->_sleep)
 -       {
 -         $this->sleep($this->_sleep);
 -       }
 -       $transport->start();
 -       $this->_counter = 0;
 -     }
 -   }
 -   
 -   /**
 -    * Sleep for $seconds.
 -    * @param int $seconds
 -    */
 -   public function sleep($seconds)
 -   {
 -     if (isset($this->_sleeper))
 -     {
 -       $this->_sleeper->sleep($seconds);
 -     }
 -     else
 -     {
 -       sleep($seconds);
 -     }
 -   }
 -   
 - }
 
 
  |