cpp/mmapbuf/writer/MmapBufferTraceWriter.h (46 lines of code) (raw):

/** * Copyright 2004-present, Facebook, Inc. * * <p>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 * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>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. */ #pragma once #include <unistd.h> #include <string> #include <fbjni/fbjni.h> #include <profilo/Logger.h> #include <profilo/jni/NativeTraceWriterCallbacks.h> #include <profilo/util/common.h> #include <profilo/mmapbuf/writer/BufferFileMapHolder.h> namespace fbjni = facebook::jni; using namespace facebook::profilo::writer; namespace facebook { namespace profilo { namespace mmapbuf { namespace writer { class MmapBufferTraceWriter : public fbjni::HybridClass<MmapBufferTraceWriter> { public: constexpr static auto kJavaDescriptor = "Lcom/facebook/profilo/mmapbuf/writer/MmapBufferTraceWriter;"; static fbjni::local_ref<MmapBufferTraceWriter::jhybriddata> initHybrid( fbjni::alias_ref<jclass>); static void registerNatives(); int64_t nativeInitAndVerify(const std::string& dump_path); void nativeWriteTrace( const std::string& type, bool persistent, const std::string& trace_folder, const std::string& trace_prefix, int32_t trace_flags, fbjni::alias_ref<JNativeTraceWriterCallbacks> callbacks); // Trace re-collection from dump logic // Given a dump path, verifies it and re-collects the data into trace void writeTrace( const std::string& type, bool persistent, const std::string& trace_folder, const std::string& trace_prefix, int32_t trace_flags, std::shared_ptr<TraceCallbacks> callbacks, uint64_t timestamp = monotonicTime()); private: std::unique_ptr<BufferFileMapHolder> bufferMapHolder_; std::string dump_path_; int64_t trace_id_ = 0; }; } // namespace writer } // namespace mmapbuf } // namespace profilo } // namespace facebook