1b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org/* 2b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * 4b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * Use of this source code is governed by a BSD-style license 5b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * that can be found in the LICENSE file in the root of the source 6b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * tree. An additional intellectual property rights grant can be found 7b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * in the file PATENTS. All contributing project authors may 8b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org * be found in the AUTHORS file in the root of the source tree. 9b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org */ 10b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 11b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// This file defines the interface for event tracing in WebRTC. 12b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// 13b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// Event log handlers are set through SetupEventTracer(). User of this API will 14b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// provide two function pointers to handle event tracing calls. 15b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// 16b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// * GetCategoryEnabledPtr 17b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// Event tracing system calls this function to determine if a particular 18b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// event category is enabled. 19b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// 20b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// * AddTraceEventPtr 21b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// Adds a tracing event. It is the user's responsibility to log the data 22b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// provided. 23b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// 24b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// Parameters for the above two functions are described in trace_event.h. 25b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 26b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_EVENT_TRACER_H_ 27b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_EVENT_TRACER_H_ 28b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 29b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#include "webrtc/common_types.h" 30b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 31b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgnamespace webrtc { 32b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 33b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgtypedef const unsigned char* (*GetCategoryEnabledPtr)(const char* name); 3462b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.orgtypedef void (*AddTraceEventPtr)(char phase, 3562b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned char* category_enabled, 3662b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const char* name, 3762b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org unsigned long long id, 3862b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org int num_args, 3962b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const char** arg_names, 4062b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned char* arg_types, 4162b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org const unsigned long long* arg_values, 4262b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org unsigned char flags); 43b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 44b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// User of WebRTC can call this method to setup event tracing. 45b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// 46b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// This method must be called before any WebRTC methods. Functions 47b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// provided should be thread-safe. 48b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgWEBRTC_DLLEXPORT void SetupEventTracer( 49b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org GetCategoryEnabledPtr get_category_enabled_ptr, 50b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org AddTraceEventPtr add_trace_event_ptr); 51b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 52b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// This class defines interface for the event tracing system to call 53b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org// internally. Do not call these methods directly. 54b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.orgclass EventTracer { 55b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org public: 56b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org static const unsigned char* GetCategoryEnabled( 57b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const char* name); 58b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 5962b6fbb187a5f7bb74f723651b78ef0fedffd643hclam@chromium.org static void AddTraceEvent( 60b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org char phase, 61b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const unsigned char* category_enabled, 62b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const char* name, 63b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org unsigned long long id, 64b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org int num_args, 65b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const char** arg_names, 66b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const unsigned char* arg_types, 67b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org const unsigned long long* arg_values, 68b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org unsigned char flags); 69b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org}; 70b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 71b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org} // namespace webrtc 72b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org 73b3395ecff385514a116c32d47b2a57e4f72f225ehclam@chromium.org#endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_EVENT_TRACER_H_ 74