1
0
forked from circlecloud/tera

refactor: add more type define

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-24 13:03:06 +08:00
parent 38e396feb0
commit c666069889
18 changed files with 896 additions and 682 deletions

View File

@@ -10,17 +10,20 @@
"use strict";
import { RBTree } from './library';
import * as crypto from 'crypto'
const MAX_MESSAGE_COUNT = 1000;
import CSmartContract from './transaction-validator'
import { TeraTr, SocketSendInfo } from '../interfaces/server';
import CNode from './node';
export default class CMessages extends CSmartContract {
MemPoolMsg
constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) {
MemPoolMsg: RBTree<any>[]
constructor(SetKeyPair: crypto.ECDH, RunIP: string, RunPort: number, UseRNDHeader: boolean, bVirtual: boolean) {
super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual)
this.MemPoolMsg = []
for (var i = 0; i <= global.MAX_LEVEL_SPECIALIZATION; i++)
this.MemPoolMsg[i] = new RBTree(global.CompareItemTimePow)
}
AddMsgToQuote(Msg) {
AddMsgToQuote(Msg: TeraTr) {
var Tree = this.MemPoolMsg[Msg.Level];
if (Tree) {
if (Tree.insert(Msg)) {
@@ -38,7 +41,7 @@ export default class CMessages extends CSmartContract {
}
return 0;
}
IsValidMsg(Msg) {
IsValidMsg(Msg: TeraTr) {
this.CheckCreateMsgHASH(Msg)
if (Msg.power < global.MIN_POWER_POW_MSG)
return - 1;
@@ -46,7 +49,7 @@ export default class CMessages extends CSmartContract {
return - 1;
return 1;
}
CheckCreateMsgHASH(Msg) {
CheckCreateMsgHASH(Msg: TeraTr) {
if (!Msg.HashPow) {
Msg.HASH = global.sha3(Msg.body)
Msg.HashPow = global.GetHashWithValues(Msg.HASH, Msg.nonce, Msg.time)
@@ -57,16 +60,19 @@ export default class CMessages extends CSmartContract {
Msg.Level = global.MAX_LEVEL_SPECIALIZATION
}
}
CreateMsgFromBody(Body, ToAddr) {
CreateMsgFromBody(Body: any, ToAddr: any) {
var HASH = global.sha3(Body);
var Msg = {
HASH: HASH, body: Body, addrArr: ToAddr, nonce: global.CreateNoncePOWExtern(HASH, this.CurrentBlockNum, 3 * (1 << global.MIN_POWER_POW_MSG)),
HASH: HASH,
body: Body,
addrArr: ToAddr,
nonce: global.CreateNoncePOWExtern(HASH, this.CurrentBlockNum, 3 * (1 << global.MIN_POWER_POW_MSG)),
time: this.CurrentBlockNum,
};
this.CheckCreateMsgHASH(Msg)
return Msg;
}
SendMessage(Body, ToAddr) {
SendMessage(Body: any, ToAddr: any) {
var Msg = this.CreateMsgFromBody(Body, ToAddr);
this.SendMessageNext(Msg)
}
@@ -91,7 +97,7 @@ export default class CMessages extends CSmartContract {
static MESSAGE_F() {
return "{Arr:[{addrArr:hash,body:tr,nonce:uint,time:uint}]}";
}
MESSAGE(Info, CurTime) {
MESSAGE(Info: SocketSendInfo, CurTime: number) {
var Data = this.DataFromF(Info);
var arr = Data.Arr;
for (var i = 0; i < arr.length; i++) {
@@ -112,11 +118,11 @@ export default class CMessages extends CSmartContract {
}
}
}
SendGetMessage(Node) {
SendGetMessage(Node: CNode) {
var Context = { "SendGetMessage": 1 };
this.Send(Node, { "Method": "GETMESSAGE", "Context": Context, "Data": undefined })
}
GETMESSAGE(Info, CurTime) {
GETMESSAGE(Info: SocketSendInfo, CurTime: number) {
var arr = [];
var BufLength = 300;
var Level = global.AddrLevelArr(this.addrArr, Info.Node.addrArr);
@@ -132,7 +138,7 @@ export default class CMessages extends CSmartContract {
}
this.SendF(Info.Node, { "Method": "MESSAGE", "Context": Info.Context, "Data": { Arr: arr } }, BufLength)
}
AddTransaction(Tr, ToAll?) {
AddTransaction(Tr: TeraTr, ToAll?: boolean) {
Tr.ToAll = ToAll
var Res = this.IsValidTransaction(Tr, this.CurrentBlockNum);
if (Res <= 0 && Res !== - 3)
@@ -168,7 +174,7 @@ export default class CMessages extends CSmartContract {
ToLogContext("#1 Add " + TrName(Tr) + " for Block: " + Tr.num + " Res=" + Res)
return Res;
}
SendTransaction(Tr) {
SendTransaction(Tr: TeraTr) {
if (!Tr.ToAll)
return;
var CurTime = global.GetCurrentTime(0) - 0;
@@ -201,17 +207,17 @@ export default class CMessages extends CSmartContract {
static TRANSACTION_F() {
return "{body:tr}";
}
TRANSACTION(Info, CurTime) {
TRANSACTION(Info: SocketSendInfo, CurTime: number) {
var Tr = this.DataFromF(Info);
ToLogContext("Receive " + TrName(Tr) + " from " + global.NodeName(Info.Node))
this.AddTransaction(Tr, 0)
this.AddTransaction(Tr, false)
}
};
function ToLogContext(Str) {
function ToLogContext(Str: string) {
};
function TrName(Tr) {
function TrName(Tr: TeraTr) {
if (!Tr.HASH)
global.SERVER.CheckCreateTransactionObject(Tr);
var Str = global.GetHexFromArr(Tr.HASH);