refer method
Refer
Implementation
ReferSubscriber? refer(dynamic target, [Map<String, dynamic>? options]) {
logger.debug('refer()');
options = options ?? <String, dynamic>{};
dynamic originalTarget = target;
if (_status != C.statusWaitingForAck && _status != C.statusConfirmed) {
return null;
}
// Check target validity.
target = _ua!.normalizeTarget(target);
if (target == null) {
throw exceptions.TypeError('Invalid target: $originalTarget');
}
ReferSubscriber referSubscriber = ReferSubscriber(this);
referSubscriber.sendRefer(target, options);
// Store in the map.
int? id = referSubscriber.id;
_referSubscribers[id] = referSubscriber;
// Listen for ending events so we can remove it from the map.
referSubscriber.on(EventReferRequestFailed(),
(EventReferRequestFailed data) {
_referSubscribers.remove(id);
});
referSubscriber.on(EventReferAccepted(), (EventReferAccepted data) {
_referSubscribers.remove(id);
});
referSubscriber.on(EventReferFailed(), (EventReferFailed data) {
_referSubscribers.remove(id);
});
return referSubscriber;
}