Ejemplo n.º 1
0
        private Action ParseAction(JsonReader r)
        {
            if (r.TokenType != JsonToken.StartObject)
            {
                throw new InvalidOperationException();
            }
            if (!r.Read() || r.TokenType != JsonToken.PropertyName)
            {
                throw new InvalidOperationException();
            }

            var paramKey = Convert.ToInt32(r.Value);

            if (!r.Read())
            {
                throw new InvalidOperationException();
            }

            Action value;

            if (r.TokenType == JsonToken.StartObject)
            {
                var act = new RelativeAction {
                    BaseParam = paramKey
                };

                while (r.Read() && r.TokenType != JsonToken.EndObject)
                {
                    if (r.TokenType != JsonToken.PropertyName)
                    {
                        throw new InvalidOperationException();
                    }

                    switch (r.Value.ToString())
                    {
                    case "rate":
                        act.Rate = r.ReadInt32();
                        break;

                    case "limit":
                        act.Limit = r.ReadInt32();
                        break;

                    default:
                        Console.Error.WriteLine("Unknown 'Item'.'action' data key: {0}", r.Value);
                        throw new NotSupportedException();
                    }
                }

                value = act;
            }
            else if (r.TokenType == JsonToken.Integer || r.TokenType == JsonToken.String)
            {
                value = new FixedAction {
                    BaseParam = paramKey, Value = Convert.ToInt32(r.Value)
                };
            }
            else
            {
                throw new InvalidOperationException();
            }


            if (!r.Read() || r.TokenType != JsonToken.EndObject)
            {
                throw new InvalidOperationException();
            }

            return(value);
        }
Ejemplo n.º 2
0
        private Action ParseAction(JsonReader r)
        {
            if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();
            if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

            var paramKey = Convert.ToInt32(r.Value);

            if (!r.Read()) throw new InvalidOperationException();

            Action value;
            if (r.TokenType == JsonToken.StartObject) {
                var act = new RelativeAction { BaseParam = paramKey };

                while (r.Read() && r.TokenType != JsonToken.EndObject) {
                    if (r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

                    switch (r.Value.ToString()) {
                        case "rate":
                            act.Rate = r.ReadInt32();
                            break;
                        case "limit":
                            act.Limit = r.ReadInt32();
                            break;
                        default:
                            Console.Error.WriteLine("Unknown 'Item'.'action' data key: {0}", r.Value);
                            throw new NotSupportedException();
                    }
                }

                value = act;
            } else if (r.TokenType == JsonToken.Integer || r.TokenType == JsonToken.String) {
                value = new FixedAction { BaseParam = paramKey, Value = Convert.ToInt32(r.Value) };
            } else
                throw new InvalidOperationException();

            if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();

            return value;
        }