trace.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// This file provides support for basic in-memory tracing of short events. We 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// keep a static circular buffer where we store the last traced events, so we 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// can review the cache recent behavior should we need it. 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_DISK_CACHE_TRACE_H__ 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_DISK_CACHE_TRACE_H__ 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/basictypes.h" 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/ref_counted.h" 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace disk_cache { 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Create and destroy the tracing buffer. 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid InitTrace(void); 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid DestroyTrace(void); 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Simple class to handle the trace buffer lifetime. Any object interested in 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// tracing should keep a reference to the object returned by GetTraceObject(). 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass TraceObject : public base::RefCounted<TraceObject> { 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott friend class base::RefCounted<TraceObject>; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static TraceObject* GetTraceObject(); 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott private: 303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick TraceObject(); 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ~TraceObject(); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(TraceObject); 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Traces to the internal buffer. 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid Trace(const char* format, ...); 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace disk_cache 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_DISK_CACHE_TRACE_H__ 41