• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/pushmanager.php
  • Класс: BitrixCalendarSyncManagersPushManager
  • Вызов: PushManager::syncConnection
private function syncConnection(Push $push): void
{
	try
	{
		/** @var SyncConnectionConnection $connection */
		$connection = (new Connection())->getById($push->getEntityId());
		if (!$connection || $connection->isDeleted())
		{
			return;
		}
	}
	catch (ArgumentException $e)
	{
		return;
	}

	try
	{

		if (!$this->lockConnection($connection, self::LOCK_CONNECTION_TIME))
		{
			$this->pushConnectionToQueue($connection);
			return;
		}

		$factory = FactoryBuilder::create(
			$connection->getVendor()->getCode(),
			$connection,
			new SyncUtilContext()
		);
		if ($factory)
		{
			$manager = new VendorDataExchangeManager(
				$factory,
				(new SyncSectionFactory())->getSyncSectionMapByFactory($factory)
			);
			$manager
				->importSections()
				->updateConnection($factory->getConnection())
			;
		}
	}
	catch(Exception $e)
	{
	}
	finally
	{
		$this->unLockConnection($connection);
	}

}