@@ -118,7 +118,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
    CheckBlocksOnStartReverse(StartNum: number) {
 | 
					    CheckBlocksOnStartReverse(StartNum: number) {
 | 
				
			||||||
        var delta = 1;
 | 
					        var delta = 1;
 | 
				
			||||||
        var Count = 0;
 | 
					        var Count = 0;
 | 
				
			||||||
        var PrevBlock;
 | 
					        var PrevBlock: TeraBlock;
 | 
				
			||||||
        for (var num = StartNum; num >= this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2; num -= delta) {
 | 
					        for (var num = StartNum; num >= this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2; num -= delta) {
 | 
				
			||||||
            var Block = this.ReadBlockHeaderDB(num);
 | 
					            var Block = this.ReadBlockHeaderDB(num);
 | 
				
			||||||
            if (!Block || global.IsZeroArr(Block.SumHash)) {
 | 
					            if (!Block || global.IsZeroArr(Block.SumHash)) {
 | 
				
			||||||
@@ -242,7 +242,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
    WriteBodyResultDB(Block: TeraBlock) {
 | 
					    WriteBodyResultDB(Block: TeraBlock) {
 | 
				
			||||||
        var arrTr = Block.arrContentResult;
 | 
					        var arrTr = Block.arrContentResult;
 | 
				
			||||||
        if (Block.TrDataPos && Block.TrDataLen && Block.VersionBody && arrTr && arrTr.length) {
 | 
					        if (Block.TrDataPos && Block.TrDataLen && Block.VersionBody && arrTr && arrTr.length) {
 | 
				
			||||||
            var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1);
 | 
					            var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, true);
 | 
				
			||||||
            var FD = FileItem.fd;
 | 
					            var FD = FileItem.fd;
 | 
				
			||||||
            var Size = arrTr.length * 6;
 | 
					            var Size = arrTr.length * 6;
 | 
				
			||||||
            var Position = Block.TrDataPos + Block.TrDataLen - Size;
 | 
					            var Position = Block.TrDataPos + Block.TrDataLen - Size;
 | 
				
			||||||
@@ -263,7 +263,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    WriteBodyDB(Block: TeraBlock) {
 | 
					    WriteBodyDB(Block: TeraBlock) {
 | 
				
			||||||
        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1);
 | 
					        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, true);
 | 
				
			||||||
        var FD = FileItem.fd;
 | 
					        var FD = FileItem.fd;
 | 
				
			||||||
        var Position = FileItem.size;
 | 
					        var Position = FileItem.size;
 | 
				
			||||||
        Block.TrDataPos = Position
 | 
					        Block.TrDataPos = Position
 | 
				
			||||||
@@ -333,7 +333,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
        this.TruncateBufMap(BlockNum)
 | 
					        this.TruncateBufMap(BlockNum)
 | 
				
			||||||
        Block.VersionDB = global.DB_VERSION
 | 
					        Block.VersionDB = global.DB_VERSION
 | 
				
			||||||
        BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_STREAM_HEADER, 200, WorkStructStreamHeader)
 | 
					        BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_STREAM_HEADER, 200, WorkStructStreamHeader)
 | 
				
			||||||
        FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1)
 | 
					        FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, true)
 | 
				
			||||||
        if (!Block.FilePos) {
 | 
					        if (!Block.FilePos) {
 | 
				
			||||||
            if (!FileItem.size)
 | 
					            if (!FileItem.size)
 | 
				
			||||||
                FileItem.size = 100
 | 
					                FileItem.size = 100
 | 
				
			||||||
@@ -347,7 +347,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
        if (Block.FilePos >= FileItem.size) {
 | 
					        if (Block.FilePos >= FileItem.size) {
 | 
				
			||||||
            FileItem.size = Block.FilePos + BufWrite.length
 | 
					            FileItem.size = Block.FilePos + BufWrite.length
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1)
 | 
					        FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, true)
 | 
				
			||||||
        var Position = BlockNum * global.BLOCK_HEADER_SIZE2;
 | 
					        var Position = BlockNum * global.BLOCK_HEADER_SIZE2;
 | 
				
			||||||
        BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_HEADER_VERSION2, global.BLOCK_HEADER_SIZE2, WorkStructHeader2)
 | 
					        BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_HEADER_VERSION2, global.BLOCK_HEADER_SIZE2, WorkStructHeader2)
 | 
				
			||||||
        written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position)
 | 
					        written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position)
 | 
				
			||||||
@@ -365,7 +365,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
    WriteBufHeaderToFile1(BufWrite: Buffer, BlockNum: number) {
 | 
					    WriteBufHeaderToFile1(BufWrite: Buffer, BlockNum: number) {
 | 
				
			||||||
        BlockNum = Math.trunc(BlockNum)
 | 
					        BlockNum = Math.trunc(BlockNum)
 | 
				
			||||||
        this.TruncateBufMap(BlockNum)
 | 
					        this.TruncateBufMap(BlockNum)
 | 
				
			||||||
        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1);
 | 
					        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, true);
 | 
				
			||||||
        var Position = BlockNum * global.BLOCK_HEADER_SIZE;
 | 
					        var Position = BlockNum * global.BLOCK_HEADER_SIZE;
 | 
				
			||||||
        var written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position);
 | 
					        var written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position);
 | 
				
			||||||
        if (Position >= FileItem.size) {
 | 
					        if (Position >= FileItem.size) {
 | 
				
			||||||
@@ -468,7 +468,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
            return undefined;
 | 
					            return undefined;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        BlockNum = Math.trunc(BlockNum)
 | 
					        BlockNum = Math.trunc(BlockNum)
 | 
				
			||||||
        var Block, BufRead, FileItem, bytesRead, Position;
 | 
					        var Block: TeraBlock, BufRead: Buffer, FileItem, bytesRead: number, Position: number;
 | 
				
			||||||
        BufRead = global.BufLib.GetNewBuffer(global.BLOCK_HEADER_SIZE)
 | 
					        BufRead = global.BufLib.GetNewBuffer(global.BLOCK_HEADER_SIZE)
 | 
				
			||||||
        Position = BlockNum * global.BLOCK_HEADER_SIZE
 | 
					        Position = BlockNum * global.BLOCK_HEADER_SIZE
 | 
				
			||||||
        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER);
 | 
					        var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER);
 | 
				
			||||||
