Esempio n. 1
0
 public function scheduleMessage($to, $txt, $date)
 {
     $scheduler = new Scheduler($this->user, $this->token);
     $scheduleId = $scheduler->schedule($to, $txt, $date);
     return $scheduleId;
 }
Esempio n. 2
0
    Hatcheries::$debug = (bool) ($debugFlags & Hatcheries::debugFlag);
    $timeline->hatcheries->add(new Hatchery(0, 3));
    $timeline->farms->add(new Farm(0, $Hatchery->supplyCapacity));
    $timeline->farms->add(new Farm(0, $Overlord->supplyCapacity));
    //$timeline->queues->add(new ProductionQueue($Hatchery));
}
$timeline->queues->add(new ProductionQueue(Product::designated($race | Base)));
$timeline->supplyCount = 6;
// create recurring worker job
$job = new BuildJob(Product::designated($race | Worker));
$job->recurring = true;
$unscheduledJobs[] = $job;
// schedule jobs
$scheduler = new Scheduler($timeline, $unscheduledJobs);
Scheduler::$debug = (bool) ($debugFlags & Scheduler::debugFlag);
$scheduledJobs = $scheduler->schedule();
// render timeline
echo (string) $timeline;
// render queues
$timeEnds = 0;
foreach ($scheduledJobs as $job) {
    $timeEnds = max($timeEnds, $job->timeCompleted);
}
?>
<h3>Usage of production queues</h3>
<p>This table shows the busy time of your production queues. Production queues which remain completely unused are not shown. A production queue is considered <i>destroyed</i> when the structure is morphed into another structure, such as a Warpgate or Orbital Command.</p>
<p>The timeline ends at <?php 
echo simple_time($timeEnds);
?>
.</p>
<?php 
Esempio n. 3
0
/**
 * The Richards benchmark simulates the task dispatcher of an
 * operating system.
 **/
function runRichards()
{
    $scheduler = new Scheduler();
    $scheduler->addIdleTask(ID_IDLE, 0, NULL, COUNT);
    $queue = new Packet(NULL, ID_WORKER, KIND_WORK);
    $queue = new Packet($queue, ID_WORKER, KIND_WORK);
    $scheduler->addWorkerTask(ID_WORKER, 1000, $queue);
    $queue = new Packet(NULL, ID_DEVICE_A, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_A, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_A, KIND_DEVICE);
    $scheduler->addHandlerTask(ID_HANDLER_A, 2000, $queue);
    $queue = new Packet(NULL, ID_DEVICE_B, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_B, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_B, KIND_DEVICE);
    $scheduler->addHandlerTask(ID_HANDLER_B, 3000, $queue);
    $scheduler->addDeviceTask(ID_DEVICE_A, 4000, NULL);
    $scheduler->addDeviceTask(ID_DEVICE_B, 5000, NULL);
    $scheduler->schedule();
    if ($scheduler->queueCount != EXPECTED_QUEUE_COUNT || $scheduler->holdCount != EXPECTED_HOLD_COUNT) {
        $error = "Error during execution: queueCount = " . $scheduler->queueCount . ", holdCount = " . $scheduler->holdCount . ".";
        throw new Exception($error);
    }
}
Esempio n. 4
0
    $scheduler = new Scheduler();
    $scheduler->addIdleTask(ID_IDLE, 0, null, COUNT);
    $queue = new Packet(null, ID_WORKER, KIND_WORK);
    $queue = new Packet($queue, ID_WORKER, KIND_WORK);
    $scheduler->addWorkerTask(ID_WORKER, 1000, $queue);
    $queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_A, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_A, KIND_DEVICE);
    $scheduler->addHandlerTask(ID_HANDLER_A, 2000, $queue);
    $queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_B, KIND_DEVICE);
    $queue = new Packet($queue, ID_DEVICE_B, KIND_DEVICE);
    $scheduler->addHandlerTask(ID_HANDLER_B, 3000, $queue);
    $scheduler->addDeviceTask(ID_DEVICE_A, 4000, null);
    $scheduler->addDeviceTask(ID_DEVICE_B, 5000, null);
    $scheduler->schedule();
    if ($scheduler->queueCount != EXPECTED_QUEUE_COUNT || $scheduler->holdCount != EXPECTED_HOLD_COUNT) {
        $msg = "Error during execution: queueCount = " . $scheduler->queueCount . ", holdCount = " . $scheduler->holdCount . ".";
        throw new Exception(msg);
    }
};
/**
 * A scheduler can be used to schedule a set of tasks based on their relative
 * priorities.  Scheduling is done by maintaining a list of task control blocks
 * which holds tasks and the data queue they are processing.
 * @constructor
 */
class Scheduler
{
    public $queueCount;
    public $holdCount;