// Copyright (c) 2021 Huawei Device Co., Ltd. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import { QueryEnum, TraficEnum } from './utils/QueryEnum'; import { getThreadPool } from '../SqlLite'; import { TraceRow } from '../../component/trace/base/TraceRow'; import { Utils } from '../../component/trace/base/Utils'; export function sliceSender(traceId?: string): Promise { let trafic: number = TraficEnum.Memory; return new Promise((resolve): void => { getThreadPool(traceId).submitProto( QueryEnum.SliceData, { trafic: trafic, startNS: TraceRow.range?.startNS || 0, endNS: TraceRow.range?.endNS || 0, recordStartNS: Utils.getInstance().getRecordStartNS(traceId), recordEndNS: Utils.getInstance().getRecordEndNS(traceId), }, (res: unknown): void => { resolve(res); } ); }); } export function sliceSPTSender(leftNs: number, rightNs: number, cpus: Array, func: string, traceId?: string): Promise { return new Promise((resolve): void => { getThreadPool(traceId).submitProto( QueryEnum.SliceSPTData, { leftNs: leftNs, rightNs: rightNs, cpus: cpus, func: func, trafic: TraficEnum.Memory, }, (res: unknown, len: number, transfer: boolean): void => { //@ts-ignore resolve(res); } ); }); } export function sliceChildBoxSender(func: string, leftNs: number, rightNs: number, threadId?: number | number[], processId?: number | number[], cpus?: Array, state?: string, traceId?: string): Promise { return new Promise((resolve): void => { getThreadPool(traceId).submitProto( QueryEnum.SliceChildBoxData, { leftNs: leftNs, rightNs: rightNs, cpus: cpus ? cpus : [], processId: processId ? processId : [], threadId: threadId ? threadId : [], state: state ? state : '', func: func ? func : '', trafic: TraficEnum.Memory, }, (res: unknown, len: number, transfer: boolean): void => { //@ts-ignore resolve(res); } ); }); } export function threadNearData(func: string, pid: number, tid: number, startTime: number, traceId?: string): Promise { return new Promise((resolve): void => { getThreadPool(traceId).submitProto( QueryEnum.ThreadNearData, { pid: pid, tid: tid, startTime: startTime, func: func, trafic: TraficEnum.Memory, }, (res: unknown, len: number, transfer: boolean): void => { //@ts-ignore resolve(res); } ); }); }