registerManagers method
- List<
XmppManagerBase> managers
Registers a list of XmppManagerBase sub-classes as managers on this connection.
Implementation
Future<void> registerManagers(List<XmppManagerBase> managers) async {
for (final manager in managers) {
_log.finest('Registering ${manager.id}');
manager.register(
XmppManagerAttributes(
sendStanza: sendStanza,
sendNonza: sendRawXML,
sendEvent: _sendEvent,
getConnectionSettings: () => connectionSettings,
getManagerById: getManagerById,
getFullJID: _getJidWithResource,
getSocket: () => _socket,
getConnection: () => this,
getNegotiatorById: _negotiationsHandler.getNegotiatorById,
),
);
_xmppManagers[manager.id] = manager;
_incomingStanzaHandlers.addAll(
manager.getIncomingStanzaHandlers().map((h) => (h, manager.name)),
);
_incomingPreStanzaHandlers.addAll(
manager.getIncomingPreStanzaHandlers().map((h) => (h, manager.name)),
);
_outgoingPreStanzaHandlers.addAll(
manager.getOutgoingPreStanzaHandlers().map((h) => (h, manager.name)),
);
_outgoingPostStanzaHandlers.addAll(
manager.getOutgoingPostStanzaHandlers().map((h) => (h, manager.name)),
);
}
// Sort them
_incomingStanzaHandlers.sort(_stanzaHandlerWrapperSortComparator);
_incomingPreStanzaHandlers.sort(_stanzaHandlerWrapperSortComparator);
_outgoingPreStanzaHandlers.sort(_stanzaHandlerWrapperSortComparator);
_outgoingPostStanzaHandlers.sort(_stanzaHandlerWrapperSortComparator);
// Run the post register callbacks
for (final manager in _xmppManagers.values) {
if (!manager.initialized) {
_log.finest('Running post-registration callback for ${manager.name}');
await manager.postRegisterCallback();
}
}
}