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;
}