* Copyright (C) 2026 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.
*/
const LONG_TRACE_HEADER_SIZE_BYTES = 1024;
const LONG_TRACE_SEGMENT_LENGTH_BYTES = 4;
const LONG_TRACE_HEADER_MAGIC = BigInt('0x464F5250534F484F');
const LONG_TRACE_PROTO_VERSION = '1.02';
const LONG_TRACE_PROTO_TYPE_PROFILER_PLUGIN_DATA = 'common_types.ProfilerPluginData';
const LONG_TRACE_PROTO_TYPE_BATCH_NATIVE_HOOK_DATA = 'BatchNativeHookData';
const LONG_TRACE_PROTO_TYPE_NATIVE_HOOK_DATA = 'NativeHookData';
const LONG_TRACE_PREFETCH_LIMIT = 3;
const LONG_TRACE_PATCH_CHUNK_SIZE_BYTES = 4 * 1024 * 1024;
const LONG_TRACE_SESSION_BIND_TIMEOUT_MS = 5 * 1000;
const LONG_TRACE_SESSION_IDLE_TIMEOUT_MS = 60 * 1000;
const LONG_TRACE_TEXT_ENCODING_UTF8 = 'utf8';
const LONG_TRACE_PLUGIN_NAME_NATIVE_HOOK = 'nativehook';
const LONG_TRACE_PLUGIN_STATUS_OK = 0;
const LONG_TRACE_MESSAGE_TYPE_HELLO = 'HELLO';
const LONG_TRACE_MESSAGE_TYPE_RESULT = 'RESULT';
const LONG_TRACE_MESSAGE_TYPE_TRACE_META = 'TRACE_META';
const LONG_TRACE_MESSAGE_TYPE_TRACE_END = 'TRACE_END';
const LONG_TRACE_MESSAGE_TYPE_PATCH_PAYLOAD_END = 'PATCH_PAYLOAD_END';
const LONG_TRACE_CHANNEL_UPLOAD = 'UPLOAD';
const LONG_TRACE_CHANNEL_DOWNLOAD = 'DOWNLOAD';
const LONG_TRACE_RESULT_STATUS_NO_PATCH = 'NO_PATCH';
const LONG_TRACE_RESULT_STATUS_PATCH_READY = 'PATCH_READY';
const LONG_TRACE_RESULT_STATUS_ERROR = 'ERROR';
const LONG_TRACE_RESULT_REASON_SESSION_BOUND = 'SESSION_BOUND';
const LONG_TRACE_RESULT_REASON_NO_NATIVEHOOK = 'NO_NATIVEHOOK';
const LONG_TRACE_RESULT_REASON_MIN_N = 'MIN_N';
const LONG_TRACE_RESULT_REASON_PATCH_BUFFER_EMPTY = 'PATCH_BUFFER_EMPTY';
const LONG_TRACE_RESULT_REASON_INFLIGHT_EXISTS = 'INFLIGHT_EXISTS';
const LONG_TRACE_RESULT_REASON_PREFETCH_LIMIT = 'PREFETCH_LIMIT';
const LONG_TRACE_RESULT_REASON_SEQUENCE_MISMATCH = 'SEQUENCE_MISMATCH';
const LONG_TRACE_RESULT_REASON_TRACE_END_WITHOUT_META = 'TRACE_END_WITHOUT_META';
const LONG_TRACE_RESULT_REASON_UPLOAD_CHANNEL_CLOSED = 'UPLOAD_CHANNEL_CLOSED';
module.exports = {
LONG_TRACE_CHANNEL_DOWNLOAD,
LONG_TRACE_CHANNEL_UPLOAD,
LONG_TRACE_HEADER_MAGIC,
LONG_TRACE_HEADER_SIZE_BYTES,
LONG_TRACE_MESSAGE_TYPE_HELLO,
LONG_TRACE_MESSAGE_TYPE_PATCH_PAYLOAD_END,
LONG_TRACE_MESSAGE_TYPE_RESULT,
LONG_TRACE_MESSAGE_TYPE_TRACE_END,
LONG_TRACE_MESSAGE_TYPE_TRACE_META,
LONG_TRACE_PATCH_CHUNK_SIZE_BYTES,
LONG_TRACE_PREFETCH_LIMIT,
LONG_TRACE_PLUGIN_NAME_NATIVE_HOOK,
LONG_TRACE_PLUGIN_STATUS_OK,
LONG_TRACE_PROTO_VERSION,
LONG_TRACE_PROTO_TYPE_BATCH_NATIVE_HOOK_DATA,
LONG_TRACE_PROTO_TYPE_NATIVE_HOOK_DATA,
LONG_TRACE_PROTO_TYPE_PROFILER_PLUGIN_DATA,
LONG_TRACE_RESULT_REASON_INFLIGHT_EXISTS,
LONG_TRACE_RESULT_REASON_MIN_N,
LONG_TRACE_RESULT_REASON_NO_NATIVEHOOK,
LONG_TRACE_RESULT_REASON_PATCH_BUFFER_EMPTY,
LONG_TRACE_RESULT_REASON_PREFETCH_LIMIT,
LONG_TRACE_RESULT_REASON_SEQUENCE_MISMATCH,
LONG_TRACE_RESULT_REASON_SESSION_BOUND,
LONG_TRACE_RESULT_REASON_TRACE_END_WITHOUT_META,
LONG_TRACE_RESULT_REASON_UPLOAD_CHANNEL_CLOSED,
LONG_TRACE_RESULT_STATUS_ERROR,
LONG_TRACE_RESULT_STATUS_NO_PATCH,
LONG_TRACE_RESULT_STATUS_PATCH_READY,
LONG_TRACE_SEGMENT_LENGTH_BYTES,
LONG_TRACE_SESSION_BIND_TIMEOUT_MS,
LONG_TRACE_SESSION_IDLE_TIMEOUT_MS,
LONG_TRACE_TEXT_ENCODING_UTF8,
};