/*
|
* Flow Controller
|
*/
|
/* eslint-disable */
|
import Event from '../events';
|
import EventHandler from '../event-handler';
|
|
class FlowController extends EventHandler {
|
constructor(wfs) {
|
super(
|
wfs,
|
Event.MEDIA_ATTACHED,
|
Event.BUFFER_CREATED,
|
Event.FILE_PARSING_DATA,
|
Event.FILE_HEAD_LOADED,
|
Event.FILE_DATA_LOADED,
|
Event.WEBSOCKET_ATTACHED,
|
Event.FRAG_PARSING_DATA,
|
Event.FRAG_PARSING_INIT_SEGMENT
|
);
|
|
this.fileStart = 0;
|
this.fileEnd = 0;
|
this.pendingAppending = 0;
|
this.mediaType = undefined;
|
channelName: this.channelName;
|
}
|
|
destroy() {
|
EventHandler.prototype.destroy.call(this);
|
}
|
|
onMediaAttached(data) {
|
if (data.websocketName != undefined) {
|
var client = new WebSocket(data.websocketName);
|
this.wfs.attachWebsocket(client, data.channelName, data.cameraInfo);
|
} else {
|
console.log('websocketName ERROE!!!');
|
}
|
}
|
|
onBufferCreated(data) {
|
this.mediaType = data.mediaType;
|
}
|
|
onFileHeadLoaded(data) {}
|
|
onFileDataLoaded(data) {}
|
|
onFileParsingData(data) {}
|
|
onWebsocketAttached(data) {
|
this.wfs.trigger(Event.BUFFER_APPENDING, {
|
type: 'video',
|
data: data.payload,
|
parent: 'main'
|
});
|
}
|
|
onFragParsingInitSegment(data) {
|
var tracks = data.tracks,
|
trackName,
|
track;
|
|
track = tracks.video;
|
if (track) {
|
track.id = data.id;
|
}
|
|
for (trackName in tracks) {
|
track = tracks[trackName];
|
var initSegment = track.initSegment;
|
if (initSegment) {
|
this.pendingAppending++;
|
this.wfs.trigger(Event.BUFFER_APPENDING, {
|
type: trackName,
|
data: initSegment,
|
parent: 'main'
|
});
|
}
|
}
|
}
|
|
onFragParsingData(data) {
|
if (data.type === 'video') {
|
}
|
|
[data.data1, data.data2].forEach(buffer => {
|
if (buffer) {
|
this.pendingAppending++;
|
this.wfs.trigger(Event.BUFFER_APPENDING, {
|
type: data.type,
|
data: buffer,
|
parent: 'main'
|
});
|
}
|
});
|
}
|
}
|
export default FlowController;
|