getNextNegotiator method
Returns the next negotiator that matches features
. Returns null if none can be
picked. If log
is true, then the list of matching negotiators will be logged.
Implementation
@visibleForTesting
XmppFeatureNegotiatorBase? getNextNegotiator(
List<XMLNode> features, {
bool log = true,
}) {
final matchingNegotiators =
negotiators.values.where((XmppFeatureNegotiatorBase negotiator) {
return negotiator.state == NegotiatorState.ready &&
negotiator.matchesFeature(features);
}).toList()
..sort((a, b) => b.priority.compareTo(a.priority));
if (log) {
this.log.finest(
'List of matching negotiators: ${matchingNegotiators.map((a) => a.id)}',
);
}
if (matchingNegotiators.isEmpty) return null;
return matchingNegotiators.first;
}