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

Side by Side Diff: sdk/lib/io/io_resource_info.dart

Issue 1341733003: Change times reported from io resource meta data to be milliseconds since epoch (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7 abstract class _IOResourceInfo { 7 abstract class _IOResourceInfo {
8 final String type; 8 final String type;
9 final int id; 9 final int id;
10 String get name; 10 String get name;
11 static int _count = 0; 11 static int _count = 0;
12 12
13 static final Stopwatch _sw = new Stopwatch()..start(); 13 static final Stopwatch _sw = new Stopwatch()..start();
14 static final _startTime = new DateTime.now().millisecondsSinceEpoch;
15
16 static double get timestamp => _startTime + _sw.elapsedMicroseconds/1000;
14 17
15 _IOResourceInfo(this.type) : id = _IOResourceInfo.getNextID(); 18 _IOResourceInfo(this.type) : id = _IOResourceInfo.getNextID();
16 19
17 /// Get the full set of values for a specific implementation. This is normally 20 /// Get the full set of values for a specific implementation. This is normally
18 /// looked up based on an id from a referenceValueMap. 21 /// looked up based on an id from a referenceValueMap.
19 Map<String, String> get fullValueMap; 22 Map<String, String> get fullValueMap;
20 23
21 /// The reference map, used to return a list of values, e.g., getting 24 /// The reference map, used to return a list of values, e.g., getting
22 /// all open sockets. The structure of this is shared among all subclasses. 25 /// all open sockets. The structure of this is shared among all subclasses.
23 Map<String, String> get referenceValueMap => 26 Map<String, String> get referenceValueMap =>
24 { 27 {
25 // The type for a reference object is prefixed with @ in observatory. 28 // The type for a reference object is prefixed with @ in observatory.
26 'type': '@$type', 29 'type': '@$type',
27 'id': id, 30 'id': id,
28 'name': name, 31 'name': name,
29 }; 32 };
30 33
31 static int getNextID() => _count++; 34 static int getNextID() => _count++;
32 } 35 }
33 36
34 abstract class _ReadWriteResourceInfo extends _IOResourceInfo { 37 abstract class _ReadWriteResourceInfo extends _IOResourceInfo {
35 int totalRead; 38 int totalRead;
36 int totalWritten; 39 int totalWritten;
37 int readCount; 40 int readCount;
38 int writeCount; 41 int writeCount;
39 double lastRead; 42 double lastRead;
40 double lastWrite; 43 double lastWrite;
41 44
42 static double get timestamp =>
43 _IOResourceInfo._sw.elapsedMicroseconds / 1000000.0;
44
45 // Not all call sites use this. In some cases, e.g., a socket, a read does 45 // Not all call sites use this. In some cases, e.g., a socket, a read does
46 // not always mean that we actually read some bytes (we may do a read to see 46 // not always mean that we actually read some bytes (we may do a read to see
47 // if there are some bytes available). 47 // if there are some bytes available).
48 void addRead(int bytes) { 48 void addRead(int bytes) {
49 totalRead += bytes; 49 totalRead += bytes;
50 readCount++; 50 readCount++;
51 lastRead = timestamp; 51 lastRead = _IOResourceInfo.timestamp;
52 } 52 }
53 53
54 // In cases where we read but did not neccesarily get any bytes, use this to 54 // In cases where we read but did not neccesarily get any bytes, use this to
55 // update the readCount and timestamp. Manually update totalRead if any bytes 55 // update the readCount and timestamp. Manually update totalRead if any bytes
56 // where acutally read. 56 // where acutally read.
57 void didRead() => addRead(0); 57 void didRead() => addRead(0);
58 58
59 void addWrite(int bytes) { 59 void addWrite(int bytes) {
60 totalWritten += bytes; 60 totalWritten += bytes;
61 writeCount++; 61 writeCount++;
62 lastWrite = timestamp; 62 lastWrite = _IOResourceInfo.timestamp;
63 } 63 }
64 64
65 _ReadWriteResourceInfo(String type) : 65 _ReadWriteResourceInfo(String type) :
66 totalRead = 0, 66 totalRead = 0,
67 totalWritten = 0, 67 totalWritten = 0,
68 readCount = 0, 68 readCount = 0,
69 writeCount = 0, 69 writeCount = 0,
70 lastRead = 0.0, 70 lastRead = 0.0,
71 lastWrite = 0.0, 71 lastWrite = 0.0,
72 super(type); 72 super(type);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 } 133 }
134 134
135 String get name { 135 String get name {
136 return '${file.path}'; 136 return '${file.path}';
137 } 137 }
138 } 138 }
139 139
140 class _ProcessResourceInfo extends _IOResourceInfo{ 140 class _ProcessResourceInfo extends _IOResourceInfo{
141 static const String TYPE = '_process'; 141 static const String TYPE = '_process';
142 final process; 142 final process;
143 final int startedAt; 143 final double startedAt;
144 144
145 static Map<int, _ProcessResourceInfo> startedProcesses = 145 static Map<int, _ProcessResourceInfo> startedProcesses =
146 new Map<int, _ProcessResourceInfo>(); 146 new Map<int, _ProcessResourceInfo>();
147 147
148 _ProcessResourceInfo(this.process) : 148 _ProcessResourceInfo(this.process) :
149 startedAt = new DateTime.now().millisecondsSinceEpoch, 149 startedAt = _IOResourceInfo.timestamp,
150 super(TYPE) { 150 super(TYPE) {
151 ProcessStarted(this); 151 ProcessStarted(this);
152 } 152 }
153 153
154 String get name => process._path; 154 String get name => process._path;
155 155
156 void stopped() => ProcessStopped(this); 156 void stopped() => ProcessStopped(this);
157 157
158 Map<String, String> get fullValueMap => 158 Map<String, String> get fullValueMap =>
159 { 159 {
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 assert(!openSockets.containsKey(info.id)); 274 assert(!openSockets.containsKey(info.id));
275 openSockets[info.id] = info; 275 openSockets[info.id] = info;
276 } 276 }
277 277
278 static SocketClosed(_SocketResourceInfo info) { 278 static SocketClosed(_SocketResourceInfo info) {
279 assert(openSockets.containsKey(info.id)); 279 assert(openSockets.containsKey(info.id));
280 openSockets.remove(info.id); 280 openSockets.remove(info.id);
281 } 281 }
282 282
283 } 283 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698