Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: chrome/browser/net/websocket_experiment/websocket_experiment_runner.h

Issue 404022: Hold histograms in static variables instead of allocating heap. (Closed)
Patch Set: const kTimeBucketCount Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/net/websocket_experiment/websocket_experiment_runner.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H_ 5 #ifndef CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H_
6 #define CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H_ 6 #define CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/histogram.h" 9 #include "base/histogram.h"
10 #include "base/linked_ptr.h" 10 #include "base/linked_ptr.h"
(...skipping 19 matching lines...) Expand all
30 WebSocketExperimentTask::Config wss_config; 30 WebSocketExperimentTask::Config wss_config;
31 WebSocketExperimentTask::Config ws_nondefault_config; 31 WebSocketExperimentTask::Config ws_nondefault_config;
32 }; 32 };
33 static void Start(); 33 static void Start();
34 static void Stop(); 34 static void Stop();
35 35
36 void Run(); 36 void Run();
37 void Cancel(); 37 void Cancel();
38 38
39 private: 39 private:
40 typedef std::map<std::string, linked_ptr<Histogram> > HistogramMap;
41
42 enum State { 40 enum State {
43 STATE_NONE, 41 STATE_NONE,
44 STATE_IDLE, 42 STATE_IDLE,
45 STATE_RUN_WS, 43 STATE_RUN_WS,
46 STATE_RUN_WSS, 44 STATE_RUN_WSS,
47 STATE_RUN_WS_NODEFAULT_PORT, 45 STATE_RUN_WS_NODEFAULT_PORT,
48 }; 46 };
49 WebSocketExperimentRunner(); 47 WebSocketExperimentRunner();
50 virtual ~WebSocketExperimentRunner(); 48 virtual ~WebSocketExperimentRunner();
51 friend class base::RefCountedThreadSafe<WebSocketExperimentRunner>; 49 friend class base::RefCountedThreadSafe<WebSocketExperimentRunner>;
52 50
53 void InitConfig(); 51 void InitConfig();
54 void InitHistograms();
55 void DoLoop(); 52 void DoLoop();
56 void OnTaskCompleted(int result); 53 void OnTaskCompleted(int result);
57 void UpdateTaskResultHistogram(const WebSocketExperimentTask* task); 54 void UpdateTaskResultHistogram(const WebSocketExperimentTask* task);
58 55
59 template<class HistogramType, typename HistogramSample>
60 void InitHistogram(const char* type_name,
61 HistogramSample min, HistogramSample max,
62 size_t bucket_count);
63
64 Histogram* GetHistogram(const std::string& type_name) const;
65
66 Config config_; 56 Config config_;
67 State next_state_; 57 State next_state_;
68 State task_state_; 58 State task_state_;
69 scoped_ptr<WebSocketExperimentTask> task_; 59 scoped_ptr<WebSocketExperimentTask> task_;
70 net::CompletionCallbackImpl<WebSocketExperimentRunner> task_callback_; 60 net::CompletionCallbackImpl<WebSocketExperimentRunner> task_callback_;
71 61
72 HistogramMap ws_histograms_;
73 HistogramMap wss_histograms_;
74 HistogramMap ws_nondefault_histograms_;
75
76 DISALLOW_COPY_AND_ASSIGN(WebSocketExperimentRunner); 62 DISALLOW_COPY_AND_ASSIGN(WebSocketExperimentRunner);
77 }; 63 };
78 64
79 } // namespace chrome_browser_net_websocket_experiment 65 } // namespace chrome_browser_net_websocket_experiment
80 66
81 #endif // CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H _ 67 #endif // CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_RUNNER_H _
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/net/websocket_experiment/websocket_experiment_runner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698