private static long ReadTimeSpanTicks(ProtoReader source) { SubItemToken token = ProtoReader.StartSubItem(source); int fieldNumber; TimeSpanScale scale = TimeSpanScale.Days; long value = 0; while ((fieldNumber = source.ReadFieldHeader()) > 0) { switch (fieldNumber) { case FieldTimeSpanScale: scale = (TimeSpanScale)source.ReadInt32(); break; case FieldTimeSpanValue: source.Assert(WireType.SignedVariant); value = source.ReadInt64(); break; default: source.SkipField(); break; } } ProtoReader.EndSubItem(token, source); switch (scale) { case TimeSpanScale.Days: return(value * TimeSpan.TicksPerDay); case TimeSpanScale.Hours: return(value * TimeSpan.TicksPerHour); case TimeSpanScale.Minutes: return(value * TimeSpan.TicksPerMinute); case TimeSpanScale.Seconds: return(value * TimeSpan.TicksPerSecond); case TimeSpanScale.Milliseconds: return(value * TimeSpan.TicksPerMillisecond); case TimeSpanScale.Ticks: return(value); case TimeSpanScale.MinMax: switch (value) { case 1: return(long.MaxValue); case -1: return(long.MinValue); default: throw new ProtoException("Unknown min/max value: " + value.ToString()); } default: throw new ProtoException("Unknown timescale: " + scale.ToString()); } }
ScaledTicks ISerializer <ScaledTicks> .Read(ref ProtoReader.State state, ScaledTicks _) { int fieldNumber; TimeSpanScale scale = TimeSpanScale.Days; long value = 0; var kind = DateTimeKind.Unspecified; while ((fieldNumber = state.ReadFieldHeader()) > 0) { switch (fieldNumber) { case ScaledTicks.FieldTimeSpanScale: scale = (TimeSpanScale)state.ReadInt32(); break; case ScaledTicks.FieldTimeSpanValue: state.Assert(WireType.SignedVarint); value = state.ReadInt64(); break; case ScaledTicks.FieldTimeSpanKind: kind = (DateTimeKind)state.ReadInt32(); switch (kind) { case DateTimeKind.Unspecified: case DateTimeKind.Utc: case DateTimeKind.Local: break; // fine default: ThrowHelper.ThrowProtoException("Invalid date/time kind: " + kind.ToString()); break; } break; default: state.SkipField(); break; } } return(new ScaledTicks(value, scale, kind)); }
private static long ReadTimeSpanTicks(ProtoReader source, out DateTimeKind kind) { kind = DateTimeKind.Unspecified; switch (source.WireType) { case WireType.String: case WireType.StartGroup: SubItemToken token = ProtoReader.StartSubItem(source); int fieldNumber; TimeSpanScale scale = TimeSpanScale.Days; long value = 0; while ((fieldNumber = source.ReadFieldHeader()) > 0) { switch (fieldNumber) { case FieldTimeSpanScale: scale = (TimeSpanScale)source.ReadInt32(); break; case FieldTimeSpanValue: source.Assert(WireType.SignedVariant); value = source.ReadInt64(); break; case FieldTimeSpanKind: kind = (DateTimeKind)source.ReadInt32(); switch (kind) { case DateTimeKind.Unspecified: case DateTimeKind.Utc: case DateTimeKind.Local: break; // fine default: throw new ProtoException("Invalid date/time kind: " + kind.ToString()); } break; default: source.SkipField(); break; } } ProtoReader.EndSubItem(token, source); switch (scale) { case TimeSpanScale.Days: return(value * TimeSpan.TicksPerDay); case TimeSpanScale.Hours: return(value * TimeSpan.TicksPerHour); case TimeSpanScale.Minutes: return(value * TimeSpan.TicksPerMinute); case TimeSpanScale.Seconds: return(value * TimeSpan.TicksPerSecond); case TimeSpanScale.Milliseconds: return(value * TimeSpan.TicksPerMillisecond); case TimeSpanScale.Ticks: return(value); case TimeSpanScale.MinMax: switch (value) { case 1: return(long.MaxValue); case -1: return(long.MinValue); default: throw new ProtoException("Unknown min/max value: " + value.ToString()); } default: throw new ProtoException("Unknown timescale: " + scale.ToString()); } case WireType.Fixed64: return(source.ReadInt64()); default: throw new ProtoException("Unexpected wire-type: " + source.WireType.ToString()); } }
public ScaledTicks(long value, TimeSpanScale scale, DateTimeKind kind) { Value = value; Scale = scale; Kind = kind; }
private static long DeserializeTicks(SerializationContext context) { long value = 0; TimeSpanScale scale = TimeSpanScale.Days; uint prefix; bool keepRunning = true; while (keepRunning && context.TryReadFieldPrefix(out prefix)) { switch (prefix) { case (FieldTimeSpanScale << 3) | (int)WireType.Variant: scale = (TimeSpanScale)context.DecodeInt32(); break; case (FieldTimeSpanValue << 3) | (int)WireType.Variant: value = SerializationContext.Zag(context.DecodeUInt64()); break; default: WireType wireType; int fieldTag; Serializer.ParseFieldToken(prefix, out wireType, out fieldTag); if (wireType == WireType.EndGroup) { context.EndGroup(fieldTag); keepRunning = false; continue; } switch (fieldTag) { case FieldTimeSpanScale: case FieldTimeSpanValue: throw new ProtoException("Incorrect wire-type deserializing TimeSpan"); default: Serializer.SkipData(context, fieldTag, wireType); break; } break; } } switch (scale) { case TimeSpanScale.Days: return(value * TimeSpan.TicksPerDay); case TimeSpanScale.Hours: return(value * TimeSpan.TicksPerHour); case TimeSpanScale.Minutes: return(value * TimeSpan.TicksPerMinute); case TimeSpanScale.Seconds: return(value * TimeSpan.TicksPerSecond); case TimeSpanScale.Milliseconds: return(value * TimeSpan.TicksPerMillisecond); case TimeSpanScale.Ticks: return(value); case TimeSpanScale.MinMax: switch (value) { case 1: return(long.MaxValue); case -1: return(long.MinValue); default: throw new ProtoException("Unknown min/max value: " + value.ToString()); } default: throw new ProtoException("Unknown timescale: " + scale.ToString()); } }
private static long ReadTimeSpanTicks(ProtoReader source) { switch (source.WireType) { case WireType.String: case WireType.StartGroup: { SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale timeSpanScale = TimeSpanScale.Days; long num = 0L; int num2; while ((num2 = source.ReadFieldHeader()) > 0) { switch (num2) { case 2: timeSpanScale = (TimeSpanScale)source.ReadInt32(); break; case 1: source.Assert(WireType.SignedVariant); num = source.ReadInt64(); break; default: source.SkipField(); break; } } ProtoReader.EndSubItem(token, source); switch (timeSpanScale) { case TimeSpanScale.Days: return(num * 864000000000L); case TimeSpanScale.Hours: return(num * 36000000000L); case TimeSpanScale.Minutes: return(num * 600000000); case TimeSpanScale.Seconds: return(num * 10000000); case TimeSpanScale.Milliseconds: return(num * 10000); case TimeSpanScale.Ticks: return(num); case TimeSpanScale.MinMax: switch (num) { case 1L: return(long.MaxValue); case -1L: return(long.MinValue); default: throw new ProtoException("Unknown min/max value: " + num); } default: throw new ProtoException("Unknown timescale: " + timeSpanScale); } } case WireType.Fixed64: return(source.ReadInt64()); default: throw new ProtoException("Unexpected wire-type: " + source.WireType); } }
// Token: 0x06003269 RID: 12905 RVA: 0x001266EC File Offset: 0x00124AEC private static long ReadTimeSpanTicks(ProtoReader source, out DateTimeKind kind) { kind = DateTimeKind.Unspecified; switch (source.WireType) { case WireType.Fixed64: return(source.ReadInt64()); case WireType.String: case WireType.StartGroup: { SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale timeSpanScale = TimeSpanScale.Days; long num = 0L; int num2; while ((num2 = source.ReadFieldHeader()) > 0) { switch (num2) { case 1: source.Assert(WireType.SignedVariant); num = source.ReadInt64(); break; case 2: timeSpanScale = (TimeSpanScale)source.ReadInt32(); break; case 3: kind = (DateTimeKind)source.ReadInt32(); switch (kind) { case DateTimeKind.Unspecified: case DateTimeKind.Utc: case DateTimeKind.Local: break; default: throw new ProtoException("Invalid date/time kind: " + kind.ToString()); } break; default: source.SkipField(); break; } } ProtoReader.EndSubItem(token, source); switch (timeSpanScale) { case TimeSpanScale.Days: return(num * 864000000000L); case TimeSpanScale.Hours: return(num * 36000000000L); case TimeSpanScale.Minutes: return(num * 600000000L); case TimeSpanScale.Seconds: return(num * 10000000L); case TimeSpanScale.Milliseconds: return(num * 10000L); case TimeSpanScale.Ticks: return(num); default: if (timeSpanScale != TimeSpanScale.MinMax) { throw new ProtoException("Unknown timescale: " + timeSpanScale.ToString()); } if (num == 1L) { return(long.MaxValue); } if (num != -1L) { throw new ProtoException("Unknown min/max value: " + num.ToString()); } return(long.MinValue); } } default: throw new ProtoException("Unexpected wire-type: " + source.WireType.ToString()); } }
private static long ReadTimeSpanTicks(ProtoReader source) { WireType wireType = source.WireType; if (wireType != WireType.Fixed64) { if ((uint)(wireType - 2) <= 1u) { SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale timeSpanScale = TimeSpanScale.Days; long num = 0L; int num2; while ((num2 = source.ReadFieldHeader()) > 0) { switch (num2) { case 2: timeSpanScale = (TimeSpanScale)source.ReadInt32(); break; case 1: source.Assert(WireType.SignedVariant); num = source.ReadInt64(); break; default: source.SkipField(); break; } } ProtoReader.EndSubItem(token, source); switch (timeSpanScale) { case TimeSpanScale.Days: return(num * 864000000000L); case TimeSpanScale.Hours: return(num * 36000000000L); case TimeSpanScale.Minutes: return(num * 600000000); case TimeSpanScale.Seconds: return(num * 10000000); case TimeSpanScale.Milliseconds: return(num * 10000); case TimeSpanScale.Ticks: return(num); case TimeSpanScale.MinMax: switch (num) { case 1L: return(9223372036854775807L); case -1L: return(-9223372036854775808L); default: throw new ProtoException("Unknown min/max value: " + num.ToString()); } default: throw new ProtoException("Unknown timescale: " + timeSpanScale.ToString()); } } wireType = source.WireType; throw new ProtoException("Unexpected wire-type: " + wireType.ToString()); } return(source.ReadInt64()); }
private static long ReadTimeSpanTicks(ProtoReader source) { TimeSpanScale timeSpanScale; switch (source.WireType) { case WireType.Fixed64: { return(source.ReadInt64()); } case WireType.String: case WireType.StartGroup: { SubItemToken subItemToken = ProtoReader.StartSubItem(source); timeSpanScale = TimeSpanScale.Days; long num = (long)0; while (true) { int num1 = source.ReadFieldHeader(); int num2 = num1; if (num1 <= 0) { break; } switch (num2) { case 1: { source.Assert(WireType.SignedVariant); num = source.ReadInt64(); continue; } case 2: { timeSpanScale = (TimeSpanScale)source.ReadInt32(); continue; } default: { source.SkipField(); continue; } } } ProtoReader.EndSubItem(subItemToken, source); TimeSpanScale timeSpanScale1 = timeSpanScale; switch (timeSpanScale1) { case TimeSpanScale.Days: { return(num * 864000000000L); } case TimeSpanScale.Hours: { return(num * 36000000000L); } case TimeSpanScale.Minutes: { return(num * (long)600000000); } case TimeSpanScale.Seconds: { return(num * (long)10000000); } case TimeSpanScale.Milliseconds: { return(num * (long)10000); } case TimeSpanScale.Ticks: { return(num); } default: { if (timeSpanScale1 == TimeSpanScale.MinMax) { break; } else { throw new ProtoException(string.Concat("Unknown timescale: ", timeSpanScale.ToString())); } } } long num3 = num; if (num3 <= (long)1 && num3 >= (long)-1) { switch ((int)(num3 - (long)-1)) { case 0: { return(-9223372036854775808L); } case 2: { return(9223372036854775807L); } } } throw new ProtoException(string.Concat("Unknown min/max value: ", num.ToString())); } } throw new ProtoException(string.Concat("Unexpected wire-type: ", source.WireType.ToString())); throw new ProtoException(string.Concat("Unknown timescale: ", timeSpanScale.ToString())); }
private static long ReadTimeSpanTicks(ProtoReader source) { switch (source.WireType) { case WireType.Fixed64: return(source.ReadInt64()); case WireType.String: case WireType.StartGroup: { SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale timeSpanScale = TimeSpanScale.Days; long num = 0L; int num2; while ((num2 = source.ReadFieldHeader()) > 0) { int num3 = num2; if (num3 != 1) { if (num3 != 2) { source.SkipField(); } else { timeSpanScale = (TimeSpanScale)source.ReadInt32(); } } else { source.Assert(WireType.SignedVariant); num = source.ReadInt64(); } } ProtoReader.EndSubItem(token, source); TimeSpanScale timeSpanScale2 = timeSpanScale; switch (timeSpanScale2) { case TimeSpanScale.Days: return(num * 864000000000L); case TimeSpanScale.Hours: return(num * 36000000000L); case TimeSpanScale.Minutes: return(num * 600000000L); case TimeSpanScale.Seconds: return(num * 10000000L); case TimeSpanScale.Milliseconds: return(num * 10000L); case TimeSpanScale.Ticks: return(num); default: { if (timeSpanScale2 != TimeSpanScale.MinMax) { throw new ProtoException("Unknown timescale: " + timeSpanScale.ToString()); } long num4 = num; if (num4 >= -1L && num4 <= 1L) { switch ((int)(num4 - -1L)) { case 0: return(-9223372036854775808L); case 2: return(9223372036854775807L); } } throw new ProtoException("Unknown min/max value: " + num.ToString()); } } break; } default: throw new ProtoException("Unexpected wire-type: " + source.WireType.ToString()); } }
private static long ReadTimeSpanTicks(ProtoReader source) { long num2; switch (source.WireType) { case WireType.Fixed64: return(source.ReadInt64()); case WireType.String: case WireType.StartGroup: { int num; SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale days = TimeSpanScale.Days; num2 = 0L; Label_0065: if ((num = source.ReadFieldHeader()) <= 0) { ProtoReader.EndSubItem(token, source); switch (days) { case TimeSpanScale.Days: return(num2 * 0xc92a69c000L); case TimeSpanScale.Hours: return(num2 * 0x861c46800L); case TimeSpanScale.Minutes: return(num2 * 0x23c34600L); case TimeSpanScale.Seconds: return(num2 * 0x989680L); case TimeSpanScale.Milliseconds: return(num2 * 0x2710L); case TimeSpanScale.Ticks: return(num2); case TimeSpanScale.MinMax: { long num4 = num2; if ((num4 <= 1L) && (num4 >= -1L)) { switch (((int)(num4 - -1L))) { case 0: return(-9223372036854775808L); case 2: return(0x7fffffffffffffffL); } } goto Label_0115; } } throw new ProtoException("Unknown timescale: " + days.ToString()); } switch (num) { case 1: source.Assert(WireType.SignedVariant); num2 = source.ReadInt64(); goto Label_0065; case 2: days = (TimeSpanScale)source.ReadInt32(); goto Label_0065; } source.SkipField(); goto Label_0065; } default: throw new ProtoException("Unexpected wire-type: " + source.WireType.ToString()); } Label_0115: throw new ProtoException("Unknown min/max value: " + num2.ToString()); }
// Token: 0x06000039 RID: 57 RVA: 0x0000A274 File Offset: 0x00008474 private static long ReadTimeSpanTicks(ProtoReader source) { WireType wireType = source.WireType; if (wireType == WireType.Fixed64) { return(source.ReadInt64()); } if (wireType - WireType.String > 1) { throw new ProtoException("Unexpected wire-type: " + source.WireType.ToString()); } SubItemToken token = ProtoReader.StartSubItem(source); TimeSpanScale timeSpanScale = TimeSpanScale.Days; long num = 0L; int num2; while ((num2 = source.ReadFieldHeader()) > 0) { if (num2 != 1) { if (num2 == 2) { timeSpanScale = (TimeSpanScale)source.ReadInt32(); } else { source.SkipField(); } } else { source.Assert(WireType.SignedVariant); num = source.ReadInt64(); } } ProtoReader.EndSubItem(token, source); switch (timeSpanScale) { case TimeSpanScale.Days: return(num * 864000000000L); case TimeSpanScale.Hours: return(num * 36000000000L); case TimeSpanScale.Minutes: return(num * 600000000L); case TimeSpanScale.Seconds: return(num * 10000000L); case TimeSpanScale.Milliseconds: return(num * 10000L); case TimeSpanScale.Ticks: return(num); default: if (timeSpanScale != TimeSpanScale.MinMax) { throw new ProtoException("Unknown timescale: " + timeSpanScale.ToString()); } if (num == -1L) { return(long.MinValue); } if (num == 1L) { return(long.MaxValue); } throw new ProtoException("Unknown min/max value: " + num.ToString()); } }