@@ -556,11 +556,11 @@ export default class CDB extends CCode {
 | 
				
			|||||||
    TruncateBlockDBInner(LastBlock: TeraBlock) {
 | 
					    TruncateBlockDBInner(LastBlock: TeraBlock) {
 | 
				
			||||||
        var FItem1, size;
 | 
					        var FItem1, size;
 | 
				
			||||||
        if (global.DB_VERSION === 2) {
 | 
					        if (global.DB_VERSION === 2) {
 | 
				
			||||||
            FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1)
 | 
					            FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, true)
 | 
				
			||||||
            size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE2
 | 
					            size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE2
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1)
 | 
					            FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, true)
 | 
				
			||||||
            size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE
 | 
					            size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (size < 0)
 | 
					        if (size < 0)
 | 
				
			||||||
@@ -575,13 +575,13 @@ export default class CDB extends CCode {
 | 
				
			|||||||
    ClearDataBase() {
 | 
					    ClearDataBase() {
 | 
				
			||||||
        if (global.TX_PROCESS && global.TX_PROCESS.RunRPC)
 | 
					        if (global.TX_PROCESS && global.TX_PROCESS.RunRPC)
 | 
				
			||||||
            global.TX_PROCESS.RunRPC("ClearDataBase", {})
 | 
					            global.TX_PROCESS.RunRPC("ClearDataBase", {})
 | 
				
			||||||
        var FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1);
 | 
					        var FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, true);
 | 
				
			||||||
        FItem1.size = 0
 | 
					        FItem1.size = 0
 | 
				
			||||||
        fs.ftruncateSync(FItem1.fd, FItem1.size)
 | 
					        fs.ftruncateSync(FItem1.fd, FItem1.size)
 | 
				
			||||||
        var FItem12 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1);
 | 
					        var FItem12 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, true);
 | 
				
			||||||
        FItem12.size = 0
 | 
					        FItem12.size = 0
 | 
				
			||||||
        fs.ftruncateSync(FItem12.fd, FItem12.size)
 | 
					        fs.ftruncateSync(FItem12.fd, FItem12.size)
 | 
				
			||||||
        var FItem2 = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1);
 | 
					        var FItem2 = global.BlockDB.OpenDBFile(FILE_NAME_BODY, true);
 | 
				
			||||||
        FItem2.size = 0
 | 
					        FItem2.size = 0
 | 
				
			||||||
        fs.ftruncateSync(FItem2.fd, FItem2.size)
 | 
					        fs.ftruncateSync(FItem2.fd, FItem2.size)
 | 
				
			||||||
        this.DBHeader100.Truncate(- 1)
 | 
					        this.DBHeader100.Truncate(- 1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,17 +13,16 @@ import * as fs from 'fs'
 | 
				
			|||||||
import Db from './db'
 | 
					import Db from './db'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class DBRow extends Db {
 | 
					export default class DBRow extends Db {
 | 
				
			||||||
    FileName;
 | 
					    FileName: string;
 | 
				
			||||||
    DataSize;
 | 
					    DataSize: number;
 | 
				
			||||||
    Format;
 | 
					    Format: string;
 | 
				
			||||||
    WorkStruct;
 | 
					    WorkStruct: {};
 | 
				
			||||||
    FileNameFull;
 | 
					    FileNameFull: fs.PathLike;
 | 
				
			||||||
    LastHash;
 | 
					    LastHash: Buffer;
 | 
				
			||||||
    WasUpdate;
 | 
					    BufMap: { [x: string]: any; };
 | 
				
			||||||
    BufMap;
 | 
					    BufMapCount: number;
 | 
				
			||||||
    BufMapCount;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor(FileName, DataSize, Format, bReadOnly) {
 | 
					    constructor(FileName: string, DataSize: number, Format: string, bReadOnly: boolean) {
 | 
				
			||||||
        super()
 | 
					        super()
 | 
				
			||||||
        this.FileName = FileName
 | 
					        this.FileName = FileName
 | 
				
			||||||
        this.DataSize = DataSize
 | 
					        this.DataSize = DataSize
 | 
				
			||||||
@@ -55,7 +54,7 @@ export default class DBRow extends Db {
 | 
				
			|||||||
        this.DeleteMap(Data.Num)
 | 
					        this.DeleteMap(Data.Num)
 | 
				
			||||||
        var BufWrite = global.BufLib.GetBufferFromObject(Data, this.Format, this.DataSize, this.WorkStruct, 1);
 | 
					        var BufWrite = global.BufLib.GetBufferFromObject(Data, this.Format, this.DataSize, this.WorkStruct, 1);
 | 
				
			||||||
        var Position = Data.Num * this.DataSize;
 | 
					        var Position = Data.Num * this.DataSize;
 | 
				
			||||||
        var FI = this.OpenDBFile(this.FileName, 1);
 | 
					        var FI = this.OpenDBFile(this.FileName, true);
 | 
				
			||||||
        var written = fs.writeSync(FI.fd, BufWrite, 0, BufWrite.length, Position);
 | 
					        var written = fs.writeSync(FI.fd, BufWrite, 0, BufWrite.length, Position);
 | 
				
			||||||
        if (written !== BufWrite.length) {
 | 
					        if (written !== BufWrite.length) {
 | 
				
			||||||
            global.TO_ERROR_LOG("DB-ROW", 10, "Error write to file:" + written + " <> " + BufWrite.length)
 | 
					            global.TO_ERROR_LOG("DB-ROW", 10, "Error write to file:" + written + " <> " + BufWrite.length)
 | 
				
			||||||
@@ -116,7 +115,7 @@ export default class DBRow extends Db {
 | 
				
			|||||||
        var Position = (LastNum + 1) * this.DataSize;
 | 
					        var Position = (LastNum + 1) * this.DataSize;
 | 
				
			||||||
        if (Position < 0)
 | 
					        if (Position < 0)
 | 
				
			||||||
            Position = 0
 | 
					            Position = 0
 | 
				
			||||||
        var FI = this.OpenDBFile(this.FileName, 1);
 | 
					        var FI = this.OpenDBFile(this.FileName, true);
 | 
				
			||||||
        if (Position < FI.size) {
 | 
					        if (Position < FI.size) {
 | 
				
			||||||
            this.LastHash = undefined
 | 
					            this.LastHash = undefined
 | 
				
			||||||
            this.WasUpdate = 1
 | 
					            this.WasUpdate = 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,8 +14,8 @@ import * as fs from 'fs'
 | 
				
			|||||||
export default class Db {
 | 
					export default class Db {
 | 
				
			||||||
    DBMap;
 | 
					    DBMap;
 | 
				
			||||||
    LastHash;
 | 
					    LastHash;
 | 
				
			||||||
    WasUpdate;
 | 
					    WasUpdate: number;
 | 
				
			||||||
    WasCheckPathDB;
 | 
					    WasCheckPathDB: boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructor() {
 | 
					    constructor() {
 | 
				
			||||||
        this.DBMap = {}
 | 
					        this.DBMap = {}
 | 
				
			||||||
@@ -24,7 +24,7 @@ export default class Db {
 | 
				
			|||||||
        var Path = global.GetDataPath("DB");
 | 
					        var Path = global.GetDataPath("DB");
 | 
				
			||||||
        global.CheckCreateDir(Path)
 | 
					        global.CheckCreateDir(Path)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    CloseDBFile(name, bdelete?) {
 | 
					    CloseDBFile(name: string, bdelete?: boolean) {
 | 
				
			||||||
        this.LastHash = undefined
 | 
					        this.LastHash = undefined
 | 
				
			||||||
        this.WasUpdate = 1
 | 
					        this.WasUpdate = 1
 | 
				
			||||||
        var Item = this.DBMap[name];
 | 
					        var Item = this.DBMap[name];
 | 
				
			||||||
@@ -47,7 +47,7 @@ export default class Db {
 | 
				
			|||||||
            delete this.DBMap[name]
 | 
					            delete this.DBMap[name]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    OpenDBFile(name, bWrite?, bExist?) {
 | 
					    OpenDBFile(name: string, bWrite?: boolean, bExist?: boolean) {
 | 
				
			||||||
        if (bWrite && global.READ_ONLY_DB) {
 | 
					        if (bWrite && global.READ_ONLY_DB) {
 | 
				
			||||||
            global.ToLogTrace("CANNOT WRITE - DB IN READ_ONLY MODE!!!")
 | 
					            global.ToLogTrace("CANNOT WRITE - DB IN READ_ONLY MODE!!!")
 | 
				
			||||||
            process.exit()
 | 
					            process.exit()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -178,7 +178,7 @@ export default class CMessages extends CSmartContract {
 | 
				
			|||||||
        if (!Tr.ToAll)
 | 
					        if (!Tr.ToAll)
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        var CurTime = global.GetCurrentTime(0) - 0;
 | 
					        var CurTime = global.GetCurrentTime(0) - 0;
 | 
				
			||||||
        var Count;
 | 
					        var Count: number;
 | 
				
			||||||
        if (global.GrayConnect())
 | 
					        if (global.GrayConnect())
 | 
				
			||||||
            Count = Math.trunc(global.MAX_GRAY_CONNECTIONS_TO_SERVER / 2)
 | 
					            Count = Math.trunc(global.MAX_GRAY_CONNECTIONS_TO_SERVER / 2)
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -100,6 +100,11 @@ export interface TeraJobTx {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface TeraBlock {
 | 
					export interface TeraBlock {
 | 
				
			||||||
 | 
					    Hash2?: Buffer;
 | 
				
			||||||
 | 
					    Hash1?: Buffer;
 | 
				
			||||||
 | 
					    MinerName?: string;
 | 
				
			||||||
 | 
					    Miner?: number;
 | 
				
			||||||
 | 
					    Num?: number;
 | 
				
			||||||
    NodeNum?: number;
 | 
					    NodeNum?: number;
 | 
				
			||||||
    TransferNodesCount?: number;
 | 
					    TransferNodesCount?: number;
 | 
				
			||||||
    StartMining?: boolean;
 | 
					    StartMining?: boolean;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user