• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/web/http/socket/queue.php
  • Класс: BitrixMainWebHttpSocketQueue
  • Вызов: Queue::switchSocket
protected function switchSocket(Promise $promise): void
{
	$promiseId = $promise->getId();
	$handler = $promise->getHandler();
	$state = $handler->getState();

	if ($state === Handler::BODY_SENT || $state === Handler::CONNECT_SENT)
	{
		// switch the socket to "reading"
		if (isset($this->writeSockets[$promiseId]))
		{
			unset($this->writeSockets[$promiseId]);
		}
		if (!isset($this->readSockets[$promiseId]))
		{
			$this->readSockets[$promiseId] = $handler->getSocket()->getResource();
		}
	}
	elseif ($state === Handler::CONNECT_RECEIVED)
	{
		// switch the socket to "writing"
		if (isset($this->readSockets[$promiseId]))
		{
			unset($this->readSockets[$promiseId]);
		}
		if (!isset($this->writeSockets[$promiseId]))
		{
			$this->writeSockets[$promiseId] = $handler->getSocket()->getResource();
		}
	}
}