@moartube/moartube-node
Version:
A free, open-source, self-hosted, anonymous, decentralized video/live stream platform. Scalable via Cloudflare, works in the cloud or from home WiFi.
56 lines (45 loc) • 1.76 kB
JavaScript
const {
websocketNodeBroadcast
} = require('../helpers');
const publishVideoUploadingTracker = {};
function addToPublishVideoUploadingTracker(videoId) {
if (!publishVideoUploadingTracker.hasOwnProperty(videoId)) {
publishVideoUploadingTracker[videoId] = { uploadRequests: [], stopping: false };
}
}
function addToPublishVideoUploadingTrackerUploadRequests(videoId, req) {
if (publishVideoUploadingTracker.hasOwnProperty(videoId)) {
publishVideoUploadingTracker[videoId].uploadRequests.push(req);
}
}
function stoppingPublishVideoUploading(videoId, parsedMessage) {
if (publishVideoUploadingTracker.hasOwnProperty(videoId)) {
publishVideoUploadingTracker[videoId].stopping = true;
}
websocketNodeBroadcast(parsedMessage);
}
function stoppedPublishVideoUploading(videoId, parsedMessage) {
if (publishVideoUploadingTracker.hasOwnProperty(videoId)) {
const uploadRequests = publishVideoUploadingTracker[videoId].uploadRequests;
uploadRequests.forEach(function (uploadRequest) {
uploadRequest.destroy();
});
delete publishVideoUploadingTracker[videoId];
}
websocketNodeBroadcast(parsedMessage);
}
function isPublishVideoUploading(videoId) {
if (publishVideoUploadingTracker.hasOwnProperty(videoId)) {
return publishVideoUploadingTracker[videoId].stopping;
}
else {
throw new Error('video id not found in publish video uploading tracker');
}
}
module.exports = {
addToPublishVideoUploadingTracker,
addToPublishVideoUploadingTrackerUploadRequests,
stoppingPublishVideoUploading,
stoppedPublishVideoUploading,
isPublishVideoUploading
}