public function leave(Session $session)
{
/** @var SubscriptionGroup $subscriptionGroup */
foreach ($this->subscriptionGroups as $key => $subscriptionGroup) {
/** @var Subscription $subscription */
foreach ($subscriptionGroup->getSubscriptions() as $subscription) {
if ($subscription->getSession() === $session) {
$subscriptionGroup->removeSubscription($subscription);
}
$subscriptions = $subscriptionGroup->getSubscriptions();
if (empty($subscriptions)) {
unset($this->subscriptionGroups[$key]);
}
}
}
}