public override DateTime DeserializeImpl(TSource source, SerializationContext context)
        {
            context.StartGroup(Tag); // will be ended internally
            DateTime value = ProtoTimeSpan.DeserializeDateTime(context);

            return(value);
        }
        public override TimeSpan DeserializeImpl(TSource source, SerializationContext context)
        {
            long     restore = context.LimitByLengthPrefix();
            TimeSpan value   = ProtoTimeSpan.DeserializeTimeSpan(context);

            context.MaxReadPosition = restore;
            return(value);
        }
        public override int Serialize(TSource source, SerializationContext context)
        {
            TimeSpan value = GetValue(source);

            if (IsOptional && value == DefaultValue)
            {
                return(0);
            }
            return(WritePrefix(context)
                   + ProtoTimeSpan.SerializeTimeSpan(value, context, true));
        }
        public override int Serialize(TSource source, SerializationContext context)
        {
            DateTime value = GetValue(source);

            if (IsOptional && value == DefaultValue)
            {
                return(0);
            }
            return(WritePrefix(context)
                   + ProtoTimeSpan.SerializeDateTime(value, context, false)
                   + context.EncodeUInt32(suffix));
        }
 public override TimeSpan DeserializeImpl(TSource source, SerializationContext context)
 {
     context.StartGroup(Tag); // will be ended internally
     return(ProtoTimeSpan.DeserializeTimeSpan(context));
 }