• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 1、SDK接口说明
2
3### 1.1 SDK对开发者开放的接口(位于文件sdk/sdk/ts_sdk_api.h,示例代码位于plugin目录下)
4
5###### **设置对应的表名称** ,用户可选择调用。如不调用该接口,则默认的表名分别为counter_table, gpu_counter_object, slice_table, slice_object_table
6
7`counterObjectTableName: countObject表名`
8
9`counterTableName: counterTableName表名`
10
11`sliceObjectTableName: sliceObjectTableName表名`
12
13`sliceTableName: sliceTableName表名`
14
15```
16int SDK_SetTableName(std::string counterObjectTableName, std::string
17counterTableName, std::string sliceObjectTableName, std::string
18sliceTableName);
19```
20
21###### 添加counter业务ID和名称对应关系表。
22
23`counterId: counter唯一标识。`
24
25`columnName: counter名称。`
26
27`return: 成功返回0,失败返回-1。`
28
29```
30int SDK_AppendCounterObject(int counterId, const char* columnName)
31```
32
33###### ******添加counter****业务表字段**
34
35`counterId: counter唯一标识`
36
37`ts: 时间戳`
38
39`value: counter值`
40
41`return: 成功返回0,失败返回-1`
42
43```
44int SDK_AppendCounter (int counterId, uint64_t ts, int value)
45```
46
47###### **添加slice业务ID和名称对应关系表**
48
49`sliceId: slice唯一标识`
50
51`columnName: slice名称`
52
53`return: 成功返回0,失败返回-1`
54
55```
56int SDK_AppendSliceObject(int sliceId, const char* columnName)
57```
58
59###### ******添加slice****业务表字段**
60
61`sliceId: slice唯一标识`
62
63`ts: 起始时间戳`
64
65`endTs: 结束时间戳`
66
67`value: slice值`
68
69`return: 成功返回0,失败返回-1`
70
71```
72int SDK_AppendSlice(int sliceId, uint64_t ts, uint64_t endTs, int value)
73```
74
75### 1.2 TraceStreamer SDK需用户实现的功能(plugin目录下)
76
77###### 使用TraceStreamerSDK,用户需要实现2个功能:
78
79`1. sdk_plugin_init_table_name:设置用来保存slice数据和counter数据的4张数据表;`
80
81`2. sdk_plugin_data_parser:实现数据解析,并在解析到对应的数据时,使用1.1中的api即可,之后,上层IDE使用目录2中的方法,即可实现TraceStreamer和第三方插件(基于SDK开发)的数据互通。`
82
83### 1.3 TraceStreamer SDK修改配置项
84
85如需修改界面展示名称或其他配置项,可在目录sdk/sdk/sdk_data_parser.h中修改86行后settingConfig之后的配置。
86
87![1678686879388](image/TraceStreamerSDK/1678686879388.png)
88
89### 1.4 不同名称的sdk编译方法
90
91###### 1.4.1 新增proto文件后,如果文件格式和mockdata一致,则只需要修改wasm编译名称。  以下是需要修改的脚本文件:
92
931. `最外层BUILD.gn文件中24行修改为需要生成的wasm名称。`
94
95   ![1678687125370](image/TraceStreamerSDK/1678687125370.png)
962. `sdk/BUILD.gn文件20行名称修改为需要生成的wasm名称。`
97
98   ![1678687179357](image/TraceStreamerSDK/1678687179357.png)
993. `sdk/BUILD.gn文件163行后wasm_lib和name对应的参数修改为需要生成的wasm名称。`
100
101   ![1678687231618](image/TraceStreamerSDK/1678687231618.png)
102
103###### 1.4.2 新增proto文件后,如果proto文件格式和原有的mockdata格式不一致,则需要用户自己通过proto文件导出对应的pb.cc文件,并完成数据解析代码。以下是导出proto文件需要修改的脚本。
104
1051. `sdk/BUILD.gn文件35行后include_dirs中新增对应的gpu_data目录。`
106   ![1678687426565](image/TraceStreamerSDK/1678687426565.png)
1072. `sdk/BUILD.gn文件102行后include_dirs中新增对应的gpu_data目录。`
108   ![1678687469294](image/TraceStreamerSDK/1678687469294.png)
1093. `sdk/plugin/BUILD.gn文件中21行include_dirs中新增对应的gpu_data目录`
110   ![1678687498819](image/TraceStreamerSDK/1678687498819.png)
1114. `sdk/protos/BUILD.gn文件中17行下面增加gpu_data目录`
112
113   ![1678687534793](image/TraceStreamerSDK/1678687534793.png)
1145. `sdk/protos/BUILD.gn文件中49行sources内增加proto文件生成的pb.cc文件名称(该文件sdk/protos/protogen.sh生成,和proto文件只有后缀不同)`
115
116   ![1678687580903](image/TraceStreamerSDK/1678687580903.png)
1176. `sdk/protos/protogen.sh文件中23行后增加gpu_data路径定义,25行proto_array中增加proto文件路径`
118
119   ![1678687619286](image/TraceStreamerSDK/1678687619286.png)
1207. `sdk/protos/protogen.sh文件中35行新增gpu_data路径定义。`
121
122   ![1678687656154](image/TraceStreamerSDK/1678687656154.png)
123
124修改完成后,执行./sdk/protos/protogen.sh,即可生成对应的gpu_plugin_result.pb.cc文件,路径为third_party/protogen/types/plugins/gpu_data。完成1.2的解析功能后,按照1.4.1修改编译的wasm名称,执行./build.sh sdkdemo,即可得到trace_streamer_sdk_gpu_builtin.js和trace_streamer_sdk_gpu_builtin_wasm文件。
125
126# 2、 其他
127
128### 2.1 TraceStreamer WebAssembly接口模式
129
130通过封装相关数据解析接口,并且使用emsdk作为编译工具,本应用可以嵌入浏览器中运行。提供了如下接口:
131
132###### **初始化wasm,在JS中注册回调函数,并返回一段可复用的内存空间,由JS调用。**
133
134`replyFunction: 回调函数`
135
136`reqBufferSize: 返回的内存长度。`
137
138`return: 返回一段内存地址给JS。`
139
140```
141EMSCRIPTEN_KEEPALIVE uint8_t* Initialize(ReplyFunction replyFunction, uint32_t reqBufferSize)
142```
143
144###### 更新起始结束时间,由JS调用。
145
146`len: 起始和结束时间组成的字符串长度`
147
148`return: 成功返回0。`
149
150```
151EMSCRIPTEN_KEEPALIVE int UpdateTraceTime(int len)
152```
153
154###### **设置ts和第三方wasm通信的回调函数,并返回一段内存,由JS调用。**
155
156`sendDataCallBack:与第三方wasm通信的回调函数。`
157
158`reqBufferSize: 返回的内存长度。`
159
160`return: 成功返回0。`
161
162```
163EMSCRIPTEN_KEEPALIVE uint8_t* TraceStreamer_Set_ThirdParty_DataDealer(SendDataCallBack sendDataCallBack, uint32_t  reqBufferSize)
164```
165
166###### **TS的数据解析接口,由JS调用。**
167
168`dataLen: 需要解析的数据源长度。`
169
170`return: 成功返回0,失败返回-1。`
171
172```
173EMSCRIPTEN_KEEPALIVE int TraceStreamerParseDataEx(int dataLen)
174```
175
176###### **TS停止解析数据,由JS调用。**
177
178`return: 成功返回0,失败返回-1。`
179
180```
181EMSCRIPTEN_KEEPALIVE int TraceStreamerParseDataOver()
182```
183
184###### **数据库操作接口,由JS调用。**
185
186`sqlLen: 需要执行的操作类sql语句长度。`
187
188`return: 成功返回0,失败返回-1。`
189
190```
191EMSCRIPTEN_KEEPALIVE int TraceStreamerSqlOperateEx(int sqlLen)
192```
193
194###### **清空wasm内存中的内容,由JS调用。**
195
196`return: 成功返回0,失败返回-1。`
197
198```
199EMSCRIPTEN_KEEPALIVE int TraceStreamerReset()
200```
201
202###### **执行查询类sql语句,由JS调用。**
203
204`sqlLen: 需要执行的查询类sql语句长度。`
205
206`return: 成功返回0,失败返回-1。`
207
208```
209EMSCRIPTEN_KEEPALIVE int TraceStreamerSqlQueryEx(int sqlLen)
210```
211
212###### **取消sql查询,由JS调用。**
213
214`return: 成功返回0。`
215
216```
217EMSCRIPTEN_KEEPALIVE int TraceStreamerCancel()
218```
219
220###### **发送数据给第三方wasm解析,由TS调用。**
221
222`pluginData: 第三方插件的数据源。`
223
224`len: 数据源长度。`
225`componentName: 第三方插件名称。`
226
227`return: 成功返回0。`
228
229```
230int TraceStreamer_Plugin_Out_SendData(const char* pluginData, int len, const std::string componentName)
231```
232
233###### **初始化配置接口,由JS调用。**
234
235`dataLen: 配置字符串的长度。`
236
237`return: 成功返回0。`
238
239```
240EMSCRIPTEN_KEEPALIVE int TraceStreamer_Init_ThirdParty_Config(int dataLen)
241```
242
243WebAssembly通过非异步的通信方式和上层交互数据。
244
245### 2.2 SDK对IDE开放的接口(位于sdk/sdk/wasm_func.h246
247###### **初始化SDK,在JS中注册回调函数,并返回一段可复用的内存空间,由JS调用。**
248
249`queryResultCallbackFunction: 回调函数`
250
251`reqBufferSize: 返回的内存长度。`
252
253`return: 返回一段内存地址给JS。`
254
255```
256EMSCRIPTEN_KEEPALIVE uint8_t* Init(QueryResultCallbackFunction queryResultCallbackFunction, uint32_t reqBufferSize)
257```
258
259###### **初始化一段内存空间,在JS中注册回调函数,用来传递SDK时间同步消息,由JS调用。**
260
261`traceRangeCallbackFunction: 回调函数`
262
263`reqBufferSize: 返回的内存长度。`
264
265`return: 返回一段内存地址给JS。`
266
267```
268EMSCRIPTEN_KEEPALIVE uint8_t* InitTraceRange(TraceRangeCallbackFunction traceRangeCallbackFunction, uint32_treqBufferSize)
269```
270
271###### **通知SDK数据解析完成。**
272
273`return: 返回一段内存地址给JS。`
274
275```
276EMSCRIPTEN_KEEPALIVE int TraceStreamer_In_ParseDataOver()
277```
278
279###### **获取SDK的json配置,由JS调用。**
280
281`return: 成功返回0。`
282
283```
284EMSCRIPTEN_KEEPALIVE int TraceStreamer_In_JsonConfig()
285```
286
287###### **数据解析接口,由JS调用。**
288
289`len: 数据源长度`
290
291`componentId: 第三方wasm插件ID`
292
293`return: 成功返回0。`
294
295```
296EMSCRIPTEN_KEEPALIVE int ParserData(int len, int componentId)
297```
298
299###### **查询类sql接口,由JS调用。**
300
301`sqlLen: 查询类sql长度`
302
303`return: 成功返回0。`
304
305```
306EMSCRIPTEN_KEEPALIVE int TraceStreamerSqlQueryEx(int sqlLen)
307```
308
309###### **初始化一段内存空间给JS,用来传递SDK的插件名称,由JS调用。**
310
311`reqBufferSize: 插件名称占用空间大小`
312`return: 成功返回0。`
313
314```
315EMSCRIPTEN_KEEPALIVE int InitPluginName(uint32_t reqBufferSize)
316```
317
318###### **JS将插件名称写入初始化后的空间内,TS处理后即可获取插件名称,由JS调用。**
319
320`pluginLen: 传给JS的空间大小`
321`return: 成功返回0。`
322
323```
324EMSCRIPTEN_KEEPALIVE int TraceStreamerGetPluginNameEx(int pluginLen)
325```
326