diff options
Diffstat (limited to 'src/trace_processor/rpc/wasm_bridge.cc')
-rw-r--r-- | src/trace_processor/rpc/wasm_bridge.cc | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/src/trace_processor/rpc/wasm_bridge.cc b/src/trace_processor/rpc/wasm_bridge.cc deleted file mode 100644 index 82ae660e1..000000000 --- a/src/trace_processor/rpc/wasm_bridge.cc +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * 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. - */ - -#include <emscripten/emscripten.h> -#include <map> -#include <string> - -#include "perfetto/base/logging.h" -#include "perfetto/trace_processor/trace_processor.h" -#include "src/trace_processor/rpc/rpc.h" - -namespace perfetto { -namespace trace_processor { - -using RequestID = uint32_t; - -// Reply(): replies to a RPC method invocation. -// Called asynchronously (i.e. in a separate task) by the C++ code inside the -// trace processor to return data for a RPC method call. -// The function is generic and thankfully we need just one for all methods -// because the output is always a protobuf buffer. -using ReplyFunction = void (*)(const char* /*proto_reply_data*/, - uint32_t /*len*/); - -namespace { -Rpc* g_trace_processor_rpc; -ReplyFunction g_reply; - -// The buffer used to pass the request arguments. The caller (JS) decides how -// big this buffer should be in the Initialize() call. -uint8_t* g_req_buf; - -} // namespace - -// +---------------------------------------------------------------------------+ -// | Exported functions called by the JS/TS running in the worker. | -// +---------------------------------------------------------------------------+ -extern "C" { - -// Returns the address of the allocated request buffer. -uint8_t* EMSCRIPTEN_KEEPALIVE Initialize(ReplyFunction, uint32_t); -uint8_t* Initialize(ReplyFunction reply_function, uint32_t req_buffer_size) { - g_trace_processor_rpc = new Rpc(); - g_reply = reply_function; - g_req_buf = new uint8_t[req_buffer_size]; - return g_req_buf; -} - -// Ingests trace data. -void EMSCRIPTEN_KEEPALIVE trace_processor_parse(uint32_t); -void trace_processor_parse(size_t size) { - // TODO(primiano): Parse() makes a copy of the data, which is unfortunate. - // Ideally there should be a way to take the Blob coming from JS and move it. - // See https://github.com/WebAssembly/design/issues/1162. - auto status = g_trace_processor_rpc->Parse(g_req_buf, size); - if (status.ok()) { - g_reply("", 0); - } else { - PERFETTO_FATAL("Fatal failure while parsing the trace: %s", - status.c_message()); - } -} - -// We keep the same signature as other methods even though we don't take input -// arguments for simplicity. -void EMSCRIPTEN_KEEPALIVE trace_processor_notify_eof(uint32_t); -void trace_processor_notify_eof(uint32_t /* size, not used. */) { - g_trace_processor_rpc->NotifyEndOfFile(); - g_reply("", 0); -} - -void EMSCRIPTEN_KEEPALIVE trace_processor_raw_query(uint32_t); -void trace_processor_raw_query(uint32_t size) { - std::vector<uint8_t> res = g_trace_processor_rpc->RawQuery(g_req_buf, size); - g_reply(reinterpret_cast<const char*>(res.data()), - static_cast<uint32_t>(res.size())); -} - -} // extern "C" - -} // namespace trace_processor -} // namespace perfetto |