feat: sync process code

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2019-07-13 14:10:12 +08:00
parent 5cd98ffc49
commit e693bab5a7
7 changed files with 222 additions and 145 deletions

View File

@ -1420,7 +1420,6 @@
</DIV> </DIV>
<DIV style="float: left;display: none" id="idMiningParams"> <DIV style="float: left;display: none" id="idMiningParams">
<DIV style="float: left; color: blue;">CPU use:<input type="number" min=0 max=100 id="idPercentMining" onchange="SetPercentMining()"/>%</DIV> <DIV style="float: left; color: blue;">CPU use:<input type="number" min=0 max=100 id="idPercentMining" onchange="SetPercentMining()"/>%</DIV>
<DIV style="float: left; margin: 2px 0 0 8px;" id="idStatusMining"></DIV>
</DIV> </DIV>
</DIV> </DIV>
<DIV id="idDevelopService" style="display: none"> <DIV id="idDevelopService" style="display: none">
@ -1460,6 +1459,7 @@
</DIV> </DIV>
<canvas width='800' height='30' id='idBlockInfo'></canvas> <canvas width='800' height='30' id='idBlockInfo'></canvas>
<BR><BR> <BR><BR>
<DIV style="float: left; font-family: monospace" id="idStatusMining"></DIV>
<DIV style="float: left; font-family: monospace"> <DIV style="float: left; font-family: monospace">
Block:<B id="idCurBlockNum"></B> Block:<B id="idCurBlockNum"></B>
DB delta:<B id="idDeltaDB" style="min-width: 30px"></B> DB delta:<B id="idDeltaDB" style="min-width: 30px"></B>

View File

