| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2014 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 part of core; | 
|  | 6 | 
|  | 7 class Timeout implements Comparable<Timeout> { | 
|  | 8   int deadline;  // milliseconds since the Unix epoch. | 
|  | 9   SendPort port; | 
|  | 10 | 
|  | 11   Timeout(this.port, this.deadline); | 
|  | 12 | 
|  | 13   int compareTo(Timeout other)  => other.daedline - deadline; | 
|  | 14 } | 
|  | 15 | 
|  | 16 class TimerQueue { | 
|  | 17   SplayTreeSet _set; | 
|  | 18   Timeout _nextTimer; | 
|  | 19 | 
|  | 20   TimerQueue() : _set = new SplayTreeSet(); | 
|  | 21 | 
|  | 22   void updateTimer(SendPort port, int deadline) { | 
|  | 23     var removedTimeout = null; | 
|  | 24     _set.removeWhere((timeout) { | 
|  | 25       if (timeout.port == port) { | 
|  | 26         removedTimeout = timeout; | 
|  | 27         return true; | 
|  | 28       } | 
|  | 29       return false; | 
|  | 30     }); | 
|  | 31 | 
|  | 32     if ((removedTimeout == null) && (deadline >= 0)) { | 
|  | 33       _set.add(new Timeout(port, deadline)); | 
|  | 34     } else { | 
|  | 35       if (deadline > 0) { | 
|  | 36         removedTimeout.deadline = deadline; | 
|  | 37         _set.add(removedTimeout); | 
|  | 38       } | 
|  | 39     } | 
|  | 40 | 
|  | 41     if (_set.isNotEmpty) { | 
|  | 42       _nextTimer = _set.first; | 
|  | 43     } else { | 
|  | 44       _nextTimer = null; | 
|  | 45     } | 
|  | 46   } | 
|  | 47 | 
|  | 48   void removeCurrent() => updateTimer(currentPort, -1); | 
|  | 49 | 
|  | 50   bool get hasTimer => _nextTimer != null; | 
|  | 51   int get currentTimeout => _nextTimer.deadline; | 
|  | 52   SendPort get currentPort => _nextTimer.port; | 
|  | 53 } | 
| OLD | NEW | 
|---|