removeSession method

void removeSession(
  1. int sid
)

Implementation

void removeSession(int sid) {
  var subscriptions = _subscriptionsBySession.remove(sid);
  if (subscriptions == null) {
    throw Exception("cannot remove non-existing session");
  }

  subscriptions.forEach((key, value) {
    var subscription = _subscriptionsByTopic[value.topic];
    if (subscription != null) {
      if (subscription.subscribers.containsKey(sid)) {
        subscription.subscribers.remove(sid);
      }

      if (subscription.subscribers.isEmpty) {
        _subscriptionsByTopic.remove(subscription.topic);
      }
    }
  });

  _sessions.remove(sid);
}