ClientSession.base constructor
ClientSession.base({
- required String id,
- required TransportConnection connection,
- Compressor? compressor,
- MessageCodec<
Message> ? messageCodec, - int? maxBufferSize,
- List<
ServerSyncPlugin> plugins = const [],
Base constructor for concrete sessions.
Implementation
ClientSession.base({
required this.id,
required TransportConnection connection,
Compressor? compressor,
MessageCodec<Message>? messageCodec,
int? maxBufferSize,
List<ServerSyncPlugin> plugins = const [],
}) : _isClosed = false,
_connection = connection,
_plugins = plugins,
_sessionEventController = StreamController<SessionEvent>.broadcast(),
_messageCodec = CompressedCodec<Message>(
PluginAwareMessageCodec.fromPlugins(
plugins: plugins,
defaultCodec: messageCodec ??
JsonMessageCodec<Message>(
toJson: (message) => message.toJson(),
fromJson: Message.fromJson,
),
),
compressor: compressor ?? NoCompression.instance,
) {
_outboundQueue = OutboundQueue(
onSend: _connection.send,
maxBufferSize: maxBufferSize ?? Protocol.maxBufferSize,
);
_updateClientActivity();
_connection.incoming.listen(
_handleData,
onError: _handleConnectionError,
onDone: _handleConnectionClosed,
);
_startHeartbeatMonitoring();
for (final plugin in _plugins) {
plugin.onNewSession(this);
}
}