blob: af05e0bf1f8282bb372079feae0d6d666521406e [file] [log] [blame]
// Copyright (c) 2018, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
import 'package:built_collection/built_collection.dart';
import 'package:built_value/serializer.dart';
/// Serializer for [Duration].
///
/// [Duration] is implemented as an `int` number of microseconds, so just
/// store that `int`.
class DurationSerializer implements PrimitiveSerializer<Duration> {
final bool structured = false;
@override
final Iterable<Type> types = BuiltList<Type>([Duration]);
@override
final String wireName = 'Duration';
@override
Object serialize(Serializers serializers, Duration duration,
{FullType specifiedType = FullType.unspecified}) {
return duration.inMicroseconds;
}
@override
Duration deserialize(Serializers serializers, Object? serialized,
{FullType specifiedType = FullType.unspecified}) {
return Duration(microseconds: serialized as int);
}
}