/** * Decide how to process given operation * * @param RequestDescriptor $requestDescriptor Operation to decide * @param int $totalItems Total amount of pending requestDescriptors * * @return int One of LimitationSolverInterface::DECISION_* consts */ private function decide(RequestDescriptor $requestDescriptor, $totalItems) { $meta = $requestDescriptor->getMetadata(); if ($requestDescriptor->isRunning()) { return LimitationSolverInterface::DECISION_SKIP_CURRENT; } $isSkippingThis = $meta[RequestExecutorInterface::META_CONNECTION_START_TIME] !== null; if ($isSkippingThis) { return LimitationSolverInterface::DECISION_SKIP_CURRENT; } $decision = $this->decider->decide($this->executor, $requestDescriptor->getSocket(), $totalItems); if ($decision !== LimitationSolverInterface::DECISION_OK) { return $decision; } return LimitationSolverInterface::DECISION_OK; }
/** * Check whether given descriptor is active * * @param RequestDescriptor $descriptor * * @return bool */ private function isDescriptorActive(RequestDescriptor $descriptor) { $meta = $descriptor->getMetadata(); return !$meta[RequestExecutorInterface::META_REQUEST_COMPLETE] && $descriptor->isRunning() && !$descriptor->isPostponed(); }