Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
digitalascetic/batch-util / ComposedProgressMonitor.php
Size: Mime:
<?php
/**
 * Created by IntelliJ IDEA.
 * User: martino
 * Date: 07/04/18
 * Time: 10:13
 */

namespace DigitalAscetic\BatchUtil;

/**
 * Class ComposedProgressMonitor
 * @package DigitalAscetic\BatchUtil
 */
class ComposedProgressMonitor extends AbstractProgressMonitor
{

    /**
     * @var BatchProgressMonitor[]
     */
    private array $monitors;

    /**
     * ComposedProgressMonitor constructor.
     * @param BatchProgressMonitor[] $monitors
     */
    public function __construct(array $monitors = array())
    {
        parent::__construct();
        $this->monitors = $monitors;
    }


    /**
     * @param null $data
     */
    public function start($data = null): void
    {
        foreach ($this->monitors as $monitor) {
            $monitor->start($data);
        }
        $this->started = true;
    }

    /**
     * @param null $data
     */
    public function advance($data = null): void
    {
        foreach ($this->monitors as $monitor) {
            $monitor->advance($data);
        }
    }

    /**
     * @param null $data
     */
    public function finish($data = null): void
    {
        foreach ($this->monitors as $monitor) {
            $monitor->finish($data);
        }
        $this->finished = true;
    }

    /**
     * @param null $data
     */
    public function message($data = null): void
    {
        foreach ($this->monitors as $monitor) {
            $monitor->message($data);
        }
    }

    /**
     * @param int $count
     */
    public function setTotalSteps(int $count = 0): void
    {
        foreach ($this->monitors as $monitor) {
            $monitor->setTotalSteps($count);
        }
    }

    /**
     * @param BatchProgressMonitor $monitor
     */
    public function addMonitor(BatchProgressMonitor $monitor)
    {
        $this->monitors[] = $monitor;
    }

}