public Result read()

in accord-maelstrom/src/main/java/accord/maelstrom/MaelstromResult.java [104:163]


        public Result read(JsonReader in) throws IOException
        {
            if (in.peek() == JsonToken.NULL)
                return null;

            Node.Id client = null;
            long requestId = Long.MIN_VALUE;
            NavigableMap<Key, Value> reads = new TreeMap<>();
            MaelstromUpdate update = new MaelstromUpdate();
            in.beginObject();
            while (in.hasNext())
            {
                String kind = in.nextName();
                switch (kind)
                {
                    default: throw new IllegalStateException("Invalid kind: " + kind);
                    case "r":
                        in.beginArray();
                        while (in.hasNext())
                        {
                            in.beginArray();
                            Key key = MaelstromKey.readKey(in);
                            Value value = Value.read(in);
                            reads.put(key, value);
                            in.endArray();
                        }
                        in.endArray();
                        break;
                    case "append":
                        in.beginArray();
                        while (in.hasNext())
                        {
                            in.beginArray();
                            Key key = MaelstromKey.readKey(in);
                            Value append = Value.read(in);
                            update.put(key, append);
                            in.endArray();
                        }
                        in.endArray();
                        break;
                    case "client":
                        client = Json.ID_ADAPTER.read(in);
                        break;
                    case "requestId":
                        requestId = in.nextLong();
                        break;
                }
            }
            in.endObject();

            if (client == null)
                throw new IllegalStateException();

            for (Key key : update.keySet())
                reads.putIfAbsent(key, null);

            Keys keys = new Keys(reads.navigableKeySet());
            Value[] values = reads.values().toArray(new Value[0]);
            return new MaelstromResult(client, requestId, keys, values, update);
        }