From 3de215ee35a4a302375e28496ae36863b7435457 Mon Sep 17 00:00:00 2001 From: stringsplit <77242831+nbitzz@users.noreply.github.com> Date: Mon, 11 Dec 2023 16:15:05 -0800 Subject: [PATCH] Working on it... --- src/server/lib/files.ts | 76 ++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/src/server/lib/files.ts b/src/server/lib/files.ts index a12fc57..282fe40 100644 --- a/src/server/lib/files.ts +++ b/src/server/lib/files.ts @@ -95,9 +95,53 @@ async function pushWebStream(stream: Readable, webStream: ReadableStream) { return last } -interface UploadStream { - uploaded: number // number of bytes uploaded - stream : Readable +namespace StreamHelpers { + + interface UploadStream { + uploaded: number // number of bytes uploaded + stream : Readable + } + + class StreamBuffer { + + readonly targetSize: number + filled: number = 0 + buffer: UploadStream[] = [] + + api: API + + constructor( api: API, targetSize: number ) { + this.api = api + this.targetSize = targetSize + } + + private startMessage(streamCount: number): UploadStream[] { + + let streams = [] + + // can't think of a better way to do + for (let i = 0; i < streamCount; i++) { + streams.push({ + uploaded: 0, + stream: new Readable() + }) + } + + this.api.send(streams.map(e => e.stream)); + + return streams + + } + + async getNextStream() { + if (this.buffer[0]) return this.buffer[0] + else { + // startmessage.... idk + } + } + + } + } export default class Files { @@ -116,28 +160,6 @@ export default class Files { .catch(console.error) } - /** - * @description Start a new message. - * @param streamCount Number of files to upload. - */ - private startMessage(streamCount: number): UploadStream[] { - - let streams = [] - - // can't think of a better way to do - for (let i = 0; i < streamCount; i++) { - streams.push({ - uploaded: 0, - stream: new Readable() - }) - } - - this.api.send(streams.map(e =< e.stream)); - - return streams - - } - writeFileStream(metadata: FileUploadSettings & { size: number }) { let uploadId = (metadata.uploadId || generateFileId()).toString() @@ -168,7 +190,7 @@ export default class Files { message: "already uploading this file. if your file is stuck in this state, contact an administrator" } ) - ) + ) }) @@ -176,7 +198,7 @@ export default class Files { stream: new Writable({ write(data: any) { - + } }),