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<unknown> {
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<number>,
func: string, traceId?: string): Promise<unknown[]> {
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 => {
resolve(res);
}
);
});
}
export function sliceChildBoxSender(func: string, leftNs: number, rightNs: number, threadId?: number | number[], processId?: number | number[],
cpus?: Array<number>, state?: string, traceId?: string): Promise<unknown[]> {
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 => {
resolve(res);
}
);
});
}
export function threadNearData(func: string, pid: number, tid: number, startTime: number, traceId?: string): Promise<unknown[]> {
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 => {
resolve(res);
}
);
});
}