added nearly complete p2p implementation

This commit is contained in:
mrfry 2023-03-20 18:02:45 +01:00
parent 11dacdae64
commit 5c22f575dd
25 changed files with 14320 additions and 12563 deletions

View file

@ -36,6 +36,7 @@ interface WorkerObj {
free: Boolean
}
// FIXME: type depending on type
export interface TaskObject {
type:
| 'work'
@ -44,6 +45,7 @@ export interface TaskObject {
| 'newdb'
| 'dbClean'
| 'rmQuestions'
| 'merge'
data:
| {
searchIn: number[]
@ -57,11 +59,11 @@ export interface TaskObject {
}
| { dbIndex: number; edits: Edits }
| QuestionDb
| Result
| Omit<Result, 'qdbName'>
| {
questions: Question[]
subjToClean: string
overwriteFromDate: number
overwriteBeforeDate: number
qdbIndex: number
}
| {
@ -70,6 +72,10 @@ export interface TaskObject {
qdbIndex: number
recievedQuestions: Question[]
}
| {
localQdbIndex: number
remoteQdb: QuestionDb
}
}
interface PendingJob {
@ -90,7 +96,7 @@ interface DoneEvent extends EventEmitter {
emit(event: 'done', res: WorkerResult): boolean
}
const alertOnPendingCount = 50
const alertOnPendingCount = 100
const workerFile = './src/utils/classes.ts'
let workers: Array<WorkerObj>
let getInitData: () => Array<QuestionDb> = null
@ -136,11 +142,10 @@ export function doALongTask(
targetWorkerIndex?: number
): Promise<WorkerResult> {
if (Object.keys(pendingJobs).length > alertOnPendingCount) {
logger.Log(
console.error(
`More than ${alertOnPendingCount} callers waiting for free resource! (${
Object.keys(pendingJobs).length
})`,
logger.GetColor('redbg')
})`
)
}