Conversation
|
I may need to hold off on h2c for client. Our current pooling mechanism is not compatible with the h2 connection model. |
| import cats.syntax.all._ | ||
| import scodec.bits._ | ||
|
|
||
| private[ember] sealed trait H2Frame |
There was a problem hiding this comment.
Yeah, my eyes glazed over on this file. I'm trusting there are tests to give confidence there aren't errors in all these constants.
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Server.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Stream.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Stream.scala
Outdated
Show resolved
Hide resolved
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/H2Stream.scala
Outdated
Show resolved
Hide resolved
ember-client/shared/src/main/scala/org/http4s/ember/client/EmberClientBuilder.scala
Outdated
Show resolved
Hide resolved
rossabaker
left a comment
There was a problem hiding this comment.
I need a deeper understanding of the protocol before I can give a deeper review, but the two big ones are:
-
I don't like turning off warnings, but we can leave an issue to find a way to rein that back in. I'm less averse to turning off numeric widening, particularly because I didn't notice any of the lossy bad ones.
-
I would fix all the Throwables before those end up in people's error channels. That's a semantic change when we clean it up later.
ember-core/shared/src/main/scala/org/http4s/ember/core/h2/Preface.scala
Outdated
Show resolved
Hide resolved
| val additionalSocketOptions: List[SocketOption], | ||
| private val logger: Logger[F], | ||
| private val unixSocketConfig: Option[(UnixSockets[F], UnixSocketAddress, Boolean, Boolean)], | ||
| private val enableHttp2: Boolean, |
There was a problem hiding this comment.
Is this always orthogonal to other settings? If we opt into this, we speak 1 and 2? Would there ever be a desire to speak 2 only?
There was a problem hiding this comment.
We could try to introduce http2 only support. I hadn't built that presently.
There was a problem hiding this comment.
I'm mostly concerned about the future state space there. Now there are two states, so all is well:
- HTTP/1:
enableHttp2 = false - HTTP/1 and HTTP/2:
enableHttp2 = true
If there's HTTP/2 only, now what? You could introduce an enableHttp1 flag, but what happens when they're both false? Or you could preemptively make this a sum type, but you can't add to that without breaking bincompat. Or you could make all three states now, but don't support the third state yet. I don't think there's going to be a good answer here, but worst case, the server can fail to start on senseless arguments.
examples/ember-server-h2/src/main/scala/com/example/http4s/ember/EmberServerH2Example.scala
Show resolved
Hide resolved
|
I have nearly fixed all the warnings. A It killed my battery before I was done. We can merge this and then fix the warnings, or I can PR to this tomorrow. Don't care which. |
rossabaker
left a comment
There was a problem hiding this comment.
Let's not belabor this PR with the warnings, but let's get those restored before release. I'll open a new PR.
Http4s Core
Server
Client
ScalaJS
Serverand ember server to JS in 0.23 #5663Implement
TLSSocket#applicationProtocolon JS typelevel/fs2#2741