1
1
import * as C from '../constants/constants.js'
2
2
import * as utils from '../utils/utils.js'
3
- import varint from 'varint'
4
3
5
4
const poolEncoder = new globalThis . TextEncoder ( )
6
5
@@ -9,14 +8,12 @@ const maxMessageSize = 1024 * 1024
9
8
const poolSize = maxMessageSize * 8
10
9
11
10
let poolBuffer
12
- let poolView
13
11
let poolOffset
14
12
15
13
function reallocPool ( ) {
16
14
poolBuffer = utils . isNode
17
15
? globalThis . Buffer . allocUnsafe ( poolSize )
18
16
: new Uint8Array ( new ArrayBuffer ( poolSize ) )
19
- poolView = new DataView ( poolBuffer . buffer )
20
17
poolOffset = 0
21
18
}
22
19
@@ -50,14 +47,6 @@ export function getMsg(topic, action, data) {
50
47
51
48
const start = poolOffset
52
49
53
- const headerSize = 8
54
- for ( let n = 0 ; n < headerSize ; n ++ ) {
55
- poolBuffer [ poolOffset ++ ] = 0
56
- }
57
-
58
- let headerPos = start
59
- poolBuffer [ headerPos ++ ] = 128 + headerSize
60
-
61
50
poolBuffer [ poolOffset ++ ] = topic . charCodeAt ( 0 )
62
51
poolBuffer [ poolOffset ++ ] = 31
63
52
for ( let n = 0 ; n < action . length ; n ++ ) {
@@ -67,30 +56,18 @@ export function getMsg(topic, action, data) {
67
56
if ( data ) {
68
57
for ( let i = 0 ; i < data . length ; i ++ ) {
69
58
const type = typeof data [ i ]
70
- let len
71
59
if ( data [ i ] == null ) {
72
60
poolBuffer [ poolOffset ++ ] = 31
73
- len = 0
61
+ poolOffset + = 0
74
62
} else if ( type === 'object' ) {
75
63
poolBuffer [ poolOffset ++ ] = 31
76
- len = writeString ( poolBuffer , JSON . stringify ( data [ i ] ) , poolOffset )
77
- } else if ( type === 'bigint' ) {
78
- poolBuffer [ poolOffset ++ ] = 31
79
- poolView . setBigUint64 ( poolOffset , data [ i ] , false )
80
- len = 8
64
+ poolOffset += writeString ( poolBuffer , JSON . stringify ( data [ i ] ) , poolOffset )
81
65
} else if ( type === 'string' ) {
82
66
poolBuffer [ poolOffset ++ ] = 31
83
- len = writeString ( poolBuffer , data [ i ] , poolOffset )
67
+ poolOffset + = writeString ( poolBuffer , data [ i ] , poolOffset )
84
68
} else {
85
69
throw new Error ( 'invalid data' )
86
70
}
87
- poolOffset += len
88
-
89
- varint . encode ( len + 1 , poolBuffer , headerPos )
90
- headerPos += varint . encode . bytes
91
- if ( headerPos - start >= headerSize ) {
92
- throw new Error ( 'header too large' )
93
- }
94
71
95
72
if ( poolOffset >= poolSize ) {
96
73
throw new Error ( 'message too large' )
0 commit comments