handleStreamHeader method
Future<void>
handleStreamHeader(
- DataStream_Header streamHeader,
- String participantIdentity
)
Implementation
Future<void> handleStreamHeader(lk_models.DataStream_Header streamHeader,
String participantIdentity) async {
if (streamHeader.hasByteHeader()) {
final streamHandlerCallback = _byteStreamHandlers[streamHeader.topic];
if (streamHandlerCallback == null) {
logger.info(
'ignoring incoming byte stream due to no handler for topic ${streamHeader.topic}');
return;
}
var info = ByteStreamInfo(
id: streamHeader.streamId,
name: streamHeader.byteHeader.name,
mimeType: streamHeader.mimeType,
size: streamHeader.hasTotalLength()
? streamHeader.totalLength.toInt()
: 0,
topic: streamHeader.topic,
timestamp: streamHeader.timestamp.toInt(),
attributes: streamHeader.attributes,
);
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
info: info,
streamController: StreamController<lk_models.DataStream_Chunk>(),
startTime: DateTime.now().millisecondsSinceEpoch,
);
_byteStreamControllers[streamHeader.streamId] = streamController;
streamHandlerCallback(
ByteStreamReader(
info, streamController, streamHeader.totalLength.toInt()),
participantIdentity,
);
} else if (streamHeader.hasTextHeader()) {
final streamHandlerCallback = _textStreamHandlers[streamHeader.topic];
if (streamHandlerCallback == null) {
logger.warning(
'ignoring incoming text stream due to no handler for topic ${streamHeader.topic}');
return;
}
var info = TextStreamInfo(
id: streamHeader.streamId,
mimeType: streamHeader.mimeType,
size: streamHeader.hasTotalLength()
? streamHeader.totalLength.toInt()
: 0,
topic: streamHeader.topic,
timestamp: streamHeader.timestamp.toInt(),
attributes: streamHeader.attributes,
);
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
info: info,
streamController: StreamController<lk_models.DataStream_Chunk>(),
startTime: DateTime.now().millisecondsSinceEpoch,
);
_textStreamControllers[streamHeader.streamId] = streamController;
streamHandlerCallback(
TextStreamReader(
info, streamController, streamHeader.totalLength.toInt()),
participantIdentity,
);
}
}