-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Removed the need to extend abstract WorkerTaskWorker. Further aligned…
… APIs
- Loading branch information
Showing
25 changed files
with
313 additions
and
225 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,64 @@ | ||
import { | ||
InterComPortHandler, | ||
InterComWorker, | ||
RawPayload, | ||
WorkerTaskCommandRequest, | ||
WorkerTaskCommandResponse, | ||
WorkerTaskDefaultWorker, | ||
WorkerTaskMessageType, | ||
WorkerTaskWorker, | ||
comRouting, | ||
createFromExisting | ||
} from 'wtd-core'; | ||
|
||
export class Com1Worker extends WorkerTaskDefaultWorker { | ||
export class Com1Worker implements WorkerTaskWorker, InterComWorker { | ||
|
||
interComIntermediate(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker2 said: ${rawPayload.message.raw.hello}`); | ||
private icph = new InterComPortHandler(); | ||
|
||
// after receiving the message from Com2Worker, send execComplete to main | ||
const execComplete = createFromExisting(message, WorkerTaskCommandResponse.EXECUTE_COMPLETE); | ||
const payload = new RawPayload({ hello: 'Worker 1 finished!' }); | ||
execComplete.addPayload(payload); | ||
init(message: WorkerTaskMessageType): void { | ||
// register the default com-routing function for inter-worker communication | ||
this.icph.registerPort('com2', message.payloads[0], message => comRouting(this, message)); | ||
|
||
// send initComplete to main | ||
const initComplete = createFromExisting({} as WorkerTaskMessageType, WorkerTaskCommandResponse.INIT_COMPLETE); | ||
const payload = new RawPayload({ hello: 'Worker 1 initComplete!' }); | ||
initComplete.addPayload(payload); | ||
|
||
// no need to pack as there aren't any buffers used | ||
this.postMessage(execComplete); | ||
self.postMessage(initComplete); | ||
} | ||
|
||
execute(message: WorkerTaskMessageType) { | ||
// register the default com-routing function for inter-worker communication | ||
this.registerPort('com2', message.payloads[0]); | ||
|
||
// send message with cmd 'interComIntermediate' to Com2Worker | ||
const sendWorker2 = createFromExisting(message, WorkerTaskCommandRequest.INTERCOM_INTERMEDIATE); | ||
const payload = new RawPayload({ hello: 'Hi Worker 2!' }); | ||
sendWorker2.addPayload(payload); | ||
|
||
this.postMessageOnPort('com2', sendWorker2); | ||
this.icph.postMessageOnPort('com2', sendWorker2); | ||
} | ||
|
||
interComIntermediate(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker 2 said: ${rawPayload.message.raw.hello}`); | ||
|
||
// after receiving the message from Com2Worker, send interComIntermediateConfirm to worker 2 | ||
const intermediateConfirm = createFromExisting(message, WorkerTaskCommandResponse.INTERCOM_INTERMEDIATE_CONFIRM); | ||
const payload = new RawPayload({ confirmed: 'Hi Worker 2. I confirm!' }); | ||
intermediateConfirm.addPayload(payload); | ||
|
||
this.icph.postMessageOnPort('com2', intermediateConfirm); | ||
} | ||
|
||
interComIntermediateConfirm(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker 2 confirmed: ${rawPayload.message.raw.confirmed}`); | ||
|
||
// after receiving the interComIntermediateConfirm from Com2Worker, send execComplete to main | ||
const execComplete = createFromExisting(message, WorkerTaskCommandResponse.EXECUTE_COMPLETE); | ||
const payload = new RawPayload({ finished: 'Hi Main. Worker 1 completed!' }); | ||
execComplete.addPayload(payload); | ||
self.postMessage(execComplete); | ||
} | ||
|
||
} | ||
|
||
const worker = new Com1Worker(); | ||
self.onmessage = message => worker.comRouting(message); | ||
self.onmessage = message => comRouting(worker, message); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,64 @@ | ||
import { | ||
InterComPortHandler, | ||
InterComWorker, | ||
RawPayload, | ||
WorkerTaskCommandRequest, | ||
WorkerTaskCommandResponse, | ||
WorkerTaskDefaultWorker, | ||
WorkerTaskMessageType, | ||
WorkerTaskWorker, | ||
comRouting, | ||
createFromExisting | ||
} from 'wtd-core'; | ||
|
||
export class Com2Worker extends WorkerTaskDefaultWorker { | ||
export class Com2Worker implements WorkerTaskWorker, InterComWorker { | ||
|
||
interComIntermediate(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker1 said: ${rawPayload.message.raw.hello}`); | ||
private icph = new InterComPortHandler(); | ||
|
||
// after receiving the message from Com1Worker, send execComplete to main | ||
const execComplete = createFromExisting(message, WorkerTaskCommandResponse.EXECUTE_COMPLETE); | ||
const payload = new RawPayload({ hello: 'Worker 2 finished!' }); | ||
execComplete.addPayload(payload); | ||
init(message: WorkerTaskMessageType): void { | ||
// register the default com-routing function for inter-worker communication | ||
this.icph.registerPort('com1', message.payloads[0], message => comRouting(this, message)); | ||
|
||
// send initComplete to main | ||
const initComplete = createFromExisting({} as WorkerTaskMessageType, WorkerTaskCommandResponse.INIT_COMPLETE); | ||
const payload = new RawPayload({ hello: 'Worker 2 initComplete!' }); | ||
initComplete.addPayload(payload); | ||
|
||
// no need to pack as there aren't any buffers used | ||
this.postMessage(execComplete); | ||
self.postMessage(initComplete); | ||
} | ||
|
||
execute(message: WorkerTaskMessageType) { | ||
// register the default com-routing function for inter-worker communication | ||
this.registerPort('com1', message.payloads[0]); | ||
|
||
// send message with cmd 'interComIntermediate' to Com1Worker | ||
const sendWorker1 = createFromExisting(message, WorkerTaskCommandRequest.INTERCOM_INTERMEDIATE); | ||
const payload = new RawPayload({ hello: 'Hi Worker 1!' }); | ||
sendWorker1.addPayload(payload); | ||
|
||
this.postMessageOnPort('com1', sendWorker1); | ||
this.icph.postMessageOnPort('com1', sendWorker1); | ||
} | ||
|
||
interComIntermediate(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker 1 said: ${rawPayload.message.raw.hello}`); | ||
|
||
// after receiving the message from Com1Worker, send interComIntermediateConfirm to worker 2 | ||
const intermediateConfirm = createFromExisting(message, WorkerTaskCommandResponse.INTERCOM_INTERMEDIATE_CONFIRM); | ||
const payload = new RawPayload({ confirmed: 'Hi Worker 1. I confirm!' }); | ||
intermediateConfirm.addPayload(payload); | ||
|
||
this.icph.postMessageOnPort('com1', intermediateConfirm); | ||
} | ||
|
||
interComIntermediateConfirm(message: WorkerTaskMessageType): void { | ||
const rawPayload = message.payloads[0] as RawPayload; | ||
console.log(`Worker 1 confirmed: ${rawPayload.message.raw.confirmed}`); | ||
|
||
// after receiving the interComIntermediateConfirm from Com1Worker, send execComplete to main | ||
const execComplete = createFromExisting(message, WorkerTaskCommandResponse.EXECUTE_COMPLETE); | ||
const payload = new RawPayload({ finished: 'Hi Main. Worker 2 completed!' }); | ||
execComplete.addPayload(payload); | ||
self.postMessage(execComplete); | ||
} | ||
|
||
} | ||
|
||
const worker = new Com2Worker(); | ||
self.onmessage = message => worker.comRouting(message); | ||
self.onmessage = message => comRouting(worker, message); |
Oops, something went wrong.