addSubscription method

StompSubscription addSubscription({
  1. required String id,
  2. required String destination,
  3. String ackMode = StompHeaders.ackAuto,
  4. Map<String, String>? headers,
})

Adds a new subscription

Implementation

StompSubscription addSubscription({
  required String id,
  required String destination,
  String ackMode = StompHeaders.ackAuto,
  Map<String, String>? headers,
}) {
  if (_subscriptions.containsKey(id)) {
    throw StompSubscriptionException('Subscription with ID already exists', id);
  }

  if (_subscriptions.length >= StompConstants.maxSubscriptions) {
    throw StompSubscriptionException('Maximum number of subscriptions reached', id);
  }

  final subscription = StompSubscription(
    id: id,
    destination: destination,
    ackMode: ackMode,
    headers: headers,
  );

  _subscriptions[id] = subscription;
  _subscriptionController.add(subscription);

  // Listen for unsubscribe
  subscription.onUnsubscribe.listen((_) {
    _unsubscribeController.add(id);
  });

  return subscription;
}