示例#1
0
        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();
            }
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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);
     }
 }
示例#5
0
        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));
        }
示例#6
0
 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);
   }
 }
示例#7
0
 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);
   }
 }
示例#8
0
 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();
   }
 }
示例#9
0
        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));
            }
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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);
            }
        }
示例#12
0
 // 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);
     }
 }
示例#13
0
 // 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);
     }
 }
示例#14
0
 // 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();
     }
 }
示例#15
0
        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);
            }
        }