dolphindb 2.0.1022 → 2.0.1024
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.
- package/browser.d.ts +3 -1
- package/browser.js +86 -78
- package/browser.js.map +1 -1
- package/docs.en.json +55 -29
- package/docs.zh.json +88 -57
- package/i18n/dict.json +3 -0
- package/index.d.ts +3 -1
- package/index.js +86 -78
- package/index.js.map +1 -1
- package/package.json +6 -6
package/docs.en.json
CHANGED
|
@@ -176,25 +176,35 @@
|
|
|
176
176
|
"",
|
|
177
177
|
" //define a unary function",
|
|
178
178
|
" $ def func1(x){",
|
|
179
|
-
" $
|
|
180
|
-
" $
|
|
181
|
-
" $
|
|
182
|
-
" $
|
|
183
|
-
" $
|
|
184
|
-
" $
|
|
179
|
+
" $ if(x<5){",
|
|
180
|
+
" $ return x*3",
|
|
181
|
+
" $ }",
|
|
182
|
+
" $ else{",
|
|
183
|
+
" $ return x+3",
|
|
184
|
+
" $ }",
|
|
185
185
|
" $ }",
|
|
186
186
|
" //when X is an integer, the size of the result is X + 1 ",
|
|
187
187
|
" $ accumulate(func1, 5, 1)",
|
|
188
|
-
"
|
|
189
|
-
" //when X is NULL or unspecified, as the results of the 3rd and 4th iterations are the same, the function stops iteration and outputs the results of the first three iterations",
|
|
190
|
-
" $ accumulate(func1,NULL,1)",
|
|
191
|
-
" [1,3,9,6]",
|
|
188
|
+
" [1,3,9,12,15,18]",
|
|
192
189
|
" //X is a unary function \"condition\". As condition returns false during the 3rd iteration, the system stops iteration and outputs the results of the first two iterations.",
|
|
193
190
|
" $ def condition(x){",
|
|
194
|
-
" $
|
|
191
|
+
" $ return x<9",
|
|
195
192
|
" $ }",
|
|
196
193
|
" $ accumulate(func1, condition, 1) ",
|
|
197
194
|
" [1,3,9]",
|
|
195
|
+
"",
|
|
196
|
+
" //when X is NULL or unspecified, define a UDF func2 for iteration.",
|
|
197
|
+
" $ def func2(x){",
|
|
198
|
+
" $ if(x<5){",
|
|
199
|
+
" $ return x*3",
|
|
200
|
+
" $ }",
|
|
201
|
+
" $ else{",
|
|
202
|
+
" $ return 6",
|
|
203
|
+
" $ }",
|
|
204
|
+
" $ }",
|
|
205
|
+
" //As the results of the 3rd and 4th iterations are the same, the function stops iteration and outputs the results of the first three iterations.",
|
|
206
|
+
" $ accumulate(func2,NULL,1)",
|
|
207
|
+
" [1,3,9,6]",
|
|
198
208
|
""
|
|
199
209
|
]
|
|
200
210
|
},
|
|
@@ -7541,7 +7551,7 @@
|
|
|
7541
7551
|
"",
|
|
7542
7552
|
" $ ds=sqlDS(<select Time,Exchange,Symbol,Trade_Volume as Vol, Trade_Price as Price from Trades>)",
|
|
7543
7553
|
" $ ds.cacheDS!() //cache the data",
|
|
7544
|
-
" $ ds.
|
|
7554
|
+
" $ ds.clearDSCache!() //clear the cache"
|
|
7545
7555
|
]
|
|
7546
7556
|
}
|
|
7547
7557
|
]
|
|
@@ -7603,7 +7613,7 @@
|
|
|
7603
7613
|
"",
|
|
7604
7614
|
" $ ds=sqlDS(<select Time,Exchange,Symbol,Trade_Volume as Vol, Trade_Price as Price from Trades>)",
|
|
7605
7615
|
" $ ds.cacheDSNow() //cache the data immediately",
|
|
7606
|
-
" $ ds.
|
|
7616
|
+
" $ ds.clearDSCacheNow() //clear the cache immediately",
|
|
7607
7617
|
"",
|
|
7608
7618
|
"",
|
|
7609
7619
|
"",
|
|
@@ -7789,7 +7799,7 @@
|
|
|
7789
7799
|
{
|
|
7790
7800
|
"type": "text",
|
|
7791
7801
|
"value": [
|
|
7792
|
-
"Call a function with the specified parameters. It is often used with function :doc:`each/peach
|
|
7802
|
+
"Call a function with the specified parameters. It is often used with function :doc:`each </Functionalprogramming/TemplateFunctions/each>`/:doc:`peach </Functionalprogramming/TemplateFunctions/peach>` or :doc:`loop </Functionalprogramming/TemplateFunctions/loop>`/:doc:`ploop </Functionalprogramming/TemplateFunctions/ploop>` to call multiple functions."
|
|
7793
7803
|
]
|
|
7794
7804
|
}
|
|
7795
7805
|
]
|
|
@@ -10444,7 +10454,7 @@
|
|
|
10444
10454
|
" ",
|
|
10445
10455
|
" $ ds=sqlDS(<select Time,Exchange,Symbol,Trade_Volume as Vol, Trade_Price as Price from Trades>)",
|
|
10446
10456
|
" $ ds.cacheDS!() //cache the data",
|
|
10447
|
-
" $ ds.
|
|
10457
|
+
" $ ds.clearDSCache!() //clear the cache"
|
|
10448
10458
|
]
|
|
10449
10459
|
}
|
|
10450
10460
|
]
|
|
@@ -10506,7 +10516,7 @@
|
|
|
10506
10516
|
" ",
|
|
10507
10517
|
" $ ds=sqlDS(<select Time,Exchange,Symbol,Trade_Volume as Vol, Trade_Price as Price from Trades>)",
|
|
10508
10518
|
" $ ds.cacheDSNow() //cache the data immediately",
|
|
10509
|
-
" $ ds.
|
|
10519
|
+
" $ ds.clearDSCacheNow() //clear the cache immediately"
|
|
10510
10520
|
]
|
|
10511
10521
|
}
|
|
10512
10522
|
]
|
|
@@ -21063,7 +21073,9 @@
|
|
|
21063
21073
|
{
|
|
21064
21074
|
"type": "text",
|
|
21065
21075
|
"value": [
|
|
21066
|
-
"Return the corresponding datetime(s). The return value type is DATETIME, a temporal."
|
|
21076
|
+
"Return the corresponding datetime(s). The return value type is DATETIME, a temporal.",
|
|
21077
|
+
"",
|
|
21078
|
+
"Note that the range for data of DATETIME type is [1901.12.13T20:45:53, 2038.01.19T03:14:07]."
|
|
21067
21079
|
]
|
|
21068
21080
|
}
|
|
21069
21081
|
]
|
|
@@ -73508,23 +73520,38 @@
|
|
|
73508
73520
|
"language": "console",
|
|
73509
73521
|
"value": [
|
|
73510
73522
|
"",
|
|
73511
|
-
"
|
|
73512
|
-
"
|
|
73513
|
-
" $
|
|
73514
|
-
" $
|
|
73515
|
-
" $
|
|
73516
|
-
" $
|
|
73517
|
-
" $
|
|
73523
|
+
" // define a unary function",
|
|
73524
|
+
" $ def func1(x){",
|
|
73525
|
+
" $ if(x<5){",
|
|
73526
|
+
" $ return x*3",
|
|
73527
|
+
" $ }",
|
|
73528
|
+
" $ else{",
|
|
73529
|
+
" $ return x+3",
|
|
73530
|
+
" $ }",
|
|
73518
73531
|
" $ }",
|
|
73532
|
+
" // When X is an integer, iterate X times and output the last result.",
|
|
73519
73533
|
" $ reduce(func1, 5, 1)",
|
|
73520
|
-
"
|
|
73521
|
-
"
|
|
73522
|
-
" 6",
|
|
73534
|
+
" 18",
|
|
73535
|
+
" //X is a unary function \"condition\". As condition returns false during the 3rd iteration, the system stops iteration and outputs the results of the first two iterations.",
|
|
73523
73536
|
" $ def condition(x){",
|
|
73524
73537
|
" $ \treturn x<9",
|
|
73525
73538
|
" $ }",
|
|
73526
73539
|
" $ reduce(func1, condition, 1) ",
|
|
73527
73540
|
" 9",
|
|
73541
|
+
"",
|
|
73542
|
+
" //when X is NULL or unspecified, define a UDF func2 for iteration.",
|
|
73543
|
+
" $ def func2(x){",
|
|
73544
|
+
" $ if(x<5){",
|
|
73545
|
+
" $ return x*3",
|
|
73546
|
+
" $ }",
|
|
73547
|
+
" $ else{",
|
|
73548
|
+
" $ return 6",
|
|
73549
|
+
" $ }",
|
|
73550
|
+
" $ }",
|
|
73551
|
+
" //As the results of the 3rd and 4th iterations are the same, the function stops iteration and outputs the results of the first three iterations.",
|
|
73552
|
+
" $ reduce(func2,NULL,1)",
|
|
73553
|
+
" // output",
|
|
73554
|
+
" 6",
|
|
73528
73555
|
""
|
|
73529
73556
|
]
|
|
73530
73557
|
},
|
|
@@ -101774,8 +101801,7 @@
|
|
|
101774
101801
|
"type": "text",
|
|
101775
101802
|
"value": [
|
|
101776
101803
|
"Call a function with the specified parameters. Similar to :doc:`/Functionalprogramming/TemplateFunctions/call`, ",
|
|
101777
|
-
"it can be used in :doc:`each/peach </Functionalprogramming/TemplateFunctions/
|
|
101778
|
-
":doc:`loop/ploop </Functionalprogramming/TemplateFunctions/loopPloop>` function to call a set of functions. ",
|
|
101804
|
+
"it can be used in :doc:`each </Functionalprogramming/TemplateFunctions/each>`/:doc:`peach </Functionalprogramming/TemplateFunctions/peach>` or :doc:`loop </Functionalprogramming/TemplateFunctions/loop>`/:doc:`ploop </Functionalprogramming/TemplateFunctions/ploop>` function to call a set of functions. ",
|
|
101779
101805
|
"The difference is that the size of args in call function is determined by the function passed in by the parameter func, ",
|
|
101780
101806
|
"whereas the size of args in unifiedCall is always 1. All arguments of the function used in function call is assembled in a ",
|
|
101781
101807
|
"tuple for function unifiedCall. "
|
package/docs.zh.json
CHANGED
|
@@ -162,25 +162,36 @@
|
|
|
162
162
|
"",
|
|
163
163
|
" //定义一个一元函数",
|
|
164
164
|
" $ def func1(x){",
|
|
165
|
-
" $
|
|
166
|
-
" $
|
|
167
|
-
" $
|
|
168
|
-
" $
|
|
169
|
-
" $
|
|
170
|
-
" $
|
|
165
|
+
" $ if(x<5){",
|
|
166
|
+
" $ return x*3",
|
|
167
|
+
" $ }",
|
|
168
|
+
" $ else{",
|
|
169
|
+
" $ return x+3",
|
|
170
|
+
" $ }",
|
|
171
171
|
" $ }",
|
|
172
172
|
" //当 X 为整数时,输出结果长度为 X + 1",
|
|
173
173
|
" $ accumulate(func1, 5, 1)",
|
|
174
|
-
" [1,3,9,
|
|
175
|
-
" //当 X 为 NULL(或不指定)时,因第4次迭代结果和第3次相同,停止迭代并输出前3次迭代结果。",
|
|
176
|
-
" $ accumulate(func1,NULL,1)",
|
|
177
|
-
" [1,3,9,6]",
|
|
174
|
+
" [1,3,9,12,15,18]",
|
|
178
175
|
" //当 X 为一元函数 condition 时,第3次迭代时因 condition 返回false,停止迭代并输出前2次迭代结果。",
|
|
179
176
|
" $ def condition(x){",
|
|
180
|
-
" $
|
|
177
|
+
" $ return x<9",
|
|
181
178
|
" $ }",
|
|
182
|
-
" $ accumulate(func1, condition, 1)
|
|
179
|
+
" $ accumulate(func1, condition, 1)",
|
|
183
180
|
" [1,3,9]",
|
|
181
|
+
"",
|
|
182
|
+
" //当 X 为 NULL(或不指定)时,自定义函数 func2 作为迭代的函数。",
|
|
183
|
+
" $ def func2(x){",
|
|
184
|
+
" $ if(x<5){",
|
|
185
|
+
" $ return x*3",
|
|
186
|
+
" $ }",
|
|
187
|
+
" $ else{",
|
|
188
|
+
" $ return 6",
|
|
189
|
+
" $ }",
|
|
190
|
+
" $ }",
|
|
191
|
+
"",
|
|
192
|
+
" //因第4次迭代结果和第3次相同,停止迭代并输出前3次迭代结果。",
|
|
193
|
+
" $ accumulate(func2,NULL,1)",
|
|
194
|
+
" [1,3,9,6]",
|
|
184
195
|
""
|
|
185
196
|
]
|
|
186
197
|
},
|
|
@@ -23142,7 +23153,9 @@
|
|
|
23142
23153
|
{
|
|
23143
23154
|
"type": "text",
|
|
23144
23155
|
"value": [
|
|
23145
|
-
"返回对应的 datetime 值。返回值的类型是 DATEITIME,一个时间值。"
|
|
23156
|
+
"返回对应的 datetime 值。返回值的类型是 DATEITIME,一个时间值。",
|
|
23157
|
+
"",
|
|
23158
|
+
"注意:DATETIME 类型的可用时间范围是 [1901.12.13T20:45:53, 2038.01.19T03:14:07]。"
|
|
23146
23159
|
]
|
|
23147
23160
|
}
|
|
23148
23161
|
]
|
|
@@ -39009,8 +39022,8 @@
|
|
|
39009
39022
|
"value": [
|
|
39010
39023
|
"返回当前节点已分配的内存和未使用的内存。返回一个字典其 key 值的含义为:",
|
|
39011
39024
|
"",
|
|
39012
|
-
"* freeBytes
|
|
39013
|
-
"* allocatedBytes
|
|
39025
|
+
"* freeBytes:当前节点未使用的内存,单位为字节。",
|
|
39026
|
+
"* allocatedBytes:当前节点已分配的内存,单位为字节。"
|
|
39014
39027
|
]
|
|
39015
39028
|
}
|
|
39016
39029
|
]
|
|
@@ -63887,7 +63900,7 @@
|
|
|
63887
63900
|
{
|
|
63888
63901
|
"type": "text",
|
|
63889
63902
|
"value": [
|
|
63890
|
-
"`funcArgs` 是函数func
|
|
63903
|
+
"`funcArgs` 是函数func的参数。可为向量、字典。如果有多个参数,则用元组表示,并且每个参数的长度(向量/字典的元素个数)必须相同。",
|
|
63891
63904
|
"",
|
|
63892
63905
|
"`window` 是正整型 或 DURATION 标量。",
|
|
63893
63906
|
"",
|
|
@@ -76715,15 +76728,15 @@
|
|
|
76715
76728
|
"",
|
|
76716
76729
|
"返回一个表,包含以下列:",
|
|
76717
76730
|
"",
|
|
76718
|
-
"
|
|
76719
|
-
"列名
|
|
76720
|
-
"
|
|
76721
|
-
"chunkId
|
|
76722
|
-
"srcNode
|
|
76723
|
-
"destNode
|
|
76724
|
-
"
|
|
76731
|
+
"================= =====================",
|
|
76732
|
+
"列名 含义 ",
|
|
76733
|
+
"================= =====================",
|
|
76734
|
+
"chunkId chunk 的唯一标识 ",
|
|
76735
|
+
"srcNode 源节点的别名 ",
|
|
76736
|
+
"destNode 目标节点的别名 ",
|
|
76737
|
+
"================= ===================== ",
|
|
76725
76738
|
"",
|
|
76726
|
-
"调用该函数后,可以在控制节点上执行
|
|
76739
|
+
"调用该函数后,可以在控制节点上执行 :doc:`/FunctionsandCommands/FunctionReferences/g/getRecoveryTaskStatus` 查看任务执行的状态。"
|
|
76727
76740
|
]
|
|
76728
76741
|
}
|
|
76729
76742
|
]
|
|
@@ -76744,14 +76757,15 @@
|
|
|
76744
76757
|
{
|
|
76745
76758
|
"type": "text",
|
|
76746
76759
|
"value": [
|
|
76747
|
-
"
|
|
76748
|
-
"ChunkId
|
|
76749
|
-
"
|
|
76750
|
-
"99279094-ca12-3b87-48b6-520cbb986f39
|
|
76751
|
-
"45f612b8-42f5-aebd-4cef-e522b6ae1fc8
|
|
76752
|
-
"
|
|
76760
|
+
"====================================== ================= ==================",
|
|
76761
|
+
"ChunkId srcNode destNode ",
|
|
76762
|
+
"====================================== ================= ==================",
|
|
76763
|
+
"99279094-ca12-3b87-48b6-520cbb986f39 node1 node2 ",
|
|
76764
|
+
"45f612b8-42f5-aebd-4cef-e522b6ae1fc8 node1 node2 ",
|
|
76765
|
+
"====================================== ================= ==================",
|
|
76753
76766
|
"",
|
|
76754
|
-
" "
|
|
76767
|
+
".. meta::",
|
|
76768
|
+
" :keywords: rebalance"
|
|
76755
76769
|
]
|
|
76756
76770
|
}
|
|
76757
76771
|
]
|
|
@@ -76782,7 +76796,6 @@
|
|
|
76782
76796
|
"type": "text",
|
|
76783
76797
|
"value": [
|
|
76784
76798
|
"`nodeAlias` 字符串,表示数据节点的别名。",
|
|
76785
|
-
"",
|
|
76786
76799
|
"`exec` 布尔值,表示是否在节点内进行数据平衡。默认值为 false,表示不进行数据平衡。"
|
|
76787
76800
|
]
|
|
76788
76801
|
}
|
|
@@ -76800,15 +76813,15 @@
|
|
|
76800
76813
|
"",
|
|
76801
76814
|
"返回结果包含以下列:",
|
|
76802
76815
|
"",
|
|
76803
|
-
"
|
|
76804
|
-
"列名
|
|
76805
|
-
"
|
|
76806
|
-
"chunkId
|
|
76807
|
-
"srcVolume
|
|
76808
|
-
"destVolume
|
|
76809
|
-
"
|
|
76816
|
+
"================= =====================",
|
|
76817
|
+
"列名 含义 ",
|
|
76818
|
+
"================= =====================",
|
|
76819
|
+
"chunkId chunk 的唯一标识 ",
|
|
76820
|
+
"srcVolume 源磁盘卷 ",
|
|
76821
|
+
"destVolume 目标磁盘卷 ",
|
|
76822
|
+
"================= =====================",
|
|
76810
76823
|
"",
|
|
76811
|
-
"调用该函数进行数据平衡后,可以在控制节点上执行 :doc:`/FunctionsandCommands/FunctionReferences/g/getRecoveryTaskStatus`
|
|
76824
|
+
"调用该函数进行数据平衡后,可以在控制节点上执行 :doc:`/FunctionsandCommands/FunctionReferences/g/getRecoveryTaskStatus` 查看任务执行的状态。"
|
|
76812
76825
|
]
|
|
76813
76826
|
}
|
|
76814
76827
|
]
|
|
@@ -76829,11 +76842,14 @@
|
|
|
76829
76842
|
{
|
|
76830
76843
|
"type": "text",
|
|
76831
76844
|
"value": [
|
|
76832
|
-
"
|
|
76833
|
-
"
|
|
76834
|
-
"
|
|
76835
|
-
"
|
|
76836
|
-
"
|
|
76845
|
+
"====================================== ================= ==================",
|
|
76846
|
+
"ChunkId srcVolume destVolume ",
|
|
76847
|
+
"====================================== ================= ==================",
|
|
76848
|
+
"82c6eb6c-36ee-b1b6-4a86-ca24d9faaa25 /hdd/hdd1/volumes /hdd/hdd2/volumes ",
|
|
76849
|
+
"====================================== ================= ==================",
|
|
76850
|
+
"",
|
|
76851
|
+
".. meta::",
|
|
76852
|
+
" :keywords: rebalance"
|
|
76837
76853
|
]
|
|
76838
76854
|
}
|
|
76839
76855
|
]
|
|
@@ -77010,23 +77026,38 @@
|
|
|
77010
77026
|
"language": "console",
|
|
77011
77027
|
"value": [
|
|
77012
77028
|
"",
|
|
77029
|
+
" //定义一个一元函数",
|
|
77013
77030
|
" $ def func1(x){",
|
|
77014
|
-
" $
|
|
77015
|
-
" $
|
|
77016
|
-
" $
|
|
77017
|
-
" $
|
|
77018
|
-
" $
|
|
77019
|
-
" $
|
|
77031
|
+
" $ if(x<5){",
|
|
77032
|
+
" $ return x*3",
|
|
77033
|
+
" $ }",
|
|
77034
|
+
" $ else{",
|
|
77035
|
+
" $ return x+3",
|
|
77036
|
+
" $ }",
|
|
77020
77037
|
" $ }",
|
|
77038
|
+
" //当 X 为整数时,迭代 X 次,输出最后一个结果",
|
|
77021
77039
|
" $ reduce(func1, 5, 1)",
|
|
77022
|
-
"
|
|
77023
|
-
"
|
|
77024
|
-
" 6",
|
|
77040
|
+
" 18",
|
|
77041
|
+
" //当 X 为一元函数 condition 时,第3次迭代时因 condition 返回false,停止迭代2次后停止,并输出最后一个结果。",
|
|
77025
77042
|
" $ def condition(x){",
|
|
77026
|
-
" $
|
|
77027
|
-
"
|
|
77028
|
-
" $ reduce(func1, condition, 1)
|
|
77043
|
+
" $ return x<9",
|
|
77044
|
+
" }",
|
|
77045
|
+
" $ reduce(func1, condition, 1)",
|
|
77029
77046
|
" 9",
|
|
77047
|
+
"",
|
|
77048
|
+
" //当 X 为 NULL(或不指定)时,自定义函数 func2 作为进行迭代的函数。",
|
|
77049
|
+
" $ def func2(x){",
|
|
77050
|
+
" $ if(x<5){",
|
|
77051
|
+
" $ return x*3",
|
|
77052
|
+
" $ }",
|
|
77053
|
+
" $ else{",
|
|
77054
|
+
" $ return 6",
|
|
77055
|
+
" $ }",
|
|
77056
|
+
" $ }",
|
|
77057
|
+
"",
|
|
77058
|
+
" //因第4次迭代结果和第3次相同,停止迭代并输出最后一个结果。",
|
|
77059
|
+
" $ reduce(func2,NULL,1)",
|
|
77060
|
+
" 6",
|
|
77030
77061
|
""
|
|
77031
77062
|
]
|
|
77032
77063
|
},
|
package/i18n/dict.json
CHANGED
package/index.d.ts
CHANGED
|
@@ -363,6 +363,7 @@ export interface DdbRpcOptions {
|
|
|
363
363
|
listener?: DdbMessageListener;
|
|
364
364
|
parse_object?: boolean;
|
|
365
365
|
skip_connection_check?: boolean;
|
|
366
|
+
on_more_messages?: (buffer: Uint8Array) => void;
|
|
366
367
|
}
|
|
367
368
|
export declare class DdbConnectionError extends Error {
|
|
368
369
|
name: string;
|
|
@@ -561,7 +562,7 @@ export declare class DDB {
|
|
|
561
562
|
将这个 flag 设为 true 跳过连接状态检查
|
|
562
563
|
(internal use) When await ddb.connect() establishes a connection for the first time, you cannot call await this.connect() again to ensure the connection status, which will lead to circular dependencies.
|
|
563
564
|
Set this flag to true to skip connection status checks */
|
|
564
|
-
call<TResult extends DdbObj>(func: string, args?: (DdbObj | string | boolean)[], { urgent, node, nodes, func_type, add_node_alias, listener, parse_object, skip_connection_check }?: {
|
|
565
|
+
call<TResult extends DdbObj>(func: string, args?: (DdbObj | string | boolean)[], { urgent, node, nodes, func_type, add_node_alias, listener, parse_object, skip_connection_check, on_more_messages }?: {
|
|
565
566
|
urgent?: boolean;
|
|
566
567
|
node?: string;
|
|
567
568
|
nodes?: string[];
|
|
@@ -570,6 +571,7 @@ export declare class DDB {
|
|
|
570
571
|
listener?: DdbMessageListener;
|
|
571
572
|
parse_object?: boolean;
|
|
572
573
|
skip_connection_check?: boolean;
|
|
574
|
+
on_more_messages?: DdbRpcOptions['on_more_messages'];
|
|
573
575
|
}): Promise<TResult>;
|
|
574
576
|
/** upload variable through websocket (variable command) */
|
|
575
577
|
upload(
|