diff --git a/Tasker/AsyncTask.php b/Tasker/AsyncTaskExecute.php similarity index 72% rename from Tasker/AsyncTask.php rename to Tasker/AsyncTaskExecute.php index 698ef9d..4eeeeac 100644 --- a/Tasker/AsyncTask.php +++ b/Tasker/AsyncTaskExecute.php @@ -4,12 +4,19 @@ namespace Server\Tasker; use Annotation\Inject; use Exception; +use Kiri\Abstracts\BaseObject; +use Kiri\Core\HashMap; use Kiri\Di\Container; use Psr\Container\ContainerInterface; +use ReflectionException; use Server\Contract\OnTaskInterface; use Server\SwooleServerInterface; -class AsyncTask + +/** + * + */ +class AsyncTaskExecute extends BaseObject { @@ -27,6 +34,28 @@ class AsyncTask public ContainerInterface $container; + private HashMap $hashMap; + + + /** + * + */ + public function init() + { + $this->hashMap = new HashMap(); + } + + + /** + * @param string $key + * @param $handler + */ + public function reg(string $key, $handler) + { + $this->hashMap->put($key, $handler); + } + + /** * @param OnTaskInterface|string $handler * @param array $params @@ -49,11 +78,14 @@ class AsyncTask * @param $handler * @param $params * @return object - * @throws \ReflectionException + * @throws ReflectionException * @throws Exception */ private function handle($handler, $params): object { + if (!class_exists($handler) && $this->hashMap->has($handler)) { + $handler = $this->hashMap->get($handler); + } $implements = $this->container->getReflect($handler); if (!in_array(OnTaskInterface::class, $implements->getInterfaceNames())) { throw new Exception('Task must instance ' . OnTaskInterface::class);