private bool ReadCodeWScope() { switch (this._bsonReaderState) { case BsonReader.BsonReaderState.CodeWScopeStart: { base.SetToken(JsonToken.PropertyName, "$code"); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeCode; return(true); } case BsonReader.BsonReaderState.CodeWScopeCode: { this.method_0(); base.SetToken(JsonToken.String, this.ReadLengthString()); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScope; return(true); } case BsonReader.BsonReaderState.CodeWScopeScope: { if (base.CurrentState == JsonReader.State.PostValue) { base.SetToken(JsonToken.PropertyName, "$scope"); return(true); } base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeObject; BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.method_0(); return(true); } case BsonReader.BsonReaderState.CodeWScopeScopeObject: { bool flag = this.ReadNormal(); if (flag && this.TokenType == JsonToken.EndObject) { this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeEnd; } return(flag); } case BsonReader.BsonReaderState.CodeWScopeScopeEnd: { base.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return(true); } default: { throw new ArgumentOutOfRangeException(); } } }
private bool ReadCodeWScope() { switch (this._bsonReaderState) { case BsonReader.BsonReaderState.CodeWScopeStart: this.SetToken(JsonToken.PropertyName, (object)"$code"); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeCode; return(true); case BsonReader.BsonReaderState.CodeWScopeCode: this.ReadInt32(); this.SetToken(JsonToken.String, (object)this.ReadLengthString()); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScope; return(true); case BsonReader.BsonReaderState.CodeWScopeScope: if (this.CurrentState == JsonReader.State.PostValue) { this.SetToken(JsonToken.PropertyName, (object)"$scope"); return(true); } this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeObject; BsonReader.ContainerContext newContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(newContext); newContext.Length = this.ReadInt32(); return(true); case BsonReader.BsonReaderState.CodeWScopeScopeObject: int num = this.ReadNormal() ? 1 : 0; if (num == 0) { return(num != 0); } if (this.TokenType != JsonToken.EndObject) { return(num != 0); } this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeEnd; return(num != 0); case BsonReader.BsonReaderState.CodeWScopeScopeEnd: this.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return(true); default: throw new ArgumentOutOfRangeException(); } }
private bool ReadReference() { switch (this.CurrentState) { case JsonReader.State.Property: if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.String, (object)this.ReadLengthString()); return(true); } else { if (this._bsonReaderState != BsonReader.BsonReaderState.ReferenceId) { throw JsonReaderException.Create((JsonReader)this, "Unexpected state when reading BSON reference: " + (object)this._bsonReaderState); } this.SetToken(JsonToken.Bytes, (object)this.ReadBytes(12)); return(true); } case JsonReader.State.ObjectStart: this.SetToken(JsonToken.PropertyName, (object)"$ref"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceRef; return(true); case JsonReader.State.PostValue: if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.PropertyName, (object)"$id"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceId; return(true); } else { if (this._bsonReaderState != BsonReader.BsonReaderState.ReferenceId) { throw JsonReaderException.Create((JsonReader)this, "Unexpected state when reading BSON reference: " + (object)this._bsonReaderState); } this.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return(true); } default: throw JsonReaderException.Create((JsonReader)this, "Unexpected state when reading BSON reference: " + (object)this.CurrentState); } }
private bool ReadReference() { JsonReader.State currentState = base.CurrentState; if (currentState != JsonReader.State.Property) { if (currentState == JsonReader.State.ObjectStart) { this.SetToken(JsonToken.PropertyName, "$ref"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceRef; return(true); } if (currentState != JsonReader.State.PostValue) { throw new JsonReaderException("Unexpected state when reading BSON reference: " + base.CurrentState); } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.PropertyName, "$id"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceId; return(true); } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceId) { base.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return(true); } throw new JsonReaderException("Unexpected state when reading BSON reference: " + this._bsonReaderState); } else { if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.String, this.ReadLengthString()); return(true); } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceId) { this.SetToken(JsonToken.Bytes, this.ReadBytes(12)); return(true); } throw new JsonReaderException("Unexpected state when reading BSON reference: " + this._bsonReaderState); } }
private void ReadType(BsonType type) { BsonBinaryType bsonBinaryType; DateTime dateTime; object guid; switch (type) { case BsonType.Number: { double num = this.ReadDouble(); if (this._floatParseHandling != Newtonsoft.Json.FloatParseHandling.Decimal) { base.SetToken(JsonToken.Float, num); return; } base.SetToken(JsonToken.Float, Convert.ToDecimal(num, CultureInfo.InvariantCulture)); return; } case BsonType.String: case BsonType.Symbol: { base.SetToken(JsonToken.String, this.ReadLengthString()); return; } case BsonType.Object: { base.SetToken(JsonToken.StartObject); BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); return; } case BsonType.Array: { base.SetToken(JsonToken.StartArray); BsonReader.ContainerContext containerContext1 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(containerContext1); containerContext1.Length = this.ReadInt32(); return; } case BsonType.Binary: { byte[] numArray = this.ReadBinary(out bsonBinaryType); if (bsonBinaryType != BsonBinaryType.Uuid) { guid = numArray; } else { guid = new Guid(numArray); } base.SetToken(JsonToken.Bytes, guid); return; } case BsonType.Undefined: { base.SetToken(JsonToken.Undefined); return; } case BsonType.Oid: { base.SetToken(JsonToken.Bytes, this.ReadBytes(12)); return; } case BsonType.Boolean: { bool flag = Convert.ToBoolean(this.ReadByte()); base.SetToken(JsonToken.Boolean, flag); return; } case BsonType.Date: { DateTime dateTime1 = DateTimeUtils.ConvertJavaScriptTicksToDateTime(this.ReadInt64()); DateTimeKind dateTimeKindHandling = this.DateTimeKindHandling; if (dateTimeKindHandling == DateTimeKind.Unspecified) { dateTime = DateTime.SpecifyKind(dateTime1, DateTimeKind.Unspecified); } else { dateTime = (dateTimeKindHandling == DateTimeKind.Local ? dateTime1.ToLocalTime() : dateTime1); } base.SetToken(JsonToken.Date, dateTime); return; } case BsonType.Null: { base.SetToken(JsonToken.Null); return; } case BsonType.Regex: { string str = this.ReadString(); string str1 = this.ReadString(); string str2 = string.Concat("/", str, "/", str1); base.SetToken(JsonToken.String, str2); return; } case BsonType.Reference: { base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; return; } case BsonType.Code: { base.SetToken(JsonToken.String, this.ReadLengthString()); return; } case BsonType.CodeWScope: { base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; return; } case BsonType.Integer: { base.SetToken(JsonToken.Integer, (long)this.ReadInt32()); return; } case BsonType.TimeStamp: case BsonType.Long: { base.SetToken(JsonToken.Integer, this.ReadInt64()); return; } } throw new ArgumentOutOfRangeException("type", string.Concat("Unexpected BsonType value: ", type)); }
private void ReadType(BsonType type) { switch (type) { case BsonType.Number: this.SetToken(JsonToken.Float, (object) this.ReadDouble()); break; case BsonType.String: case BsonType.Symbol: this.SetToken(JsonToken.String, (object) this.ReadLengthString()); break; case BsonType.Object: this.SetToken(JsonToken.StartObject); BsonReader.ContainerContext newContext1 = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(newContext1); newContext1.Length = this.ReadInt32(); break; case BsonType.Array: this.SetToken(JsonToken.StartArray); BsonReader.ContainerContext newContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(newContext2); newContext2.Length = this.ReadInt32(); break; case BsonType.Binary: this.SetToken(JsonToken.Bytes, (object) this.ReadBinary()); break; case BsonType.Undefined: this.SetToken(JsonToken.Undefined); break; case BsonType.Oid: this.SetToken(JsonToken.Bytes, (object) this.ReadBytes(12)); break; case BsonType.Boolean: this.SetToken(JsonToken.Boolean, (object) (bool) (Convert.ToBoolean(this.ReadByte()) ? 1 : 0)); break; case BsonType.Date: DateTime dateTime1 = JsonConvert.ConvertJavaScriptTicksToDateTime(this.ReadInt64()); DateTime dateTime2; switch (this.DateTimeKindHandling) { case DateTimeKind.Unspecified: dateTime2 = DateTime.SpecifyKind(dateTime1, DateTimeKind.Unspecified); break; case DateTimeKind.Local: dateTime2 = dateTime1.ToLocalTime(); break; default: dateTime2 = dateTime1; break; } this.SetToken(JsonToken.Date, (object) dateTime2); break; case BsonType.Null: this.SetToken(JsonToken.Null); break; case BsonType.Regex: this.SetToken(JsonToken.String, (object) ("/" + this.ReadString() + "/" + this.ReadString())); break; case BsonType.Reference: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; break; case BsonType.Code: this.SetToken(JsonToken.String, (object) this.ReadLengthString()); break; case BsonType.CodeWScope: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; break; case BsonType.Integer: this.SetToken(JsonToken.Integer, (object) (long) this.ReadInt32()); break; case BsonType.TimeStamp: case BsonType.Long: this.SetToken(JsonToken.Integer, (object) this.ReadInt64()); break; default: throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + (object) type); } }
private bool ReadReference() { switch (this.CurrentState) { case JsonReader.State.Property: if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.String, (object) this.ReadLengthString()); return true; } else { if (this._bsonReaderState != BsonReader.BsonReaderState.ReferenceId) throw JsonReaderException.Create((JsonReader) this, "Unexpected state when reading BSON reference: " + (object) this._bsonReaderState); this.SetToken(JsonToken.Bytes, (object) this.ReadBytes(12)); return true; } case JsonReader.State.ObjectStart: this.SetToken(JsonToken.PropertyName, (object) "$ref"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceRef; return true; case JsonReader.State.PostValue: if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { this.SetToken(JsonToken.PropertyName, (object) "$id"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceId; return true; } else { if (this._bsonReaderState != BsonReader.BsonReaderState.ReferenceId) throw JsonReaderException.Create((JsonReader) this, "Unexpected state when reading BSON reference: " + (object) this._bsonReaderState); this.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return true; } default: throw JsonReaderException.Create((JsonReader) this, "Unexpected state when reading BSON reference: " + (object) this.CurrentState); } }
private bool ReadCodeWScope() { switch (this._bsonReaderState) { case BsonReader.BsonReaderState.CodeWScopeStart: this.SetToken(JsonToken.PropertyName, (object) "$code"); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeCode; return true; case BsonReader.BsonReaderState.CodeWScopeCode: this.ReadInt32(); this.SetToken(JsonToken.String, (object) this.ReadLengthString()); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScope; return true; case BsonReader.BsonReaderState.CodeWScopeScope: if (this.CurrentState == JsonReader.State.PostValue) { this.SetToken(JsonToken.PropertyName, (object) "$scope"); return true; } else { this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeObject; BsonReader.ContainerContext newContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(newContext); newContext.Length = this.ReadInt32(); return true; } case BsonReader.BsonReaderState.CodeWScopeScopeObject: bool flag = this.ReadNormal(); if (flag && this.TokenType == JsonToken.EndObject) this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeEnd; return flag; case BsonReader.BsonReaderState.CodeWScopeScopeEnd: this.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return true; default: throw new ArgumentOutOfRangeException(); } }
private void ReadType(BsonType type) { DateTime dateTime; switch (type) { case BsonType.Number: { this.SetToken(JsonToken.Float, this.ReadDouble()); break; } case BsonType.String: case BsonType.Symbol: { this.SetToken(JsonToken.String, this.ReadLengthString()); break; } case BsonType.Object: { base.SetToken(JsonToken.StartObject); BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); break; } case BsonType.Array: { base.SetToken(JsonToken.StartArray); BsonReader.ContainerContext containerContext1 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(containerContext1); containerContext1.Length = this.ReadInt32(); break; } case BsonType.Binary: { this.SetToken(JsonToken.Bytes, this.ReadBinary()); break; } case BsonType.Undefined: { base.SetToken(JsonToken.Undefined); break; } case BsonType.Oid: { this.SetToken(JsonToken.Bytes, this.ReadBytes(12)); break; } case BsonType.Boolean: { bool flag = Convert.ToBoolean(this.ReadByte()); this.SetToken(JsonToken.Boolean, flag); break; } case BsonType.Date: { DateTime dateTime1 = JsonConvert.ConvertJavaScriptTicksToDateTime(this.ReadInt64()); DateTimeKind dateTimeKindHandling = this.DateTimeKindHandling; if (dateTimeKindHandling == DateTimeKind.Unspecified) { dateTime = DateTime.SpecifyKind(dateTime1, DateTimeKind.Unspecified); } else { dateTime = (dateTimeKindHandling == DateTimeKind.Local ? dateTime1.ToLocalTime() : dateTime1); } this.SetToken(JsonToken.Date, dateTime); break; } case BsonType.Null: { base.SetToken(JsonToken.Null); break; } case BsonType.Regex: { string str = this.ReadString(); string str1 = this.ReadString(); string str2 = string.Concat("/", str, "/", str1); this.SetToken(JsonToken.String, str2); break; } case BsonType.Reference: { base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; break; } case BsonType.Code: { this.SetToken(JsonToken.String, this.ReadLengthString()); break; } case BsonType.CodeWScope: { base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; break; } case BsonType.Integer: { this.SetToken(JsonToken.Integer, (long)this.ReadInt32()); break; } case BsonType.TimeStamp: case BsonType.Long: { this.SetToken(JsonToken.Integer, this.ReadInt64()); break; } default: { throw new ArgumentOutOfRangeException("type", string.Concat("Unexpected BsonType value: ", type)); } } }
private void ReadType(BsonType type) { switch (type) { case BsonType.Number: { double num = this.ReadDouble(); if (this._floatParseHandling == FloatParseHandling.Decimal) { base.SetToken(JsonToken.Float, Convert.ToDecimal(num, CultureInfo.InvariantCulture)); return; } base.SetToken(JsonToken.Float, num); return; } case BsonType.String: case BsonType.Symbol: base.SetToken(JsonToken.String, this.ReadLengthString()); return; case BsonType.Object: { base.SetToken(JsonToken.StartObject); BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); return; } case BsonType.Array: { base.SetToken(JsonToken.StartArray); BsonReader.ContainerContext containerContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(containerContext2); containerContext2.Length = this.ReadInt32(); return; } case BsonType.Binary: base.SetToken(JsonToken.Bytes, this.ReadBinary()); return; case BsonType.Undefined: base.SetToken(JsonToken.Undefined); return; case BsonType.Oid: { byte[] value = this.ReadBytes(12); base.SetToken(JsonToken.Bytes, value); return; } case BsonType.Boolean: { bool flag = Convert.ToBoolean(this.ReadByte()); base.SetToken(JsonToken.Boolean, flag); return; } case BsonType.Date: { long javaScriptTicks = this.ReadInt64(); DateTime dateTime = DateTimeUtils.ConvertJavaScriptTicksToDateTime(javaScriptTicks); DateTime dateTime2; switch (this.DateTimeKindHandling) { case DateTimeKind.Unspecified: dateTime2 = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); goto IL_184; case DateTimeKind.Local: dateTime2 = dateTime.ToLocalTime(); goto IL_184; } dateTime2 = dateTime; IL_184: base.SetToken(JsonToken.Date, dateTime2); return; } case BsonType.Null: base.SetToken(JsonToken.Null); return; case BsonType.Regex: { string str = this.ReadString(); string str2 = this.ReadString(); string value2 = "/" + str + "/" + str2; base.SetToken(JsonToken.String, value2); return; } case BsonType.Reference: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; return; case BsonType.Code: base.SetToken(JsonToken.String, this.ReadLengthString()); return; case BsonType.CodeWScope: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; return; case BsonType.Integer: base.SetToken(JsonToken.Integer, (long)this.ReadInt32()); return; case BsonType.TimeStamp: case BsonType.Long: base.SetToken(JsonToken.Integer, this.ReadInt64()); return; default: throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + type); } }
private void ReadType(BsonType type) { switch (type) { case BsonType.Number: double num = this.ReadDouble(); if (this._floatParseHandling == FloatParseHandling.Decimal) { this.SetToken(JsonToken.Float, (object)Convert.ToDecimal((object)num, (IFormatProvider)CultureInfo.InvariantCulture)); break; } this.SetToken(JsonToken.Float, (object)num); break; case BsonType.String: case BsonType.Symbol: this.SetToken(JsonToken.String, (object)this.ReadLengthString()); break; case BsonType.Object: this.SetToken(JsonToken.StartObject); BsonReader.ContainerContext newContext1 = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(newContext1); newContext1.Length = this.ReadInt32(); break; case BsonType.Array: this.SetToken(JsonToken.StartArray); BsonReader.ContainerContext newContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(newContext2); newContext2.Length = this.ReadInt32(); break; case BsonType.Binary: BsonBinaryType binaryType; byte[] b = this.ReadBinary(out binaryType); this.SetToken(JsonToken.Bytes, binaryType != BsonBinaryType.Uuid ? (object)b : (object)new Guid(b)); break; case BsonType.Undefined: this.SetToken(JsonToken.Undefined); break; case BsonType.Oid: this.SetToken(JsonToken.Bytes, (object)this.ReadBytes(12)); break; case BsonType.Boolean: this.SetToken(JsonToken.Boolean, (object)Convert.ToBoolean(this.ReadByte())); break; case BsonType.Date: DateTime dateTime1 = DateTimeUtils.ConvertJavaScriptTicksToDateTime(this.ReadInt64()); DateTime dateTime2; switch (this.DateTimeKindHandling) { case DateTimeKind.Unspecified: dateTime2 = DateTime.SpecifyKind(dateTime1, DateTimeKind.Unspecified); break; case DateTimeKind.Local: dateTime2 = dateTime1.ToLocalTime(); break; default: dateTime2 = dateTime1; break; } this.SetToken(JsonToken.Date, (object)dateTime2); break; case BsonType.Null: this.SetToken(JsonToken.Null); break; case BsonType.Regex: this.SetToken(JsonToken.String, (object)("/" + this.ReadString() + "/" + this.ReadString())); break; case BsonType.Reference: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; break; case BsonType.Code: this.SetToken(JsonToken.String, (object)this.ReadLengthString()); break; case BsonType.CodeWScope: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; break; case BsonType.Integer: this.SetToken(JsonToken.Integer, (object)(long)this.ReadInt32()); break; case BsonType.TimeStamp: case BsonType.Long: this.SetToken(JsonToken.Integer, (object)this.ReadInt64()); break; default: throw new ArgumentOutOfRangeException(nameof(type), "Unexpected BsonType value: " + (object)type); } }
// Token: 0x060000AA RID: 170 // RVA: 0x00029BD0 File Offset: 0x00027DD0 private void ReadType(BsonType type) { switch (type) { case BsonType.Number: { double num = this.ReadDouble(); if (this._floatParseHandling == FloatParseHandling.Decimal) { base.SetToken(JsonToken.Float, Convert.ToDecimal(num, CultureInfo.InvariantCulture)); return; } base.SetToken(JsonToken.Float, num); return; } case BsonType.String: case BsonType.Symbol: base.SetToken(JsonToken.String, this.ReadLengthString()); return; case BsonType.Object: { base.SetToken(JsonToken.StartObject); BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); return; } case BsonType.Array: { base.SetToken(JsonToken.StartArray); BsonReader.ContainerContext containerContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(containerContext2); containerContext2.Length = this.ReadInt32(); return; } case BsonType.Binary: { BsonBinaryType bsonBinaryType; byte[] array = this.ReadBinary(out bsonBinaryType); object value = (bsonBinaryType != BsonBinaryType.Uuid) ? array : new Guid(array); base.SetToken(JsonToken.Bytes, value); return; } case BsonType.Undefined: base.SetToken(JsonToken.Undefined); return; case BsonType.Oid: { byte[] value2 = this.ReadBytes(12); base.SetToken(JsonToken.Bytes, value2); return; } case BsonType.Boolean: { bool flag = Convert.ToBoolean(this.ReadByte()); base.SetToken(JsonToken.Boolean, flag); return; } case BsonType.Date: { long javaScriptTicks = this.ReadInt64(); DateTime dateTime = DateTimeUtils.ConvertJavaScriptTicksToDateTime(javaScriptTicks); DateTime dateTime2; switch (this.DateTimeKindHandling) { case DateTimeKind.Unspecified: dateTime2 = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); goto IL_19D; case DateTimeKind.Local: dateTime2 = dateTime.ToLocalTime(); goto IL_19D; } dateTime2 = dateTime; IL_19D: base.SetToken(JsonToken.Date, dateTime2); return; } case BsonType.Null: base.SetToken(JsonToken.Null); return; case BsonType.Regex: { string str = this.ReadString(); string str2 = this.ReadString(); string value3 = "/" + str + "/" + str2; base.SetToken(JsonToken.String, value3); return; } case BsonType.Reference: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; return; case BsonType.Code: base.SetToken(JsonToken.String, this.ReadLengthString()); return; case BsonType.CodeWScope: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; return; case BsonType.Integer: base.SetToken(JsonToken.Integer, (long)this.ReadInt32()); return; case BsonType.TimeStamp: case BsonType.Long: base.SetToken(JsonToken.Integer, this.ReadInt64()); return; default: throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + type); } }
// Token: 0x060000A5 RID: 165 // RVA: 0x00029928 File Offset: 0x00027B28 private bool ReadReference() { JsonReader.State currentState = base.CurrentState; switch (currentState) { case JsonReader.State.Property: if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { base.SetToken(JsonToken.String, this.ReadLengthString()); return true; } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceId) { base.SetToken(JsonToken.Bytes, this.ReadBytes(12)); return true; } throw JsonReaderException.Create(this, "Unexpected state when reading BSON reference: " + this._bsonReaderState); case JsonReader.State.ObjectStart: base.SetToken(JsonToken.PropertyName, "$ref"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceRef; return true; default: if (currentState != JsonReader.State.PostValue) { throw JsonReaderException.Create(this, "Unexpected state when reading BSON reference: " + base.CurrentState); } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceRef) { base.SetToken(JsonToken.PropertyName, "$id"); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceId; return true; } if (this._bsonReaderState == BsonReader.BsonReaderState.ReferenceId) { base.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return true; } throw JsonReaderException.Create(this, "Unexpected state when reading BSON reference: " + this._bsonReaderState); } }
// Token: 0x060000A4 RID: 164 // RVA: 0x00029850 File Offset: 0x00027A50 private bool ReadCodeWScope() { switch (this._bsonReaderState) { case BsonReader.BsonReaderState.CodeWScopeStart: base.SetToken(JsonToken.PropertyName, "$code"); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeCode; return true; case BsonReader.BsonReaderState.CodeWScopeCode: this.ReadInt32(); base.SetToken(JsonToken.String, this.ReadLengthString()); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScope; return true; case BsonReader.BsonReaderState.CodeWScopeScope: { if (base.CurrentState == JsonReader.State.PostValue) { base.SetToken(JsonToken.PropertyName, "$scope"); return true; } base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeObject; BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); return true; } case BsonReader.BsonReaderState.CodeWScopeScopeObject: { bool result; if ((result = this.ReadNormal()) && this.TokenType == JsonToken.EndObject) { this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeScopeEnd; } return result; } case BsonReader.BsonReaderState.CodeWScopeScopeEnd: base.SetToken(JsonToken.EndObject); this._bsonReaderState = BsonReader.BsonReaderState.Normal; return true; default: throw new ArgumentOutOfRangeException(); } }
private void ReadType(BsonType type) { switch (type) { case BsonType.Number: this.SetToken(JsonToken.Float, (object)this.ReadDouble()); break; case BsonType.String: case BsonType.Symbol: this.SetToken(JsonToken.String, (object)this.ReadLengthString()); break; case BsonType.Object: this.SetToken(JsonToken.StartObject); BsonReader.ContainerContext newContext1 = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(newContext1); newContext1.Length = this.ReadInt32(); break; case BsonType.Array: this.SetToken(JsonToken.StartArray); BsonReader.ContainerContext newContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(newContext2); newContext2.Length = this.ReadInt32(); break; case BsonType.Binary: this.SetToken(JsonToken.Bytes, (object)this.ReadBinary()); break; case BsonType.Undefined: this.SetToken(JsonToken.Undefined); break; case BsonType.Oid: this.SetToken(JsonToken.Bytes, (object)this.ReadBytes(12)); break; case BsonType.Boolean: this.SetToken(JsonToken.Boolean, (object)(bool)(Convert.ToBoolean(this.ReadByte()) ? 1 : 0)); break; case BsonType.Date: DateTime dateTime1 = JsonConvert.ConvertJavaScriptTicksToDateTime(this.ReadInt64()); DateTime dateTime2; switch (this.DateTimeKindHandling) { case DateTimeKind.Unspecified: dateTime2 = DateTime.SpecifyKind(dateTime1, DateTimeKind.Unspecified); break; case DateTimeKind.Local: dateTime2 = dateTime1.ToLocalTime(); break; default: dateTime2 = dateTime1; break; } this.SetToken(JsonToken.Date, (object)dateTime2); break; case BsonType.Null: this.SetToken(JsonToken.Null); break; case BsonType.Regex: this.SetToken(JsonToken.String, (object)("/" + this.ReadString() + "/" + this.ReadString())); break; case BsonType.Reference: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; break; case BsonType.Code: this.SetToken(JsonToken.String, (object)this.ReadLengthString()); break; case BsonType.CodeWScope: this.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; break; case BsonType.Integer: this.SetToken(JsonToken.Integer, (object)(long)this.ReadInt32()); break; case BsonType.TimeStamp: case BsonType.Long: this.SetToken(JsonToken.Integer, (object)this.ReadInt64()); break; default: throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + (object)type); } }
private void ReadType(BsonType type) { switch (type) { case BsonType.Number: this.SetToken(JsonToken.Float, this.ReadDouble()); break; case BsonType.String: case BsonType.Symbol: this.SetToken(JsonToken.String, this.ReadLengthString()); break; case BsonType.Object: { base.SetToken(JsonToken.StartObject); BsonReader.ContainerContext containerContext = new BsonReader.ContainerContext(BsonType.Object); this.PushContext(containerContext); containerContext.Length = this.ReadInt32(); break; } case BsonType.Array: { base.SetToken(JsonToken.StartArray); BsonReader.ContainerContext containerContext2 = new BsonReader.ContainerContext(BsonType.Array); this.PushContext(containerContext2); containerContext2.Length = this.ReadInt32(); break; } case BsonType.Binary: this.SetToken(JsonToken.Bytes, this.ReadBinary()); break; case BsonType.Undefined: base.SetToken(JsonToken.Undefined); break; case BsonType.Oid: { byte[] value = this.ReadBytes(12); this.SetToken(JsonToken.Bytes, value); break; } case BsonType.Boolean: { bool flag = Convert.ToBoolean(this.ReadByte()); this.SetToken(JsonToken.Boolean, flag); break; } case BsonType.Date: { long javaScriptTicks = this.ReadInt64(); DateTime dateTime = JsonConvert.ConvertJavaScriptTicksToDateTime(javaScriptTicks); DateTime dateTime2; switch (this.DateTimeKindHandling) { case 0: dateTime2 = DateTime.SpecifyKind(dateTime, 0); goto IL_17C; case 2: dateTime2 = dateTime.ToLocalTime(); goto IL_17C; } dateTime2 = dateTime; IL_17C: this.SetToken(JsonToken.Date, dateTime2); break; } case BsonType.Null: base.SetToken(JsonToken.Null); break; case BsonType.Regex: { string text = this.ReadString(); string text2 = this.ReadString(); string value2 = "/" + text + "/" + text2; this.SetToken(JsonToken.String, value2); break; } case BsonType.Reference: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.ReferenceStart; break; case BsonType.Code: this.SetToken(JsonToken.String, this.ReadLengthString()); break; case BsonType.CodeWScope: base.SetToken(JsonToken.StartObject); this._bsonReaderState = BsonReader.BsonReaderState.CodeWScopeStart; break; case BsonType.Integer: this.SetToken(JsonToken.Integer, (long)this.ReadInt32()); break; case BsonType.TimeStamp: case BsonType.Long: this.SetToken(JsonToken.Integer, this.ReadInt64()); break; default: throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + type); } }