@ -128,8 +128,7 @@ WebApi2.GetTransaction = function(Params) {
} }
} }
} }
} } else {
else {
if (typeof Params === "object" && Params.BlockNum && Params.TrNum !== undefined) { if (typeof Params === "object" && Params.BlockNum && Params.TrNum !== undefined) {
var Block = global.SERVER.ReadBlockDB(Params.BlockNum); var Block = global.SERVER.ReadBlockDB(Params.BlockNum);
if (Block && Block.arrContent) { if (Block && Block.arrContent) {
@ -327,8 +326,7 @@ function SendTransaction(Body, TR, Wait, F) {
if (text === "Not add" || text === "Bad PoW") { if (text === "Not add" || text === "Bad PoW") {
CreateNonceAndSend(nonce + 1, NumNext + 1); CreateNonceAndSend(nonce + 1, NumNext + 1);
return; return;
} } else
else
if (text === "Bad time") { if (text === "Bad time") {
if (DELTA_FOR_TIME_TX < 6) { if (DELTA_FOR_TIME_TX < 6) {
DELTA_FOR_TIME_TX++; DELTA_FOR_TIME_TX++;
@ -339,8 +337,7 @@ function SendTransaction(Body, TR, Wait, F) {
} }
if (Wait && TR._result) { if (Wait && TR._result) {
global.GlobalRunMap[WebID] = F; global.GlobalRunMap[WebID] = F;
} } else {
else {
F(TR._result < 1 ? 0 : 1, text); F(TR._result < 1 ? 0 : 1, text);
} }
}); });

View File

@ -8,11 +8,10 @@
* Telegram: https://t.me/terafoundation * Telegram: https://t.me/terafoundation
*/ */
import '../core/constant'
global.PROCESS_NAME = "MAIN"; global.PROCESS_NAME = "MAIN";
import '../core/constant'
import * as fs from 'fs' import * as fs from 'fs'
import * as os from 'os' import * as os from 'os'
// import path = require('path')
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import { secp256k1 } from '../core/library' import { secp256k1 } from '../core/library'
@ -38,8 +37,6 @@ global.glCurNumFindArr = 0;
global.ArrReconnect = []; global.ArrReconnect = [];
global.ArrConnect = []; global.ArrConnect = [];
var FindList = [ var FindList = [
{ "ip": "60.12.241.181", "port": 30000 },
{ "ip": "60.12.241.181", "port": 30001 },
{ "ip": "60.12.241.181", "port": 30002 }, { "ip": "60.12.241.181", "port": 30002 },
{ "ip": "60.12.241.181", "port": 30003 }, { "ip": "60.12.241.181", "port": 30003 },
{ "ip": "60.12.241.181", "port": 30004 }, { "ip": "60.12.241.181", "port": 30004 },
@ -53,18 +50,15 @@ var FindList = [
{ "ip": "60.12.241.181", "port": 30012 }, { "ip": "60.12.241.181", "port": 30012 },
{ "ip": "60.12.241.181", "port": 30013 }, { "ip": "60.12.241.181", "port": 30013 },
{ "ip": "60.12.241.181", "port": 30014 }, { "ip": "60.12.241.181", "port": 30014 },
{ "ip": "60.12.241.181", "port": 30015 },
{ "ip": "60.12.241.181", "port": 30016 }, { "ip": "60.12.241.181", "port": 30016 },
{ "ip": "60.12.241.181", "port": 30017 }, { "ip": "60.12.241.181", "port": 30017 },
{ "ip": "60.12.241.181", "port": 30018 }, { "ip": "60.12.241.181", "port": 30018 },
]; ];
if (global.LOCAL_RUN) { if (global.LOCAL_RUN) {
FindList = [{ "ip": "127.0.0.1", "port": 50001 }, { "ip": "127.0.0.1", "port": 50002 }]; FindList = [{ "ip": "127.0.0.1", "port": 50001 }, { "ip": "127.0.0.1", "port": 50002 }];
} } else if (global.TEST_NETWORK) {
else
if (global.TEST_NETWORK) {
FindList = [{ "ip": "149.154.70.158", "port": 40000 },]; FindList = [{ "ip": "149.154.70.158", "port": 40000 },];
} }
global.SERVER = undefined; global.SERVER = undefined;
global.NeedRestart = 0; global.NeedRestart = 0;
process.on('uncaughtException' as any, function(err: TeraError) { process.on('uncaughtException' as any, function(err: TeraError) {
@ -104,8 +98,7 @@ if (global.HTTP_HOSTING_PORT && !global.NWMODE) {
if (WebProcess.Worker && WebProcess.Worker.connected) { if (WebProcess.Worker && WebProcess.Worker.connected) {
try { try {
WebProcess.Worker.send({ cmd: "Stat", Name: "MAX:ALL_NODES", Value: global.CountAllNode }); WebProcess.Worker.send({ cmd: "Stat", Name: "MAX:ALL_NODES", Value: global.CountAllNode });
} } catch (e) {
catch (e) {
WebProcess.Worker = undefined; WebProcess.Worker = undefined;
} }
} }
@ -144,7 +137,11 @@ function AddTransactionFromWeb(Params) {
var body = global.GetArrFromHex(Params.HexValue); var body = global.GetArrFromHex(Params.HexValue);
if (global.TX_PROCESS && global.TX_PROCESS.Worker) { if (global.TX_PROCESS && global.TX_PROCESS.Worker) {
var StrHex = global.GetHexFromArr(global.sha3(body)); var StrHex = global.GetHexFromArr(global.sha3(body));
global.TX_PROCESS.Worker.send({ cmd: "FindTX", TX: StrHex, Web: 1, WebID: Params.WebID }); global.TX_PROCESS.Worker.send({
cmd: "FindTX",
TX: StrHex, Web: 1,
WebID: Params.WebID
});
} }
var Res = global.SERVER.AddTransaction({ body: body }, 1); var Res = global.SERVER.AddTransaction({ body: body }, 1);
var text = global.AddTrMap[Res]; var text = global.AddTrMap[Res];
@ -259,15 +256,18 @@ function StartChildProcess(Item) {
if (typeof msg.Params === "object" && msg.Params.F) { if (typeof msg.Params === "object" && msg.Params.F) {
global[msg.Name](msg.Params, function(Err, Ret) { global[msg.Name](msg.Params, function(Err, Ret) {
if (msg.id && ITEM.Worker) if (msg.id && ITEM.Worker)
ITEM.Worker.send({ cmd: "retcall", id: msg.id, Err: Err, Params: Ret }); ITEM.Worker.send({
cmd: "retcall",
id: msg.id,
Err: Err,
Params: Ret
});
}); });
break; break;
} } else {
else {
Ret = global[msg.Name](msg.Params); Ret = global[msg.Name](msg.Params);
} }
} } catch (e) {
catch (e) {
Err = 1; Err = 1;
Ret = "" + e; Ret = "" + e;
} }
@ -284,7 +284,7 @@ function StartChildProcess(Item) {
case "log": case "log":
global.ToLog(msg.message); global.ToLog(msg.message);
break; break;
case "global.ToLogClient": case "ToLogClient":
if (WebProcess && WebProcess.Worker) { if (WebProcess && WebProcess.Worker) {
WebProcess.Worker.send(msg); WebProcess.Worker.send(msg);
} }
@ -333,14 +333,22 @@ function StartChildProcess(Item) {
if (F) { if (F) {
GlobalRunID++; GlobalRunID++;
try { try {
ITEM.Worker.send({ cmd: "call", id: GlobalRunID, Name: Name, Params: Params }); ITEM.Worker.send({
cmd: "call",
id: GlobalRunID,
Name: Name,
Params: Params
});
GlobalRunMap[GlobalRunID] = F; GlobalRunMap[GlobalRunID] = F;
} catch (e) {
} }
catch (e) { } else {
} ITEM.Worker.send({
} cmd: "call",
else { id: 0,
ITEM.Worker.send({ cmd: "call", id: 0, Name: Name, Params: Params }); Name: Name,
Params: Params
});
} }
}; };
}; };
@ -413,8 +421,7 @@ function RunStopPOWProcess(Mode) {
global.MiningPaused = 1; global.MiningPaused = 1;
if (TimeCur >= StartTime && TimeCur <= TimeEnd) { if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
global.MiningPaused = 0; global.MiningPaused = 0;
} } else {
else {
StartTime -= 24 * 3600; StartTime -= 24 * 3600;
TimeEnd -= 24 * 3600; TimeEnd -= 24 * 3600;
if (TimeCur >= StartTime && TimeCur <= TimeEnd) { if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
@ -425,16 +432,13 @@ function RunStopPOWProcess(Mode) {
global.ToLog("------------ MINING MUST STOP ON TIME"); global.ToLog("------------ MINING MUST STOP ON TIME");
ClearArrMining(); ClearArrMining();
return; return;
} } else
else
if (!global.ArrMiningWrk.length && !global.MiningPaused) { if (!global.ArrMiningWrk.length && !global.MiningPaused) {
global.ToLog("*********** MINING MUST START ON TIME"); global.ToLog("*********** MINING MUST START ON TIME");
} } else {
else {
return; return;
} }
} } else {
else {
global.MiningPaused = 0; global.MiningPaused = 0;
} }
if (!global.USE_MINING || Mode === "STOP") { if (!global.USE_MINING || Mode === "STOP") {
@ -480,12 +484,10 @@ function RunStopPOWProcess(Mode) {
if (msg.cmd === "online") { if (msg.cmd === "online") {
Worker.bOnline = true; Worker.bOnline = true;
global.ToLog("RUNNING PROCESS:" + Worker.Num + ":" + msg.message); global.ToLog("RUNNING PROCESS:" + Worker.Num + ":" + msg.message);
} } else
else
if (msg.cmd === "POW") { if (msg.cmd === "POW") {
global.SERVER.MiningProcess(msg); global.SERVER.MiningProcess(msg);
} } else
else
if (msg.cmd === "HASHRATE") { if (msg.cmd === "HASHRATE") {
global.ADD_HASH_RATE(msg.CountNonce); global.ADD_HASH_RATE(msg.CountNonce);
} }
@ -518,9 +520,20 @@ function SetCalcPOW(Block, cmd) {
if (!CurWorker.bOnline) if (!CurWorker.bOnline)
continue; continue;
CurWorker.send({ CurWorker.send({
cmd: cmd, BlockNum: Block.BlockNum, Account: global.GENERATE_BLOCK_ACCOUNT, MinerID: global.GENERATE_BLOCK_ACCOUNT, SeqHash: Block.SeqHash, cmd: cmd,
Hash: Block.Hash, PrevHash: Block.PrevHash, Time: Date.now(), Num: CurWorker.Num, RunPeriod: global.POWRunPeriod, RunCount: global.POW_RUN_COUNT, BlockNum: Block.BlockNum,
Percent: global.POW_MAX_PERCENT, CountMiningCPU: global.GetCountMiningCPU(), ProcessMemorySize: ProcessMemorySize, Account: global.GENERATE_BLOCK_ACCOUNT,
MinerID: global.GENERATE_BLOCK_ACCOUNT,
SeqHash: Block.SeqHash,
Hash: Block.Hash,
PrevHash: Block.PrevHash,
Time: Date.now(),
Num: CurWorker.Num,
RunPeriod: global.POWRunPeriod,
RunCount: global.POW_RUN_COUNT,
Percent: global.POW_MAX_PERCENT,
CountMiningCPU: global.GetCountMiningCPU(),
ProcessMemorySize: ProcessMemorySize,
}); });
} }
}; };
@ -567,8 +580,7 @@ function DoConnectToNodes(Arr, Mode) {
if (Mode === "CONNECT") { if (Mode === "CONNECT") {
Node.WasAddToConnect = undefined; Node.WasAddToConnect = undefined;
global.SERVER.StartConnectTry(Node); global.SERVER.StartConnectTry(Node);
} } else
else
if (Mode === "RECONNECT") { if (Mode === "RECONNECT") {
Node.WasAddToReconnect = undefined; Node.WasAddToReconnect = undefined;
Node.CreateConnect(); Node.CreateConnect();

View File

@ -8,82 +8,132 @@
* Telegram: https://t.me/terafoundation * Telegram: https://t.me/terafoundation
*/ */
global.PROCESS_NAME = "POW" global.PROCESS_NAME = "POW";
global.POWPROCESS = 1 global.POWPROCESS = 1;
require("../core/library") import "../core/library"
require("../core/crypto-library") import "../core/crypto-library"
require("../core/terahashmining"); import "../core/terahashmining"
var PROCESS = process; var PROCESS = process;
process.send && !global.DEBUGPROCESS ? process.send({ cmd: "online", message: "OK" }) : PROCESS = global.DEBUGPROCESS; if (process.send && !global.DEBUGPROCESS) {
process.send({ cmd: "online", message: "OK" });
} else {
PROCESS = global.DEBUGPROCESS;
}
var LastAlive = Date.now(); var LastAlive = Date.now();
setInterval(CheckAlive, 1e3); setInterval(CheckAlive, 1000);
var idInterval = void 0, Block: any = {}; var idInterval = undefined;
var Block: any = {};
function CheckAlive() { PROCESS.on('message', function(msg) {
if (!global.NOALIVE) { LastAlive = Date.now();
var e = Date.now() - LastAlive; if (msg.cmd === "FastCalcBlock") {
Math.abs(e) > global.CHECK_STOP_CHILD_PROCESS && PROCESS.exit(0); var FastBlock = msg;
} StartHashPump(FastBlock);
}; FastBlock.RunCount = 0;
function CalcPOWHash() {
if (Block.SeqHash) {
if ((new Date as any) - Block.Time > Block.Period)
return clearInterval(idInterval), void (idInterval = void 0);
try { try {
global.CreatePOWVersionX(Block) && process.send({ if (global.CreatePOWVersionX(FastBlock))
cmd: "POW", BlockNum: Block.BlockNum, SeqHash: Block.SeqHash, Hash: Block.Hash, PowHash: Block.PowHash, process.send({
AddrHash: Block.AddrHash, Num: Block.Num cmd: "POW",
}); BlockNum: FastBlock.BlockNum,
} SeqHash: FastBlock.SeqHash,
catch (e) { Hash: FastBlock.Hash,
global.ToError(e); PowHash: FastBlock.PowHash,
} AddrHash: FastBlock.AddrHash,
} Num: FastBlock.Num
};
PROCESS.on("message", function(e) {
if (LastAlive = Date.now(), "FastCalcBlock" === e.cmd) {
var o = e;
StartHashPump(o), o.RunCount = 0;
try {
global.CreatePOWVersionX(o) && process.send({
cmd: "POW", BlockNum: o.BlockNum, SeqHash: o.SeqHash, Hash: o.Hash, PowHash: o.PowHash, AddrHash: o.AddrHash,
Num: o.Num
}); });
} catch (e) { } catch (e) {
global.ToError(e); global.ToError(e);
} }
} else { } else
if ("SetBlock" === e.cmd) { if (msg.cmd === "SetBlock") {
var a = 1e6 * (1 + e.Num); var StartNonce = 1000000 * (1 + msg.Num);
Block.HashCount && process.send({ cmd: "HASHRATE", CountNonce: Block.HashCount, Hash: Block.Hash }), Block.HashCount = 0, (Block = e).Time = Date.now(), if (Block.HashCount) {
Block.LastNonce = a, Block.Period = global.CONSENSUS_PERIOD_TIME * Block.Percent / 100, 0 < Block.Period && 0 < Block.RunPeriod && (CalcPOWHash(), process.send({ cmd: "HASHRATE", CountNonce: Block.HashCount, Hash: Block.Hash });
void 0 !== idInterval && clearInterval(idInterval), idInterval = setInterval(CalcPOWHash, Block.RunPeriod));
} else {
"Alive" === e.cmd || "Exit" === e.cmd && PROCESS.exit(0);
} }
Block.HashCount = 0;
Block = msg;
Block.Time = Date.now();
Block.LastNonce = StartNonce;
Block.Period = global.CONSENSUS_PERIOD_TIME * Block.Percent / 100;
if (Block.Period > 0 && Block.RunPeriod > 0) {
CalcPOWHash();
if (idInterval !== undefined) {
clearInterval(idInterval);
}
idInterval = setInterval(CalcPOWHash, Block.RunPeriod);
}
} else
if (msg.cmd === "Alive") {
} else
if (msg.cmd === "Exit") {
PROCESS.exit(0);
} }
}); });
var idIntervalPump = global.BlockPump = void 0;
function StartHashPump(e) { function CheckAlive() {
(!global.BlockPump || global.BlockPump.BlockNum < e.BlockNum || global.BlockPump.MinerID !== e.MinerID || global.BlockPump.Percent !== e.Percent) && (global.BlockPump = { if (global.NOALIVE)
BlockNum: e.BlockNum, return;
RunCount: e.RunCount, MinerID: e.MinerID, Percent: e.Percent, LastNonce: 0 var Delta = Date.now() - LastAlive;
}), idIntervalPump = idIntervalPump || setInterval(PumpHash, global.POWRunPeriod); if (Math.abs(Delta) > global.CHECK_STOP_CHILD_PROCESS) {
PROCESS.exit(0);
return;
}
}; };
var StartTime = 1, EndTime = 0;
function CalcPOWHash() {
if (!Block.SeqHash)
return;
if ((new Date() as any) - Block.Time > Block.Period) {
clearInterval(idInterval);
idInterval = undefined;
return;
}
try {
if (global.CreatePOWVersionX(Block))
process.send({
cmd: "POW", BlockNum: Block.BlockNum, SeqHash: Block.SeqHash, Hash: Block.Hash, PowHash: Block.PowHash, AddrHash: Block.AddrHash,
Num: Block.Num
});
} catch (e) {
global.ToError(e);
}
};
global.BlockPump = undefined;
var idIntervalPump = undefined;
function StartHashPump(SetBlock) {
if (!global.BlockPump || global.BlockPump.BlockNum < SetBlock.BlockNum || global.BlockPump.MinerID !== SetBlock.MinerID || global.BlockPump.Percent !== SetBlock.Percent) {
global.BlockPump = {
BlockNum: SetBlock.BlockNum,
RunCount: SetBlock.RunCount,
MinerID: SetBlock.MinerID,
Percent: SetBlock.Percent,
LastNonce: 0,
};
}
if (!idIntervalPump) {
idIntervalPump = setInterval(PumpHash, global.POWRunPeriod);
}
};
var StartTime = 1;
var EndTime = 0;
function PumpHash() { function PumpHash() {
if (global.BlockPump) { if (!global.BlockPump)
var e = Date.now(); return;
if (EndTime < StartTime) { var CurTime = Date.now();
if (100 * (e - StartTime) / global.CONSENSUS_PERIOD_TIME >= global.BlockPump.Percent) if (StartTime > EndTime) {
return void (EndTime = e); var Delta = CurTime - StartTime;
var PeriodPercent = 100 * Delta / global.CONSENSUS_PERIOD_TIME;
if (PeriodPercent >= global.BlockPump.Percent) {
EndTime = CurTime;
return;
}
global.CreatePOWVersionX(global.BlockPump, 1); global.CreatePOWVersionX(global.BlockPump, 1);
} else { } else {
100 * (e - EndTime) / global.CONSENSUS_PERIOD_TIME > 100 - global.BlockPump.Percent && (StartTime = e); var Delta = CurTime - EndTime;
var PeriodPercent = 100 * Delta / global.CONSENSUS_PERIOD_TIME;
if (PeriodPercent > 100 - global.BlockPump.Percent) {
StartTime = CurTime;
} }
} }
}; };

View File

@ -41,8 +41,7 @@ process.on('message', function(msg) {
var Ret; var Ret;
try { try {
Ret = global[msg.Name](msg.Params); Ret = global[msg.Name](msg.Params);
} } catch (e) {
catch (e) {
Err = 1; Err = 1;
Ret = "" + e; Ret = "" + e;
} }
@ -243,8 +242,7 @@ function GETREST(msg) {
global.ToLog("Get bad rest acc hash: " + BlockNumRest + " = " + global.GetHexFromArr(Data.AccHash) + "/" + global.GetHexFromArr(Tree.Root), 2); global.ToLog("Get bad rest acc hash: " + BlockNumRest + " = " + global.GetHexFromArr(Data.AccHash) + "/" + global.GetHexFromArr(Tree.Root), 2);
ArrRest = []; ArrRest = [];
nResult = 0; nResult = 0;
} } else {
else {
ArrRest = GetArrRest(BlockNumRest, StartAccount, EndAccount); ArrRest = GetArrRest(BlockNumRest, StartAccount, EndAccount);
ProofHash = Tree.Root; ProofHash = Tree.Root;
var RetProof = global.GetMerkleProof(Tree.LevelsHash, StartAccount, EndAccount); var RetProof = global.GetMerkleProof(Tree.LevelsHash, StartAccount, EndAccount);
@ -254,9 +252,22 @@ function GETREST(msg) {
BufLength += ProofArrL.length * 32 + ProofArrR.length * 32 + 32; BufLength += ProofArrL.length * 32 + ProofArrR.length * 32 + 32;
} }
} }
var Data2 = { Result: nResult, Arr: ArrRest, Version: 1, ProofHash: ProofHash, ProofArrL: ProofArrL, ProofArrR: ProofArrR }; var Data2 = {
Result: nResult,
Arr: ArrRest,
Version: 1,
ProofHash: ProofHash,
ProofArrL: ProofArrL,
ProofArrR: ProofArrR
};
var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_REST_TRANSFER, BufLength, {}); var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_REST_TRANSFER, BufLength, {});
process.send({ cmd: "Send", addrStr: msg.addrStr, Method: "RETREST", Context: msg.Context, Data: BufWrite }); process.send({
cmd: "Send",
addrStr: msg.addrStr,
Method: "RETREST",
Context: msg.Context,
Data: BufWrite
});
}; };
function GETSMART(msg) { function GETSMART(msg) {
@ -278,7 +289,13 @@ function GETSMART(msg) {
} }
var Data2 = { Result: Arr.length ? 1 : 0, Arr: Arr }; var Data2 = { Result: Arr.length ? 1 : 0, Arr: Arr };
var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_SMART_TRANSFER, BufLength, {}); var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_SMART_TRANSFER, BufLength, {});
process.send({ cmd: "Send", addrStr: msg.addrStr, Method: "RETSMART", Context: msg.Context, Data: BufWrite }); process.send({
cmd: "Send",
addrStr: msg.addrStr,
Method: "RETSMART",
Context: msg.Context,
Data: BufWrite
});
}; };
var glMapForHash = {}; var glMapForHash = {};

View File

@ -26,7 +26,12 @@ if (process.send) {
}, 1000); }, 1000);
process.send({ cmd: "online", message: "OK" }); process.send({ cmd: "online", message: "OK" });
global.ToLogClient = function(Str, StrKey, bFinal) { global.ToLogClient = function(Str, StrKey, bFinal) {
process.send({ cmd: "ToLogClient", Str: "" + Str, StrKey: StrKey, bFinal: bFinal }); process.send({
cmd: "ToLogClient",
Str: "" + Str,
StrKey: StrKey,
bFinal: bFinal
});
}; };
} }
process.on('message', function(msg) { process.on('message', function(msg) {
@ -42,13 +47,17 @@ process.on('message', function(msg) {
var Ret; var Ret;
try { try {
Ret = global[msg.Name](msg.Params); Ret = global[msg.Name](msg.Params);
} } catch (e) {
catch (e) {
Err = 1; Err = 1;
Ret = "" + e; Ret = "" + e;
} }
if (msg.id) if (msg.id)
process.send({ cmd: "retcall", id: msg.id, Err: Err, Params: Ret }); process.send({
cmd: "retcall",
id: msg.id,
Err: Err,
Params: Ret
});
break; break;
case "FindTX": case "FindTX":
global.TreeFindTX.SaveValue(msg.TX, msg); global.TreeFindTX.SaveValue(msg.TX, msg);
@ -234,7 +243,11 @@ function InitTXProcess() {
} }
} }
global.ToLog("DETECT NEW VER on BlockNum=" + LastBlockNum, 2); global.ToLog("DETECT NEW VER on BlockNum=" + LastBlockNum, 2);
global.DApps.Accounts.DBStateTX.Write({ Num: 0, BlockNum: LastBlockNum, BlockNumMin: MinimalValidBlock }); global.DApps.Accounts.DBStateTX.Write({
Num: 0,
BlockNum: LastBlockNum,
BlockNumMin: MinimalValidBlock
});
} }
StateTX = global.DApps.Accounts.DBStateTX.Read(0); StateTX = global.DApps.Accounts.DBStateTX.Read(0);
LastBlockNum = StateTX.BlockNum; LastBlockNum = StateTX.BlockNum;
@ -347,8 +360,7 @@ global.EvalCode = function(Code) {
try { try {
var ret = eval(Code); var ret = eval(Code);
Result = JSON.stringify(ret, undefined, 4); Result = JSON.stringify(ret, undefined, 4);
} } catch (e) {
catch (e) {
Result = "" + e; Result = "" + e;
} }
return Result; return Result;

View File

@ -47,8 +47,7 @@ process.on('message', function(msg) {
var Ret; var Ret;
try { try {
Ret = global[msg.Name](msg.Params); Ret = global[msg.Name](msg.Params);
} } catch (e) {
catch (e) {
Err = 1; Err = 1;
Ret = "" + e; Ret = "" + e;
} }
@ -181,8 +180,7 @@ if (global.HTTPS_HOSTING_DOMAIN) {
global.ToError(err); global.ToError(err);
}); });
} }
} } else {
else {
HostingServer = http.createServer(MainHTTPFunction); HostingServer = http.createServer(MainHTTPFunction);
RunListenServer(); RunListenServer();
} }
@ -216,16 +214,14 @@ function MainHTTPFunction(request, response) {
if (postData && postData.length) { if (postData && postData.length) {
try { try {
Data = JSON.parse(postData); Data = JSON.parse(postData);
} } catch (e) {
catch (e) {
Response.writeHead(405, { 'Content-Type': 'text/html' }); Response.writeHead(405, { 'Content-Type': 'text/html' });
Response.end("Error data parsing"); Response.end("Error data parsing");
} }
} }
DoCommandNew(response, Type, Path, Data); DoCommandNew(response, Type, Path, Data);
}); });
} } else {
else {
DoCommandNew(response, Type, Path, Params); DoCommandNew(response, Type, Path, Params);
} }
}; };
@ -334,8 +330,7 @@ function DoCommandNew(response, Type, Path, Params) {
var Ret; var Ret;
try { try {
Ret = F(Params, response, ArrPath); Ret = F(Params, response, ArrPath);
} } catch (e) {
catch (e) {
Ret = { result: 0, text: e.message, text2: e.stack }; Ret = { result: 0, text: e.message, text2: e.stack };
} }
if (Ret === null) if (Ret === null)
@ -347,8 +342,7 @@ function DoCommandNew(response, Type, Path, Params) {
else else
Str = Ret; Str = Ret;
response.end(Str); response.end(Str);
} } catch (e) {
catch (e) {
global.ToLog("ERR PATH:" + Path); global.ToLog("ERR PATH:" + Path);
global.ToLog(e); global.ToLog(e);
response.end(); response.end();
@ -395,12 +389,10 @@ function DoCommandNew(response, Type, Path, Params) {
Name = PrefixPath + Name; Name = PrefixPath + Name;
global.SendWebFile(response, Name, Path); global.SendWebFile(response, Name, Path);
return; return;
} } else
else
if (LangPathMap[Method]) { if (LangPathMap[Method]) {
PrefixPath = "./SITE/" + Method; PrefixPath = "./SITE/" + Method;
} } else {
else {
var Name2 = WalletFileMap[Name]; var Name2 = WalletFileMap[Name];
if (!Name2) if (!Name2)
PrefixPath = "./SITE"; PrefixPath = "./SITE";
@ -610,8 +602,7 @@ HostingCaller.GetAccountListByKey = function(Params, ppp, bRet) {
Data.SmartState = global.BufLib.GetObjectFromBuffer(Data.Value.Data, Data.SmartObj.StateFormat, {}); Data.SmartState = global.BufLib.GetObjectFromBuffer(Data.Value.Data, Data.SmartObj.StateFormat, {});
if (typeof Data.SmartState === "object") if (typeof Data.SmartState === "object")
Data.SmartState.Num = Item.Num; Data.SmartState.Num = Item.Num;
} } catch (e) {
catch (e) {
Data.SmartState = {}; Data.SmartState = {};
} }
} }
@ -793,11 +784,9 @@ process.RunRPC = function(Name, Params, F) {
try { try {
process.send({ cmd: "call", id: global.GlobalRunID, Name: Name, Params: Params }); process.send({ cmd: "call", id: global.GlobalRunID, Name: Name, Params: Params });
global.GlobalRunMap[global.GlobalRunID] = F; global.GlobalRunMap[global.GlobalRunID] = F;
} catch (e) {
} }
catch (e) { } else {
}
}
else {
process.send({ cmd: "call", id: 0, Name: Name, Params: Params }); process.send({ cmd: "call", id: 0, Name: Name, Params: Params });
} }
}; };