public function scheduleMessage($to, $txt, $date) { $scheduler = new Scheduler($this->user, $this->token); $scheduleId = $scheduler->schedule($to, $txt, $date); return $scheduleId; }
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
/** * 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); } }
$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;