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

Side by Side Diff: netlog_viewer/socket_pool_wrapper.js

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 months 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 | « netlog_viewer/select.png ('k') | netlog_viewer/sockets_view.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 var SocketPoolWrapper = (function() {
6 'use strict';
7
8 /**
9 * SocketPoolWrapper is a wrapper around socket pools entries. It's
10 * used by the log and sockets view to print tables containing both
11 * a synopsis of the state of all pools, and listing the groups within
12 * individual pools.
13 *
14 * The constructor takes a socket pool and its parent, and generates a
15 * unique name from the two, which is stored as |fullName|. |parent|
16 * must itself be a SocketPoolWrapper.
17 *
18 * @constructor
19 */
20 function SocketPoolWrapper(socketPool, parent) {
21 this.origPool = socketPool;
22 this.fullName = socketPool.name;
23 if (this.fullName != socketPool.type)
24 this.fullName += ' (' + socketPool.type + ')';
25 if (parent)
26 this.fullName = parent.fullName + '->' + this.fullName;
27 }
28
29 /**
30 * Returns an array of SocketPoolWrappers created from each of the socket
31 * pools in |socketPoolInfo|. Nested socket pools appear immediately after
32 * their parent, and groups of nodes from trees with root nodes with the same
33 * id are placed adjacent to each other.
34 */
35 SocketPoolWrapper.createArrayFrom = function(socketPoolInfo) {
36 // Create SocketPoolWrappers for each socket pool and separate socket pools
37 // them into different arrays based on root node name.
38 var socketPoolGroups = [];
39 var socketPoolNameLists = {};
40 for (var i = 0; i < socketPoolInfo.length; ++i) {
41 var name = socketPoolInfo[i].name;
42 if (!socketPoolNameLists[name]) {
43 socketPoolNameLists[name] = [];
44 socketPoolGroups.push(socketPoolNameLists[name]);
45 }
46 addSocketPoolsToList(socketPoolNameLists[name], socketPoolInfo[i], null);
47 }
48
49 // Merge the arrays.
50 var socketPoolList = [];
51 for (var i = 0; i < socketPoolGroups.length; ++i) {
52 socketPoolList = socketPoolList.concat(socketPoolGroups[i]);
53 }
54 return socketPoolList;
55 };
56
57 /**
58 * Recursively creates SocketPoolWrappers from |origPool| and all its
59 * children and adds them all to |socketPoolList|. |parent| is the
60 * SocketPoolWrapper for the parent of |origPool|, or null, if it's
61 * a top level socket pool.
62 */
63 function addSocketPoolsToList(socketPoolList, origPool, parent) {
64 var socketPool = new SocketPoolWrapper(origPool, parent);
65 socketPoolList.push(socketPool);
66 if (origPool.nested_pools) {
67 for (var i = 0; i < origPool.nested_pools.length; ++i) {
68 addSocketPoolsToList(socketPoolList,
69 origPool.nested_pools[i],
70 socketPool);
71 }
72 }
73 }
74
75 /**
76 * Returns a table printer containing information on each
77 * SocketPoolWrapper in |socketPools|.
78 */
79 SocketPoolWrapper.createTablePrinter = function(socketPools) {
80 var tablePrinter = new TablePrinter();
81 tablePrinter.addHeaderCell('Name');
82 tablePrinter.addHeaderCell('Handed Out');
83 tablePrinter.addHeaderCell('Idle');
84 tablePrinter.addHeaderCell('Connecting');
85 tablePrinter.addHeaderCell('Max');
86 tablePrinter.addHeaderCell('Max Per Group');
87 tablePrinter.addHeaderCell('Generation');
88
89 for (var i = 0; i < socketPools.length; i++) {
90 var origPool = socketPools[i].origPool;
91
92 tablePrinter.addRow();
93 tablePrinter.addCell(socketPools[i].fullName);
94
95 tablePrinter.addCell(origPool.handed_out_socket_count);
96 var idleCell = tablePrinter.addCell(origPool.idle_socket_count);
97 var connectingCell =
98 tablePrinter.addCell(origPool.connecting_socket_count);
99
100 if (origPool.groups) {
101 var idleSources = [];
102 var connectingSources = [];
103 for (var groupName in origPool.groups) {
104 var group = origPool.groups[groupName];
105 idleSources = idleSources.concat(group.idle_sockets);
106 connectingSources = connectingSources.concat(group.connect_jobs);
107 }
108 idleCell.link = sourceListLink(idleSources);
109 connectingCell.link = sourceListLink(connectingSources);
110 }
111
112 tablePrinter.addCell(origPool.max_socket_count);
113 tablePrinter.addCell(origPool.max_sockets_per_group);
114 tablePrinter.addCell(origPool.pool_generation_number);
115 }
116 return tablePrinter;
117 };
118
119 SocketPoolWrapper.prototype = {
120 /**
121 * Returns a table printer containing information on all a
122 * socket pool's groups.
123 */
124 createGroupTablePrinter: function() {
125 var tablePrinter = new TablePrinter();
126 tablePrinter.setTitle(this.fullName);
127
128 tablePrinter.addHeaderCell('Name');
129 tablePrinter.addHeaderCell('Pending');
130 tablePrinter.addHeaderCell('Top Priority');
131 tablePrinter.addHeaderCell('Active');
132 tablePrinter.addHeaderCell('Idle');
133 tablePrinter.addHeaderCell('Connect Jobs');
134 tablePrinter.addHeaderCell('Backup Timer');
135 tablePrinter.addHeaderCell('Stalled');
136
137 for (var groupName in this.origPool.groups) {
138 var group = this.origPool.groups[groupName];
139
140 tablePrinter.addRow();
141 tablePrinter.addCell(groupName);
142 tablePrinter.addCell(group.pending_request_count);
143 if (group.top_pending_priority != undefined)
144 tablePrinter.addCell(group.top_pending_priority);
145 else
146 tablePrinter.addCell('-');
147
148 tablePrinter.addCell(group.active_socket_count);
149 var idleCell = tablePrinter.addCell(group.idle_sockets.length);
150 var connectingCell = tablePrinter.addCell(group.connect_jobs.length);
151
152 idleCell.link = sourceListLink(group.idle_sockets);
153 connectingCell.link = sourceListLink(group.connect_jobs);
154
155 tablePrinter.addCell(
156 group.backup_job_timer_is_running ? 'started' : 'stopped');
157 tablePrinter.addCell(group.is_stalled);
158 }
159 return tablePrinter;
160 }
161 };
162
163 /**
164 * Takes in a list of source IDs and returns a link that will select the
165 * specified sources.
166 */
167 function sourceListLink(sources) {
168 if (!sources.length)
169 return null;
170 return '#events&q=id:' + sources.join(',');
171 }
172
173 return SocketPoolWrapper;
174 })();
175
OLDNEW
« no previous file with comments | « netlog_viewer/select.png ('k') | netlog_viewer/sockets_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698