• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/protobuftransport.php
  • Класс: BitrixPullProtobufTransport
  • Вызов: ProtobufTransport::splitReceivers
static function splitReceivers(ProtobufIncomingMessage $message, $maxReceivers)
{
	$receivers = $message->getReceiversList();
	if(count($receivers) <= $maxReceivers)
	{
		return [$message];
	}

	$result = [];
	$currentReceivers = [];

	foreach ($receivers as $receiver)
	{
		if(count($currentReceivers) == $maxReceivers)
		{
			$subMessage = new ProtobufIncomingMessage();
			$subMessage->setBody($message->getBody());
			$subMessage->setExpiry($message->getExpiry());
			$subMessage->setReceiversList(new MessageCollection($currentReceivers));
			$result[] = $subMessage;
			$currentReceivers = [];
		}

		$currentReceivers[] = $receiver;
	}

	if(count($currentReceivers) > 0)
	{
		$subMessage = new ProtobufIncomingMessage();
		$subMessage->setBody($message->getBody());
		$subMessage->setExpiry($message->getExpiry());
		$subMessage->setReceiversList(new MessageCollection($currentReceivers));
		$result[] = $subMessage;
	}

	return $result;
}