godprotocol 1.0.752 → 1.0.754

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,35 +48,33 @@ class Account extends Filesystem {
48
48
  return account || this;
49
49
  };
50
50
 
51
- manage_buffer = () => {
51
+ manage_buffer = (cb) => {
52
52
  let call_session = `${Date.now()}-${Math.random()}`;
53
- this.mine_buffer[call_session] = [];
53
+ this.mine_buffer[call_session] = { blocks: [], cb };
54
54
 
55
55
  return call_session;
56
56
  };
57
57
 
58
58
  buff = (block, pid) => {
59
- let blks = this.mine_buffer[pid];
60
- if (!blks) return;
59
+ let bf = this.mine_buffer[pid];
60
+ if (!bf) return;
61
61
 
62
- blks.push(block.stringify());
62
+ bf.blocks.push(block.stringify());
63
63
  };
64
64
 
65
- flush_buffer = (cb, pid) => {
66
- let blocks = this.mine_buffer[pid];
65
+ flush_buffer = (pid) => {
66
+ let buff = this.mine_buffer[pid];
67
67
 
68
- cb && cb(blocks);
68
+ buff.cb && buff.cb(buff.blocks);
69
69
  delete this.mine_buffer[pid];
70
70
  };
71
71
 
72
72
  load = ({ instructions, account }, cb) => {
73
73
  account = this.get_account(account);
74
74
 
75
- let pid = account.manage_buffer();
75
+ let pid = account.manage_buffer(cb);
76
76
 
77
77
  this.manager.push({ sequence: instructions, account, pid });
78
-
79
- account.flush_buffer(cb, pid);
80
78
  };
81
79
 
82
80
  parse = ({ physical_address, account, query }, cb) => {
@@ -93,19 +91,17 @@ class Account extends Filesystem {
93
91
  run = ({ account, query, physical_address }, cb) => {
94
92
  account = this.get_account(account);
95
93
 
96
- let pid = account.manage_buffer();
94
+ let pid = account.manage_buffer(cb);
97
95
 
98
96
  let context = physical_address
99
97
  ? this.manager.web.get({ physical_address }, true)
100
98
  : account.vm.get_context();
101
99
 
102
- if (!context) return account.flush_buffer(cb, pid);
100
+ if (!context) return account.flush_buffer(pid);
103
101
 
104
102
  let blk = query ? context.explore(query) : context.get_block(0);
105
103
 
106
104
  blk && this.manager.push({ sequence: blk.data, account, pid });
107
-
108
- account.flush_buffer(cb, pid);
109
105
  };
110
106
 
111
107
  add_server = (server) => {
package/Objects/Chain.js CHANGED
@@ -78,6 +78,7 @@ class Chain extends Explorer {
78
78
  let obj = {};
79
79
 
80
80
  obj.physical_address = this.physical_address;
81
+ obj.height = this.blocks.length;
81
82
  obj.parent = this.parent.path;
82
83
  obj.account = this.parent.account.name;
83
84
  obj.name = this.name;
@@ -21,8 +21,15 @@ class Manager {
21
21
  track.account.vm.execute(instruction, track);
22
22
  track.pointer++;
23
23
 
24
+ if (track.breakpoint.slice(-1)[0] === track.pointer) {
25
+ track.account.flush_buffer(track.pid);
26
+ track.pid = track.pids.splice(-1)[0];
27
+ }
28
+
24
29
  if (track.pointer === track.sequence.length) {
25
30
  this.total--;
31
+ track.account.flush_buffer(track.pid);
32
+
26
33
  delete this.tracks[account];
27
34
  }
28
35
  }
@@ -38,12 +45,20 @@ class Manager {
38
45
  let track = this.tracks[program.account.name];
39
46
 
40
47
  if (!track) {
41
- track = { ...program, sequence: [...program.sequence], pointer: 0 };
48
+ track = {
49
+ ...program,
50
+ sequence: [...program.sequence],
51
+ pointer: 0,
52
+ pids: [program.pid],
53
+ breakpoint: new Array(),
54
+ };
42
55
  this.tracks[track.account.name] = track;
43
56
  this.total++;
44
57
  this.total === 1 && this.start_clock();
45
58
  } else {
59
+ track.breakpoint.push(track.pointer + 1);
46
60
  track.sequence.splice(track.pointer + 1, 0, ...program.sequence);
61
+ track.pids.push(program.pid);
47
62
  }
48
63
  };
49
64
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godprotocol",
3
- "version": "1.0.752",
3
+ "version": "1.0.754",
4
4
  "description": "A data mediator.",
5
5
  "main": "Index.js",
6
6
  "types": "index.d.ts",