~suaweb/nginx/nginx-recipe

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/chromium/src/base/threading/thread_id_name_manager.h

  • Committer: Frans Elliott
  • Date: 2015-06-12 21:15:13 UTC
  • Revision ID: mastergeek.elliott@gmail.com-20150612211513-un4vguj32deibvb0
Added the actual pagespeed library to the ngx_pagespeed module dir.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style license that can be
 
3
// found in the LICENSE file.
 
4
 
 
5
#ifndef BASE_THREADING_THREAD_ID_NAME_MANAGER_H_
 
6
#define BASE_THREADING_THREAD_ID_NAME_MANAGER_H_
 
7
 
 
8
#include <map>
 
9
#include <string>
 
10
 
 
11
#include "base/base_export.h"
 
12
#include "base/basictypes.h"
 
13
#include "base/synchronization/lock.h"
 
14
#include "base/threading/platform_thread.h"
 
15
 
 
16
template <typename T> struct DefaultSingletonTraits;
 
17
 
 
18
namespace base {
 
19
 
 
20
class BASE_EXPORT ThreadIdNameManager {
 
21
 public:
 
22
  static ThreadIdNameManager* GetInstance();
 
23
 
 
24
  static const char* GetDefaultInternedString();
 
25
 
 
26
  // Register the mapping between a thread |id| and |handle|.
 
27
  void RegisterThread(PlatformThreadHandle::Handle handle, PlatformThreadId id);
 
28
 
 
29
  // Set the name for the given id.
 
30
  void SetName(PlatformThreadId id, const char* name);
 
31
 
 
32
  // Get the name for the given id.
 
33
  const char* GetName(PlatformThreadId id);
 
34
 
 
35
  // Remove the name for the given id.
 
36
  void RemoveName(PlatformThreadHandle::Handle handle, PlatformThreadId id);
 
37
 
 
38
 private:
 
39
  friend struct DefaultSingletonTraits<ThreadIdNameManager>;
 
40
 
 
41
  typedef std::map<PlatformThreadId, PlatformThreadHandle::Handle>
 
42
      ThreadIdToHandleMap;
 
43
  typedef std::map<PlatformThreadHandle::Handle, std::string*>
 
44
      ThreadHandleToInternedNameMap;
 
45
  typedef std::map<std::string, std::string*> NameToInternedNameMap;
 
46
 
 
47
  ThreadIdNameManager();
 
48
  ~ThreadIdNameManager();
 
49
 
 
50
  // lock_ protects the name_to_interned_name_, thread_id_to_handle_ and
 
51
  // thread_handle_to_interned_name_ maps.
 
52
  Lock lock_;
 
53
 
 
54
  NameToInternedNameMap name_to_interned_name_;
 
55
  ThreadIdToHandleMap thread_id_to_handle_;
 
56
  ThreadHandleToInternedNameMap thread_handle_to_interned_name_;
 
57
 
 
58
  // Treat the main process specially as there is no PlatformThreadHandle.
 
59
  std::string* main_process_name_;
 
60
  PlatformThreadId main_process_id_;
 
61
 
 
62
  DISALLOW_COPY_AND_ASSIGN(ThreadIdNameManager);
 
63
};
 
64
 
 
65
}  // namespace base
 
66
 
 
67
#endif  // BASE_THREADING_THREAD_ID_NAME_MANAGER_H_