boolean setPriority()

in src/main/java/com/twitter/http2/HttpConnection.java [251:283]


    boolean setPriority(int streamId, boolean exclusive, int dependency, int weight) {
        Node stream = streams.get(streamId);
        if (stream == null) {
            // stream closed?
            return false;
        }

        Node parent = streams.get(dependency);
        if (parent == null) {
            // garbage collected?
            stream.parent.removeDependent(stream);

            // set to default priority
            Node root = streams.get(HTTP_CONNECTION_STREAM_ID);
            root.addDependent(false, stream);
            stream.setWeight(HTTP_DEFAULT_WEIGHT);
            return false;
        }

        // check if we need to restructure the tree
        if (parent == stream.parent) {
            if (exclusive) {
                // move dependents to stream
                parent.addDependent(true, stream);
            }
        } else {
            stream.parent.removeDependent(stream);
            parent.addDependent(exclusive, stream);
        }

        stream.setWeight(weight);
        return true;
    }