DVUpdateRollout class

Staged rollouts: which devices a release has reached yet.

A fleet is not updated all at once. A release goes to a slice of it, somebody watches, and the slice grows. The decision of whether this device is in the slice has to be made somewhere, and where it is made matters more than it looks: a server that draws it at random answers differently every time a device asks, so an update appears at nine o'clock and is gone at ten, and nobody -- not the operator, not the person holding the device -- can tell that apart from a broken server.

So it is not drawn. It is computed from the device and the version, and the same two answer the same forever. The version is in the hash as well as the device, which is what stops the same unlucky kiosks from being last in the queue for every release they ever get -- and, more to the point, stops the same devices from being the ones that find every bad release.

Properties

hashCode → int
The hash code for this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

bucketOf({required String deviceId, required String version}) → int
Where the device falls in the queue for version, from 0 to 99.
includes({required String deviceId, required String version, required int percent}) → bool
Whether the device is in the percent of the fleet this release has reached.