1fb726d48Sopenharmony_ci// Copyright (c) 2021 Huawei Device Co., Ltd.
2fb726d48Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
3fb726d48Sopenharmony_ci// you may not use this file except in compliance with the License.
4fb726d48Sopenharmony_ci// You may obtain a copy of the License at
5fb726d48Sopenharmony_ci//
6fb726d48Sopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
7fb726d48Sopenharmony_ci//
8fb726d48Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software
9fb726d48Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
10fb726d48Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11fb726d48Sopenharmony_ci// See the License for the specific language governing permissions and
12fb726d48Sopenharmony_ci// limitations under the License.
13fb726d48Sopenharmony_ciimport { Args } from './CommonArgs';
14fb726d48Sopenharmony_ciimport { TraficEnum } from './utils/QueryEnum';
15fb726d48Sopenharmony_ciexport const cpuAbilityMonitorDataSql = (args: Args): string => {
16fb726d48Sopenharmony_ci  return `select 
17fb726d48Sopenharmony_ci        (t.total_load) as value,
18fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
19fb726d48Sopenharmony_ci        from cpu_usage t`;
20fb726d48Sopenharmony_ci};
21fb726d48Sopenharmony_ciexport const cpuAbilityUserDataSql = (args: Args): string => {
22fb726d48Sopenharmony_ci  return `select 
23fb726d48Sopenharmony_ci        t.user_load as value,
24fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
25fb726d48Sopenharmony_ci        from cpu_usage t`;
26fb726d48Sopenharmony_ci};
27fb726d48Sopenharmony_ciexport const cpuAbilitySystemDataSql = (args: Args): string => {
28fb726d48Sopenharmony_ci  return `select 
29fb726d48Sopenharmony_ci        t.system_load as value,
30fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
31fb726d48Sopenharmony_ci        from cpu_usage t`;
32fb726d48Sopenharmony_ci};
33fb726d48Sopenharmony_ciexport const abilityMemoryDataSql = (args: Args): string => {
34fb726d48Sopenharmony_ci  return `select 
35fb726d48Sopenharmony_ci        t.value as value,
36fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
37fb726d48Sopenharmony_ci        from sys_mem_measure t 
38fb726d48Sopenharmony_ci        where t.filter_id = ${args.id}`;
39fb726d48Sopenharmony_ci};
40fb726d48Sopenharmony_ciexport const abilityBytesReadDataSql = (args: Args): string => {
41fb726d48Sopenharmony_ci  return `select 
42fb726d48Sopenharmony_ci        t.rd_speed as value,
43fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
44fb726d48Sopenharmony_ci        from diskio t`;
45fb726d48Sopenharmony_ci};
46fb726d48Sopenharmony_ciexport const abilityBytesWrittenDataSql = (args: Args): string => {
47fb726d48Sopenharmony_ci  return `select 
48fb726d48Sopenharmony_ci        t.wr_speed as value,
49fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
50fb726d48Sopenharmony_ci        from diskio t`;
51fb726d48Sopenharmony_ci};
52fb726d48Sopenharmony_ciexport const abilityReadOpsDataSql = (args: Args): string => {
53fb726d48Sopenharmony_ci  return `select 
54fb726d48Sopenharmony_ci        t.rd_count_speed as value,
55fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
56fb726d48Sopenharmony_ci        from diskio t`;
57fb726d48Sopenharmony_ci};
58fb726d48Sopenharmony_ciexport const abilityWrittenOpsDataSql = (args: Args): string => {
59fb726d48Sopenharmony_ci  return `select 
60fb726d48Sopenharmony_ci        t.wr_count_speed as value,
61fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
62fb726d48Sopenharmony_ci        from diskio t`;
63fb726d48Sopenharmony_ci};
64fb726d48Sopenharmony_ciexport const abilityBytesInTraceDataSql = (args: Args): string => {
65fb726d48Sopenharmony_ci  return `select 
66fb726d48Sopenharmony_ci        t.tx_speed as value,
67fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
68fb726d48Sopenharmony_ci        from network t`;
69fb726d48Sopenharmony_ci};
70fb726d48Sopenharmony_ciexport const abilityBytesOutTraceDataSql = (args: Args): string => {
71fb726d48Sopenharmony_ci  return `select 
72fb726d48Sopenharmony_ci        t.rx_speed as value,
73fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
74fb726d48Sopenharmony_ci        from network t`;
75fb726d48Sopenharmony_ci};
76fb726d48Sopenharmony_ciexport const abilityPacketInDataSql = (args: Args): string => {
77fb726d48Sopenharmony_ci  return `select 
78fb726d48Sopenharmony_ci        t.packet_in_sec as value,
79fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
80fb726d48Sopenharmony_ci        from network t`;
81fb726d48Sopenharmony_ci};
82fb726d48Sopenharmony_ciexport const abilityPacketsOutDataSql = (args: Args): string => {
83fb726d48Sopenharmony_ci  return `select 
84fb726d48Sopenharmony_ci        t.packet_out_sec as value,
85fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs
86fb726d48Sopenharmony_ci        from network t`;
87fb726d48Sopenharmony_ci};
88fb726d48Sopenharmony_ciexport const cpuAbilityMonitorDataProtoSql = (args: Args): string => {
89fb726d48Sopenharmony_ci  return `select 
90fb726d48Sopenharmony_ci        (t.total_load) as value,
91fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
92fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
93fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
94fb726d48Sopenharmony_ci        from cpu_usage t 
95fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
96fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
97fb726d48Sopenharmony_ci        group by px`;
98fb726d48Sopenharmony_ci};
99fb726d48Sopenharmony_ciexport const cpuAbilityUserDataProtoSql = (args: Args): string => {
100fb726d48Sopenharmony_ci  return `select 
101fb726d48Sopenharmony_ci        t.user_load as value,
102fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
103fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
104fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
105fb726d48Sopenharmony_ci        from cpu_usage t 
106fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
107fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
108fb726d48Sopenharmony_ci        group by px`;
109fb726d48Sopenharmony_ci};
110fb726d48Sopenharmony_ciexport const cpuAbilitySystemDataProtoSql = (args: Args): string => {
111fb726d48Sopenharmony_ci  return `select 
112fb726d48Sopenharmony_ci        t.system_load as value,
113fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
114fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
115fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
116fb726d48Sopenharmony_ci        from cpu_usage t 
117fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
118fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
119fb726d48Sopenharmony_ci        group by px`;
120fb726d48Sopenharmony_ci};
121fb726d48Sopenharmony_ciexport const abilityMemoryDataProtoSql = (args: Args): string => {
122fb726d48Sopenharmony_ci  return `select 
123fb726d48Sopenharmony_ci        t.value as value,
124fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
125fb726d48Sopenharmony_ci        t.dur as dur,
126fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
127fb726d48Sopenharmony_ci        from sys_mem_measure t 
128fb726d48Sopenharmony_ci        where t.filter_id = ${args.id}
129fb726d48Sopenharmony_ci        and startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
130fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
131fb726d48Sopenharmony_ci        group by px`;
132fb726d48Sopenharmony_ci};
133fb726d48Sopenharmony_ciexport const abilityBytesReadDataProtoSql = (args: Args): string => {
134fb726d48Sopenharmony_ci  return `select 
135fb726d48Sopenharmony_ci        t.rd_speed as value,
136fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
137fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
138fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
139fb726d48Sopenharmony_ci        from diskio t 
140fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
141fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
142fb726d48Sopenharmony_ci        group by px`;
143fb726d48Sopenharmony_ci};
144fb726d48Sopenharmony_ciexport const abilityBytesWrittenDataProtoSql = (args: Args): string => {
145fb726d48Sopenharmony_ci  return `select 
146fb726d48Sopenharmony_ci        t.wr_speed as value,
147fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
148fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
149fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
150fb726d48Sopenharmony_ci        from diskio t 
151fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
152fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
153fb726d48Sopenharmony_ci        group by px`;
154fb726d48Sopenharmony_ci};
155fb726d48Sopenharmony_ciexport const abilityReadOpsDataProtoSql = (args: Args): string => {
156fb726d48Sopenharmony_ci  return `select 
157fb726d48Sopenharmony_ci        t.rd_count_speed as value,
158fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
159fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
160fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
161fb726d48Sopenharmony_ci        from diskio t 
162fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
163fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
164fb726d48Sopenharmony_ci        group by px`;
165fb726d48Sopenharmony_ci};
166fb726d48Sopenharmony_ciexport const abilityWrittenOpsDataProtoSql = (args: Args): string => {
167fb726d48Sopenharmony_ci  return `select 
168fb726d48Sopenharmony_ci        t.wr_count_speed as value,
169fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
170fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
171fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
172fb726d48Sopenharmony_ci        from diskio t 
173fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
174fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
175fb726d48Sopenharmony_ci        group by px`;
176fb726d48Sopenharmony_ci};
177fb726d48Sopenharmony_ciexport const abilityBytesInTraceDataProtoSql = (args: Args): string => {
178fb726d48Sopenharmony_ci  return `select 
179fb726d48Sopenharmony_ci        t.tx_speed as value,
180fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
181fb726d48Sopenharmony_ci        t.dur as dur,
182fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
183fb726d48Sopenharmony_ci        from network t 
184fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
185fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
186fb726d48Sopenharmony_ci        group by px`;
187fb726d48Sopenharmony_ci};
188fb726d48Sopenharmony_ciexport const abilityBytesOutTraceDataProtoSql = (args: Args): string => {
189fb726d48Sopenharmony_ci  return `select 
190fb726d48Sopenharmony_ci        t.rx_speed as value,
191fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
192fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
193fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
194fb726d48Sopenharmony_ci        from network t 
195fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
196fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
197fb726d48Sopenharmony_ci        group by px`;
198fb726d48Sopenharmony_ci};
199fb726d48Sopenharmony_ciexport const abilityPacketInDataProtoSql = (args: Args): string => {
200fb726d48Sopenharmony_ci  return `select 
201fb726d48Sopenharmony_ci        t.packet_in_sec as value,
202fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
203fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
204fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
205fb726d48Sopenharmony_ci        from network t 
206fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
207fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
208fb726d48Sopenharmony_ci        group by px`;
209fb726d48Sopenharmony_ci};
210fb726d48Sopenharmony_ciexport const abilityPacketsOutDataProtoSql = (args: Args): string => {
211fb726d48Sopenharmony_ci  return `select 
212fb726d48Sopenharmony_ci        t.packet_out_sec as value,
213fb726d48Sopenharmony_ci        (t.ts - ${args.recordStartNS} ) as startNs,
214fb726d48Sopenharmony_ci        max(ifnull(t.dur, ${args.recordEndNS} - t.ts)) as dur,
215fb726d48Sopenharmony_ci        ((t.ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) as px
216fb726d48Sopenharmony_ci        from network t 
217fb726d48Sopenharmony_ci        where startNs + (ifnull(dur,0)) >= ${Math.floor(args.startNS)}
218fb726d48Sopenharmony_ci        and startNs <= ${Math.floor(args.endNS)}
219fb726d48Sopenharmony_ci        group by px`;
220fb726d48Sopenharmony_ci};
221fb726d48Sopenharmony_ci
222fb726d48Sopenharmony_cilet totalList: Array<unknown> = [];
223fb726d48Sopenharmony_cilet userList: Array<unknown> = [];
224fb726d48Sopenharmony_cilet systemList: Array<unknown> = [];
225fb726d48Sopenharmony_cilet memoryList: Array<unknown> = [];
226fb726d48Sopenharmony_cilet memoryListMap = new Map<string, Array<unknown>>();
227fb726d48Sopenharmony_cilet bytesReadList: Array<unknown> = [];
228fb726d48Sopenharmony_cilet bytesWriteList: Array<unknown> = [];
229fb726d48Sopenharmony_cilet readOpsList: Array<unknown> = [];
230fb726d48Sopenharmony_cilet writeOpsList: Array<unknown> = [];
231fb726d48Sopenharmony_cilet bytesInList: Array<unknown> = [];
232fb726d48Sopenharmony_cilet bytesOutList: Array<unknown> = [];
233fb726d48Sopenharmony_cilet packetInList: Array<unknown> = [];
234fb726d48Sopenharmony_cilet packetOutList: Array<unknown> = [];
235fb726d48Sopenharmony_ci
236fb726d48Sopenharmony_ciexport function resetAbilityMonitor(): void {
237fb726d48Sopenharmony_ci  totalList = [];
238fb726d48Sopenharmony_ci  userList = [];
239fb726d48Sopenharmony_ci  systemList = [];
240fb726d48Sopenharmony_ci  memoryList = [];
241fb726d48Sopenharmony_ci  memoryListMap.clear();
242fb726d48Sopenharmony_ci  bytesReadList = [];
243fb726d48Sopenharmony_ci  bytesWriteList = [];
244fb726d48Sopenharmony_ci  readOpsList = [];
245fb726d48Sopenharmony_ci  writeOpsList = [];
246fb726d48Sopenharmony_ci  bytesInList = [];
247fb726d48Sopenharmony_ci  bytesOutList = [];
248fb726d48Sopenharmony_ci  packetInList = [];
249fb726d48Sopenharmony_ci  packetOutList = [];
250fb726d48Sopenharmony_ci}
251fb726d48Sopenharmony_ci/**
252fb726d48Sopenharmony_ci * @param data
253fb726d48Sopenharmony_ci * @param proc
254fb726d48Sopenharmony_ci */
255fb726d48Sopenharmony_ci
256fb726d48Sopenharmony_ciexport function cpuAbilityMonitorDataReceiver(data: unknown, proc: Function): void {
257fb726d48Sopenharmony_ci  // @ts-ignore
258fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
259fb726d48Sopenharmony_ci    if (totalList.length === 0) {
260fb726d48Sopenharmony_ci      // @ts-ignore
261fb726d48Sopenharmony_ci      totalList = proc(cpuAbilityMonitorDataSql(data.params));
262fb726d48Sopenharmony_ci    }
263fb726d48Sopenharmony_ci    // @ts-ignore
264fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, totalList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
265fb726d48Sopenharmony_ci  } else {
266fb726d48Sopenharmony_ci    // @ts-ignore
267fb726d48Sopenharmony_ci    let sql = cpuAbilityMonitorDataProtoSql(data.params);
268fb726d48Sopenharmony_ci    let res = proc(sql);
269fb726d48Sopenharmony_ci    // @ts-ignore
270fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
271fb726d48Sopenharmony_ci  }
272fb726d48Sopenharmony_ci}
273fb726d48Sopenharmony_ciexport function cpuAbilityUserDataReceiver(data: unknown, proc: Function): void {
274fb726d48Sopenharmony_ci  // @ts-ignore
275fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
276fb726d48Sopenharmony_ci    if (userList.length === 0) {
277fb726d48Sopenharmony_ci      // @ts-ignore
278fb726d48Sopenharmony_ci      userList = proc(cpuAbilityUserDataSql(data.params));
279fb726d48Sopenharmony_ci    }
280fb726d48Sopenharmony_ci    // @ts-ignore
281fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, userList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
282fb726d48Sopenharmony_ci  } else {
283fb726d48Sopenharmony_ci    // @ts-ignore
284fb726d48Sopenharmony_ci    let sql = cpuAbilityUserDataProtoSql(data.params);
285fb726d48Sopenharmony_ci    let res = proc(sql);
286fb726d48Sopenharmony_ci    // @ts-ignore
287fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
288fb726d48Sopenharmony_ci  }
289fb726d48Sopenharmony_ci}
290fb726d48Sopenharmony_ciexport function cpuAbilitySystemDataReceiver(data: unknown, proc: Function): void {
291fb726d48Sopenharmony_ci  // @ts-ignore
292fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
293fb726d48Sopenharmony_ci    if (systemList.length === 0) {
294fb726d48Sopenharmony_ci      // @ts-ignore
295fb726d48Sopenharmony_ci      systemList = proc(cpuAbilitySystemDataSql(data.params));
296fb726d48Sopenharmony_ci    }
297fb726d48Sopenharmony_ci    // @ts-ignore
298fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, systemList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
299fb726d48Sopenharmony_ci  } else {
300fb726d48Sopenharmony_ci    // @ts-ignore
301fb726d48Sopenharmony_ci    let sql = cpuAbilitySystemDataProtoSql(data.params);
302fb726d48Sopenharmony_ci    let res = proc(sql);
303fb726d48Sopenharmony_ci    // @ts-ignore
304fb726d48Sopenharmony_ci    cpuArrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
305fb726d48Sopenharmony_ci  }
306fb726d48Sopenharmony_ci}
307fb726d48Sopenharmony_ciexport function abilityMemoryUsedDataReceiver(data: unknown, proc: Function): void {
308fb726d48Sopenharmony_ci  // @ts-ignore
309fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
310fb726d48Sopenharmony_ci    // @ts-ignore
311fb726d48Sopenharmony_ci    if (!memoryListMap.has(data.params.id)) {
312fb726d48Sopenharmony_ci      // @ts-ignore
313fb726d48Sopenharmony_ci      memoryList = proc(abilityMemoryDataSql(data.params));
314fb726d48Sopenharmony_ci      // @ts-ignore
315fb726d48Sopenharmony_ci      memoryListMap.set(data.params.id, memoryList);
316fb726d48Sopenharmony_ci    }
317fb726d48Sopenharmony_ci    // @ts-ignore
318fb726d48Sopenharmony_ci    let list = memoryListMap.get(data.params.id) || [];
319fb726d48Sopenharmony_ci    // @ts-ignore
320fb726d48Sopenharmony_ci    arrayBufferHandler(data, list, data.params.trafic !== TraficEnum.SharedArrayBuffer);
321fb726d48Sopenharmony_ci  } else {
322fb726d48Sopenharmony_ci    // @ts-ignore
323fb726d48Sopenharmony_ci    let sql = abilityMemoryDataProtoSql(data.params);
324fb726d48Sopenharmony_ci    let res = proc(sql);
325fb726d48Sopenharmony_ci    // @ts-ignore
326fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
327fb726d48Sopenharmony_ci  }
328fb726d48Sopenharmony_ci}
329fb726d48Sopenharmony_ciexport function abilityBytesReadDataReceiver(data: unknown, proc: Function): void {
330fb726d48Sopenharmony_ci  // @ts-ignore
331fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
332fb726d48Sopenharmony_ci    if (bytesReadList.length === 0) {
333fb726d48Sopenharmony_ci      // @ts-ignore
334fb726d48Sopenharmony_ci      bytesReadList = proc(abilityBytesReadDataSql(data.params));
335fb726d48Sopenharmony_ci    }
336fb726d48Sopenharmony_ci    // @ts-ignore
337fb726d48Sopenharmony_ci    arrayBufferHandler(data, bytesReadList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
338fb726d48Sopenharmony_ci  } else {
339fb726d48Sopenharmony_ci    // @ts-ignore
340fb726d48Sopenharmony_ci    let sql = abilityBytesReadDataProtoSql(data.params);
341fb726d48Sopenharmony_ci    let res = proc(sql);
342fb726d48Sopenharmony_ci    // @ts-ignore
343fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
344fb726d48Sopenharmony_ci  }
345fb726d48Sopenharmony_ci}
346fb726d48Sopenharmony_ciexport function abilityBytesWrittenDataReceiver(data: unknown, proc: Function): void {
347fb726d48Sopenharmony_ci  // @ts-ignore
348fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
349fb726d48Sopenharmony_ci    if (bytesWriteList.length === 0) {
350fb726d48Sopenharmony_ci      // @ts-ignore
351fb726d48Sopenharmony_ci      bytesWriteList = proc(abilityBytesWrittenDataSql(data.params));
352fb726d48Sopenharmony_ci    }
353fb726d48Sopenharmony_ci    // @ts-ignore
354fb726d48Sopenharmony_ci    arrayBufferHandler(data, bytesWriteList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
355fb726d48Sopenharmony_ci  } else {
356fb726d48Sopenharmony_ci    // @ts-ignore
357fb726d48Sopenharmony_ci    let sql = abilityBytesWrittenDataProtoSql(data.params);
358fb726d48Sopenharmony_ci    let res = proc(sql);
359fb726d48Sopenharmony_ci    // @ts-ignore
360fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
361fb726d48Sopenharmony_ci  }
362fb726d48Sopenharmony_ci}
363fb726d48Sopenharmony_ciexport function abilityReadOpsDataReceiver(data: unknown, proc: Function): void {
364fb726d48Sopenharmony_ci  // @ts-ignore
365fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
366fb726d48Sopenharmony_ci    if (readOpsList.length === 0) {
367fb726d48Sopenharmony_ci      // @ts-ignore
368fb726d48Sopenharmony_ci      readOpsList = proc(abilityReadOpsDataSql(data.params));
369fb726d48Sopenharmony_ci    }
370fb726d48Sopenharmony_ci    // @ts-ignore
371fb726d48Sopenharmony_ci    arrayBufferHandler(data, readOpsList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
372fb726d48Sopenharmony_ci  } else {
373fb726d48Sopenharmony_ci    // @ts-ignore
374fb726d48Sopenharmony_ci    let sql = abilityReadOpsDataProtoSql(data.params);
375fb726d48Sopenharmony_ci    let res = proc(sql);
376fb726d48Sopenharmony_ci    // @ts-ignore
377fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
378fb726d48Sopenharmony_ci  }
379fb726d48Sopenharmony_ci}
380fb726d48Sopenharmony_ciexport function abilityWrittenOpsDataReceiver(data: unknown, proc: Function): void {
381fb726d48Sopenharmony_ci  // @ts-ignore
382fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
383fb726d48Sopenharmony_ci    if (writeOpsList.length === 0) {
384fb726d48Sopenharmony_ci      // @ts-ignore
385fb726d48Sopenharmony_ci      writeOpsList = proc(abilityWrittenOpsDataSql(data.params));
386fb726d48Sopenharmony_ci    }
387fb726d48Sopenharmony_ci    // @ts-ignore
388fb726d48Sopenharmony_ci    arrayBufferHandler(data, writeOpsList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
389fb726d48Sopenharmony_ci  } else {
390fb726d48Sopenharmony_ci    // @ts-ignore
391fb726d48Sopenharmony_ci    let sql = abilityWrittenOpsDataProtoSql(data.params);
392fb726d48Sopenharmony_ci    let res = proc(sql);
393fb726d48Sopenharmony_ci    // @ts-ignore
394fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
395fb726d48Sopenharmony_ci  }
396fb726d48Sopenharmony_ci}
397fb726d48Sopenharmony_ciexport function abilityBytesInTraceDataReceiver(data: unknown, proc: Function): void {
398fb726d48Sopenharmony_ci  // @ts-ignore
399fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
400fb726d48Sopenharmony_ci    if (bytesInList.length === 0) {
401fb726d48Sopenharmony_ci      // @ts-ignore
402fb726d48Sopenharmony_ci      bytesInList = proc(abilityBytesInTraceDataSql(data.params));
403fb726d48Sopenharmony_ci    }
404fb726d48Sopenharmony_ci    // @ts-ignore
405fb726d48Sopenharmony_ci    arrayBufferHandler(data, bytesInList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
406fb726d48Sopenharmony_ci  } else {
407fb726d48Sopenharmony_ci    // @ts-ignore
408fb726d48Sopenharmony_ci    let sql = abilityBytesInTraceDataProtoSql(data.params);
409fb726d48Sopenharmony_ci    let res = proc(sql);
410fb726d48Sopenharmony_ci    // @ts-ignore
411fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
412fb726d48Sopenharmony_ci  }
413fb726d48Sopenharmony_ci}
414fb726d48Sopenharmony_ciexport function abilityBytesOutTraceDataReceiver(data: unknown, proc: Function): void {
415fb726d48Sopenharmony_ci  // @ts-ignore
416fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
417fb726d48Sopenharmony_ci    if (bytesOutList.length === 0) {
418fb726d48Sopenharmony_ci      // @ts-ignore
419fb726d48Sopenharmony_ci      bytesOutList = proc(abilityBytesOutTraceDataSql(data.params));
420fb726d48Sopenharmony_ci    }
421fb726d48Sopenharmony_ci    // @ts-ignore
422fb726d48Sopenharmony_ci    arrayBufferHandler(data, bytesOutList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
423fb726d48Sopenharmony_ci  } else {
424fb726d48Sopenharmony_ci    // @ts-ignore
425fb726d48Sopenharmony_ci    let sql = abilityBytesOutTraceDataProtoSql(data.params);
426fb726d48Sopenharmony_ci    let res = proc(sql);
427fb726d48Sopenharmony_ci    // @ts-ignore
428fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
429fb726d48Sopenharmony_ci  }
430fb726d48Sopenharmony_ci}
431fb726d48Sopenharmony_ciexport function abilityPacketInTraceDataReceiver(data: unknown, proc: Function): void {
432fb726d48Sopenharmony_ci  // @ts-ignore
433fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
434fb726d48Sopenharmony_ci    if (packetInList.length === 0) {
435fb726d48Sopenharmony_ci      // @ts-ignore
436fb726d48Sopenharmony_ci      packetInList = proc(abilityPacketInDataSql(data.params));
437fb726d48Sopenharmony_ci    }
438fb726d48Sopenharmony_ci    // @ts-ignore
439fb726d48Sopenharmony_ci    arrayBufferHandler(data, packetInList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
440fb726d48Sopenharmony_ci  } else {
441fb726d48Sopenharmony_ci    // @ts-ignore
442fb726d48Sopenharmony_ci    let sql = abilityPacketInDataProtoSql(data.params);
443fb726d48Sopenharmony_ci    let res = proc(sql);
444fb726d48Sopenharmony_ci    // @ts-ignore
445fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
446fb726d48Sopenharmony_ci  }
447fb726d48Sopenharmony_ci}
448fb726d48Sopenharmony_ciexport function abilityPacketsOutTraceDataReceiver(data: unknown, proc: Function): void {
449fb726d48Sopenharmony_ci  // @ts-ignore
450fb726d48Sopenharmony_ci  if (data.params.trafic === TraficEnum.Memory) {
451fb726d48Sopenharmony_ci    if (packetOutList.length === 0) {
452fb726d48Sopenharmony_ci      // @ts-ignore
453fb726d48Sopenharmony_ci      packetOutList = proc(abilityPacketsOutDataSql(data.params));
454fb726d48Sopenharmony_ci    }
455fb726d48Sopenharmony_ci    // @ts-ignore
456fb726d48Sopenharmony_ci    arrayBufferHandler(data, packetOutList, data.params.trafic !== TraficEnum.SharedArrayBuffer);
457fb726d48Sopenharmony_ci  } else {
458fb726d48Sopenharmony_ci    // @ts-ignore
459fb726d48Sopenharmony_ci    let sql = abilityPacketsOutDataProtoSql(data.params);
460fb726d48Sopenharmony_ci    let res = proc(sql);
461fb726d48Sopenharmony_ci    // @ts-ignore
462fb726d48Sopenharmony_ci    arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer);
463fb726d48Sopenharmony_ci  }
464fb726d48Sopenharmony_ci}
465fb726d48Sopenharmony_ci
466fb726d48Sopenharmony_cifunction arrayBufferHandler(data: unknown, res: unknown[], transfer: boolean): void {
467fb726d48Sopenharmony_ci  // @ts-ignore
468fb726d48Sopenharmony_ci  let startNS = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNS);
469fb726d48Sopenharmony_ci  // @ts-ignore
470fb726d48Sopenharmony_ci  let value = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.value);
471fb726d48Sopenharmony_ci  // @ts-ignore
472fb726d48Sopenharmony_ci  let dur = new Int32Array(transfer ? res.length : data.params.sharedArrayBuffers.dur);
473fb726d48Sopenharmony_ci  res.forEach((it, i) => {
474fb726d48Sopenharmony_ci    // @ts-ignore
475fb726d48Sopenharmony_ci    data.params.trafic === TraficEnum.ProtoBuffer && (it = it.abilityData);
476fb726d48Sopenharmony_ci    // @ts-ignore
477fb726d48Sopenharmony_ci    startNS[i] = it.startNs;
478fb726d48Sopenharmony_ci    // @ts-ignore
479fb726d48Sopenharmony_ci    value[i] = it.value;
480fb726d48Sopenharmony_ci    // @ts-ignore
481fb726d48Sopenharmony_ci    dur[i] = it.dur;
482fb726d48Sopenharmony_ci  });
483fb726d48Sopenharmony_ci  (self as unknown as Worker).postMessage(
484fb726d48Sopenharmony_ci    {
485fb726d48Sopenharmony_ci      // @ts-ignore
486fb726d48Sopenharmony_ci      id: data.id,
487fb726d48Sopenharmony_ci      // @ts-ignore
488fb726d48Sopenharmony_ci      action: data.action,
489fb726d48Sopenharmony_ci      results: transfer
490fb726d48Sopenharmony_ci        ? {
491fb726d48Sopenharmony_ci            startNS: startNS.buffer,
492fb726d48Sopenharmony_ci            value: value.buffer,
493fb726d48Sopenharmony_ci            dur: dur.buffer,
494fb726d48Sopenharmony_ci          }
495fb726d48Sopenharmony_ci        : {},
496fb726d48Sopenharmony_ci      len: res.length,
497fb726d48Sopenharmony_ci      transfer: transfer,
498fb726d48Sopenharmony_ci    },
499fb726d48Sopenharmony_ci    transfer ? [startNS.buffer, value.buffer, dur.buffer] : []
500fb726d48Sopenharmony_ci  );
501fb726d48Sopenharmony_ci}
502fb726d48Sopenharmony_ci
503fb726d48Sopenharmony_cifunction cpuArrayBufferHandler(data: unknown, res: unknown[], transfer: boolean): void {
504fb726d48Sopenharmony_ci  // @ts-ignore
505fb726d48Sopenharmony_ci  let startNS = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.startNS);
506fb726d48Sopenharmony_ci  // @ts-ignore
507fb726d48Sopenharmony_ci  let value = new Float64Array(transfer ? res.length : data.params.sharedArrayBuffers.value);
508fb726d48Sopenharmony_ci  // @ts-ignore
509fb726d48Sopenharmony_ci  let dur = new Int32Array(transfer ? res.length : data.params.sharedArrayBuffers.dur);
510fb726d48Sopenharmony_ci  res.forEach((it, i) => {
511fb726d48Sopenharmony_ci    // @ts-ignore
512fb726d48Sopenharmony_ci    data.params.trafic === TraficEnum.ProtoBuffer && (it = it.cpuAbilityData);
513fb726d48Sopenharmony_ci    // @ts-ignore
514fb726d48Sopenharmony_ci    startNS[i] = it.startNs;
515fb726d48Sopenharmony_ci    // @ts-ignore
516fb726d48Sopenharmony_ci    value[i] = it.value;
517fb726d48Sopenharmony_ci    // @ts-ignore
518fb726d48Sopenharmony_ci    dur[i] = it.dur;
519fb726d48Sopenharmony_ci  });
520fb726d48Sopenharmony_ci  (self as unknown as Worker).postMessage(
521fb726d48Sopenharmony_ci    {
522fb726d48Sopenharmony_ci      // @ts-ignore
523fb726d48Sopenharmony_ci      id: data.id,
524fb726d48Sopenharmony_ci      // @ts-ignore
525fb726d48Sopenharmony_ci      action: data.action,
526fb726d48Sopenharmony_ci      results: transfer
527fb726d48Sopenharmony_ci        ? {
528fb726d48Sopenharmony_ci            startNS: startNS.buffer,
529fb726d48Sopenharmony_ci            value: value.buffer,
530fb726d48Sopenharmony_ci            dur: dur.buffer,
531fb726d48Sopenharmony_ci          }
532fb726d48Sopenharmony_ci        : {},
533fb726d48Sopenharmony_ci      len: res.length,
534fb726d48Sopenharmony_ci      transfer: transfer,
535fb726d48Sopenharmony_ci    },
536fb726d48Sopenharmony_ci    transfer ? [startNS.buffer, value.buffer, dur.buffer] : []
537fb726d48Sopenharmony_ci  );
538fb726d48Sopenharmony_ci}
539