InterimTransport {
void closeWithRealTransports(Supplier<T> realTransports);
}
Although DelayedClientTransport saves the affinity keys for the delayed streams (in CallOptions), there is no way for it to pass those keys to Supplier<T>. This can be addressed by changing this method into:
TransportPicker<T> {
T pickTransport(Attributes affinity);
}
InterimTransport {
void closeWithTransportPicker(TransportPicker<T> picker);
}
Similarly:
DelayedClientTransport {
void setTransportPicker(TransportPicker<T> picker);
}