* Move (de)compression helpers to akka-stream #21395
* Move compression and decompression -related classes from
akka-http-experimental to akka-stream
* Add Compression helper object with functions to create
decompressing Flows
* Add a short cookbook entry
* =str move compression impl classes into their own directory (and change visibility)
* =str also expose gzip/deflate compression flows
* Fix formatting of plural ByteStrings in cookbook
* =str #21395 make compressor call Deflater.end in postStop to release resources
Also simplified the creation of the flow given a compressor.
* =str #21395 decompressors call Inflater.end in postStop to release resources
* =str #21395 smallish Scaladoc fixes
Do all (Akka)SSLConfig magic in one place directly in the TLS API.
Also, introduce new low-level entrypoint in TLS that allows to specify
an SSLEngine constructor directly without relying on SSLContext. This
allows users to use third-party SSLEngine implementations like netty's
OpenSslEngine together with akka-stream.
When application closes inboud using engine.closeInbound the engine can generate an alert message and put it into writer.outboundList. As a result the engine can have a new data packet in outbound and its isOutboundDone will be false. We have to ensure that it will be flushed to the network, that's why we have to update lastHandshakeStatus via the actual status of the engine. Otherwise the actor will transition to the flushingOutbound state but will never flush outbound, since engineNeedsWrap precondition will be false.
Generally speaking whenever we signal something to the SSLEngine, weshould also read getHandshakeStatus afterwards to understand what we need to do next. This was done everywhere but for this engine.closeInbound.
This will fix the cyclic dependency issue between the ssl-config repo
and akka.
It would have been better if akka-stream would not require
these changes at all but com.typesafe.sslconfig.akka.AkkaSSLConfig is
part of the public interface of akka-stream's TLS stage. So, this
can only be fixed in the next major version.
Source code was copied over from the tree at commit
470fae76f3
See https://github.com/typesafehub/ssl-config/issues/47
* +str #18793 StageLogging that allows logger access in stages
Also, non ActorMaterializers can opt-into providing a logger here.
* +str #18794 add javadsl for StageLogging
* fix missing test method on compile only class
* mapAsync + ask should be the first choice
* add missing Source.queue
* prefer actorRefWithAck
* move ActorPublisher and ActorSubscriber to the end
with additional warning
* fix wrong doc of SourceQueue offer
* and add missing java api
* Add comprehensive tests
* Add documentation
* Damn comma after rebase
* Add documentation for foldAsync and scanAsync
* Rename aggreator and aggreating to current
* Remove out availability check
* Revert removing out and some refactors
* Formatting documentation
* Use after instead of Promise in test
* Use package reference to after and some refactoring
* fail fast in mapAsync for completed failed future, #21318
* the callback was not run until todo == parallelism or the sync
event limit was reached, and that can be a problem if upstream
stages are slow (noticed this for a blocking Kafka producer stage)
* skip callback for completed futures
* fix callback allocation