OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include <cstdio> | 5 #include <cstdio> |
6 #include <cstring> | 6 #include <cstring> |
7 #include <memory> | 7 #include <memory> |
8 #include <set> | 8 #include <set> |
9 #include <unordered_map> | 9 #include <unordered_map> |
10 #include <vector> | 10 #include <vector> |
(...skipping 21 matching lines...) Expand all Loading... | |
32 } | 32 } |
33 Dart_CObject message; | 33 Dart_CObject message; |
34 message.type = Dart_CObject_kNull; | 34 message.type = Dart_CObject_kNull; |
35 Dart_PostCObject(port, &message); | 35 Dart_PostCObject(port, &message); |
36 } | 36 } |
37 | 37 |
38 static void PostSignal(Dart_Port port, int32_t signalled) { | 38 static void PostSignal(Dart_Port port, int32_t signalled) { |
39 if (port == ILLEGAL_PORT) { | 39 if (port == ILLEGAL_PORT) { |
40 return; | 40 return; |
41 } | 41 } |
42 Dart_CObject message; | 42 Dart_PostInteger(port, signalled); |
43 message.type = Dart_CObject_kInt32; | |
44 message.value.as_int32 = signalled; | |
45 Dart_PostCObject(port, &message); | |
46 } | 43 } |
47 | 44 |
48 // The internal state of the handle watcher thread. | 45 // The internal state of the handle watcher thread. |
49 class HandleWatcherThreadState { | 46 class HandleWatcherThreadState { |
50 public: | 47 public: |
51 HandleWatcherThreadState(MojoHandle control_pipe_consumer_handle); | 48 HandleWatcherThreadState(MojoHandle control_pipe_consumer_handle); |
52 | 49 |
53 ~HandleWatcherThreadState(); | 50 ~HandleWatcherThreadState(); |
54 | 51 |
55 void Run(); | 52 void Run(); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
299 break; | 296 break; |
300 case HandleWatcherCommand::kCommandShutdownHandleWatcher: | 297 case HandleWatcherCommand::kCommandShutdownHandleWatcher: |
301 Shutdown(command.port()); | 298 Shutdown(command.port()); |
302 break; | 299 break; |
303 default: | 300 default: |
304 MOJO_CHECK(false); | 301 MOJO_CHECK(false); |
305 break; | 302 break; |
306 } | 303 } |
307 } | 304 } |
308 | 305 |
309 // Dart's DateTime class calls gettimeofday to get the time. | 306 // Dart's DateTime class uses MojoCoreNatives.timerMillisecondClock(), which |
Cutch
2015/12/14 19:07:15
Is this comment correct? DateTime should still cal
zra
2015/12/14 19:21:59
DateTime -> Timer
| |
310 // TODO(johnmccutchan): Expose an API in |dart_api.h| that returns the same | 307 // calls MojoGetTimeTicksNow() and divides by 1000; |
311 // value that DateTime uses. | |
312 static int64_t GetDartTimeInMillis() { | 308 static int64_t GetDartTimeInMillis() { |
313 struct timeval tv; | 309 MojoTimeTicks ticks = MojoGetTimeTicksNow(); |
314 if (gettimeofday(&tv, nullptr) < 0) { | 310 return static_cast<int64_t>(ticks) / 1000; |
315 MOJO_CHECK(false); | |
316 return 0; | |
317 } | |
318 return ((static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec) / 1000; | |
319 } | 311 } |
320 | 312 |
321 void HandleWatcherThreadState::ProcessTimers() { | 313 void HandleWatcherThreadState::ProcessTimers() { |
322 int64_t now = GetDartTimeInMillis(); | 314 int64_t now = GetDartTimeInMillis(); |
323 while (HasTimers() && now >= NextTimerDeadline()) { | 315 while (HasTimers() && now >= NextTimerDeadline()) { |
324 CompleteNextTimer(); | 316 CompleteNextTimer(); |
325 now = GetDartTimeInMillis(); | 317 now = GetDartTimeInMillis(); |
326 } | 318 } |
327 } | 319 } |
328 | 320 |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
523 return MojoWriteMessage(control_pipe_producer_handle, | 515 return MojoWriteMessage(control_pipe_producer_handle, |
524 reinterpret_cast<const void*>(&command), | 516 reinterpret_cast<const void*>(&command), |
525 sizeof(command), | 517 sizeof(command), |
526 nullptr, | 518 nullptr, |
527 0, | 519 0, |
528 0); | 520 0); |
529 } | 521 } |
530 | 522 |
531 } // namespace dart | 523 } // namespace dart |
532 } // namespace mojo | 524 } // namespace mojo |
OLD | NEW |