Skip to content

Commit

Permalink
v5.3.6 - Working real threading using react native 0.62
Browse files Browse the repository at this point in the history
  • Loading branch information
austinksmith committed Aug 7, 2021
1 parent d4bb365 commit 74797a0
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 91 deletions.
42 changes: 4 additions & 38 deletions build/common/reactNativeHamster.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,50 +14,16 @@ import { self } from 'react-native-hamsters';
(function () {
self.params = {};
self.rtn = {};

self.onmessage = (message) => {
params = JSON.parse(incomingMessage.data);
self.onmessage = message => {
params = JSON.parse(message);
rtn = {
data: [],
dataType: (params.dataType ? params.dataType.toLowerCase() : null)
};
eval("(" + params.hamstersJob + ")")();
eval(params.hamstersJob);
return returnResponse(rtn);
};

const returnResponse = (rtn) => {
const returnResponse = rtn => {
return postMessage(JSON.stringify(rtn));
}

const typedArrayFromBuffer = (dataType, buffer) => {
const types = {
'Uint32': Uint32Array,
'Uint16': Uint16Array,
'Uint8': Uint8Array,
'Uint8clamped': Uint8ClampedArray,
'Int32': Int32Array,
'Int16': Int16Array,
'Int8': Int8Array,
'Float32': Float32Array,
'Float64': Float64Array
};
if (!types[dataType]) {
return buffer;
}
return new types[dataType](buffer);
}

const prepareTransferBuffers = (rtn, buffers) => {
Object.keys(rtn).forEach(function(key) {
var item = rtn[key];
if(typeof item.buffer !== 'undefined') {
buffers.push(item.buffer);
} else {
if(Array.isArray(rtn[key]) && typeof ArrayBuffer !== 'undefined') {
buffers.push(new ArrayBuffer(rtn[key]));
}
}
});
return postMessage(rtn, buffers);
}
}());
10 changes: 7 additions & 3 deletions build/hamsters.node.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion build/hamsters.node.min.js.map

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions build/hamsters.web.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion build/hamsters.web.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"author": "Austin K Smith",
"description": "100% Vanilla Javascript Multithreading & Parallel Execution Library",
"homepage": "http://www.hamsters.io/",
"version": "5.3.5",
"version": "5.3.6",
"main": "build/hamsters.node.min.js",
"scripts": {
"build": "rm -rf ./build && webpack --config ./hamsters.webpack.config.js && npm run copy-common",
Expand Down
46 changes: 6 additions & 40 deletions src/common/reactNativeHamster.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,50 +14,16 @@ import { self } from 'react-native-hamsters';
(function () {
self.params = {};
self.rtn = {};

self.onmessage = (message) => {
params = JSON.parse(incomingMessage.data);
self.onmessage = message => {
params = JSON.parse(message);
rtn = {
data: [],
dataType: (params.dataType ? params.dataType.toLowerCase() : null)
data: []
};
eval("(" + params.hamstersJob + ")")();
eval(params.hamstersJob);
return returnResponse(rtn);
};

const returnResponse = (rtn) => {
return postMessage(JSON.stringify(rtn));
}

const typedArrayFromBuffer = (dataType, buffer) => {
const types = {
'Uint32': Uint32Array,
'Uint16': Uint16Array,
'Uint8': Uint8Array,
'Uint8clamped': Uint8ClampedArray,
'Int32': Int32Array,
'Int16': Int16Array,
'Int8': Int8Array,
'Float32': Float32Array,
'Float64': Float64Array
};
if (!types[dataType]) {
return buffer;
}
return new types[dataType](buffer);
}

const prepareTransferBuffers = (rtn, buffers) => {
Object.keys(rtn).forEach(function(key) {
var item = rtn[key];
if(typeof item.buffer !== 'undefined') {
buffers.push(item.buffer);
} else {
if(Array.isArray(rtn[key]) && typeof ArrayBuffer !== 'undefined') {
buffers.push(new ArrayBuffer(rtn[key]));
}
}
});
return postMessage(rtn, buffers);
const returnResponse = rtn => {
return self.postMessage(JSON.stringify(rtn));
}
}());
10 changes: 7 additions & 3 deletions src/core/pool.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,14 @@ class pool {
trainHamster(pool, habitat, threadId, task, hamster, resolve, reject) {
let onThreadResponse = function(message) {
pool.removeFromRunning(task, threadId);
if(typeof message.data.data !== "undefined") {
task.output[threadId] = message.data.data;
if(habitat.reactNative) {
task.output[threadId] = JSON.parse(message);
} else {
task.output[threadId] = (habitat.reactNative ? JSON.parse(message.data) : message.data);
if(typeof message.data.data !== "undefined") {
task.output[threadId] = message.data.data;
} else {
task.output[threadId] = message.data;
}
}
if (task.workers.length === 0 && task.count === task.threads) {
pool.returnOutputAndRemoveTask(task, resolve);
Expand Down
2 changes: 1 addition & 1 deletion src/core/version.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

const majorVersion = 5;
const minorVersion = 3;
const patchVersion = 5;
const patchVersion = 6;
const hamstersVersion = `${majorVersion}.${minorVersion}.${patchVersion}`;

if(typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
Expand Down

0 comments on commit 74797a0

Please sign in to comment.