Commit graph

50 commits

Author SHA1 Message Date
lolski
aadaf15b89 #18021 Sink.seq and FlowOps.limit and .limitWeighted 2015-12-20 11:00:06 +01:00
Roland Kuhn
a20bbce433 add fusing 2015-12-15 09:24:52 +01:00
Roland Kuhn
1c18eafcbe Merge pull request #19153 from akka/wip-19149-fix-flowOps-sliding-√
=str - 19149 - Corrects the behavior of FlowOps.sliding
2015-12-13 16:45:59 +01:00
Viktor Klang
108f6749de =str - 19149 - Corrects the behavior of FlowOps.sliding
Generatively attempts to verify that it behaves exactly like the
collections library

Removes the use of Vector.builder for an easier-to-follow Vector
implementation while waiting for this to be reimplemented as a
GraphStage.

Also, the Builder implementation relies on undefined behavior:

"Builder.result() — Produces a collection from the added elements.
The builder's contents are undefined after this operation." -
http://www.scala-lang.org/api/current/#scala.collection.mutable.Builder
2015-12-12 20:20:16 +01:00
Roland Kuhn
8e62368afe Merge branch 'release-2.3-dev' of github.com:akka/akka into release-2.3-dev 2015-12-12 16:59:53 +01:00
Roland Kuhn
819c1ef504 Merge remote-tracking branch 'pr/18985' into release-2.3-dev 2015-12-12 16:59:05 +01:00
lolski
3152a6d15f fixed typo call to emitMultiple 2015-12-09 01:26:42 +08:00
lolski
fca478c763 code restructure to enhance readability 2015-12-09 01:21:59 +08:00
lolski
e253593535 working GraphStage-based intersperse implementation 2015-12-09 01:21:59 +08:00
lolski
0d04d3bf5c WIP - Base intersperse on GraphStage instead of StatefulStage. TODO: handle logic to add last element 2015-12-09 01:21:59 +08:00
Viktor Klang
8b0b63625e =str - 19082 - Moves the allow var into the Logic of DropWithin 2015-12-07 12:41:38 +01:00
Alexander Golubev
5aa83594fa +str #18556 add delay combinator 2015-12-02 14:58:30 -05:00
Alexander Golubev
d5cae10a67 +str #18556 add delay combinator 2015-11-27 15:46:35 -05:00
Alexander Golubev
83d3143236 +str #18556 add delay combinator 2015-11-26 15:58:38 -05:00
Alexander Golubev
270ef41359 =str #18556 add delay combinator 2015-11-21 13:48:10 -05:00
Alexander Golubev
7a78160c26 =str #18037 FlowOps.log exception handler does not follow supervision strategy 2015-11-02 09:37:39 -05:00
Roland Kuhn
556012b7ee !str,htc replace and remove OneBoundedInterpreter
main work by @drewhk with contributions from @2m and @rkuhn

This work uncovered many well-hidden bugs in existing Stages, in
particular StatefulStage. These were hidden by the behavior of
OneBoundedInterpreter that normally behaves more orderly than it
guarantees in general, especially with respect to the timeliness of
delivery of upstream termination signals; the bugs were then that
internal state was not flushed when onComplete arrived “too early”.
2015-11-01 14:53:52 +01:00
Roland Kuhn
02810cfa64 !str,htc remove FlexiMerge/Route
- replace all occurrences with equivalent GraphStage implementations

This commit introduces a mini-DSL for GraphStage that allows emitting or
reading multiple elements to/from a port with one statement, installing
stateful handlers on the port to make it work. The emitting side allows
stacked continuations, meaning that while an emit() is ongoing (waiting
for demand) another one can be added to the queue; this allows
convenient formualation of merge-type stages.
2015-10-21 18:52:16 +02:00
Konrad Malawski
61c2213e02 +str #17383 implement intersperse 2015-10-19 13:17:23 +02:00
Endre Sándor Varga
f4b614a186 =str: Optmizing GraphInterpreter 2015-10-01 16:16:42 +02:00
Endre Sándor Varga
12c9abb8c9 !str #16410 #16597: Removed TimerTransform, added Timeout stages 2015-09-18 12:38:36 +02:00
Endre Sándor Varga
071f3c183f =str #18091: Take should eagerly complete if arguments are zero or less 2015-09-02 13:23:32 +02:00
André Rüdiger
6af9ced35c =str: various minor cleanups 2015-08-18 11:36:24 +02:00
Philipp
ac007efc0d +str: Sliding window operation 2015-08-14 17:00:30 +02:00
Alexander Golubev
630343e483 +str #16394 recover operation 2015-07-15 10:34:56 +02:00
Viktor Klang
36abbb4234 Introduces fold as a Flow transformation and generalizes Sink.fold to be Flow.fold + Sink.head
Conflicts:
	akka-stream/src/main/scala/akka/stream/impl/ActorMaterializerImpl.scala
	akka-stream/src/main/scala/akka/stream/impl/Stages.scala
	akka-stream/src/main/scala/akka/stream/scaladsl/Sink.scala
2015-06-30 10:17:52 +02:00
Endre Sándor Varga
7879a5521b Rename FlowMaterializer to Materializer 2015-06-23 18:47:28 +02:00
Endre Sándor Varga
dc7269e620 Rename OperationAttributes to Attributes 2015-06-23 18:45:04 +02:00
Alexander Golubev
6f9438a2b0 +str #17226 add dropWhile and takeWhile 2015-06-16 17:55:50 -04:00
Martynas Mickevičius
e863a9c703 =str #17167 drop new overflow strategy 2015-06-01 18:08:13 +03:00
Konrad Malawski
778e6ce3d2 +str #17298 include stream supervisor in log() source 2015-05-28 15:36:49 +02:00
Endre Sándor Varga
30e4a57ee0 +str #17464: mapConcat accepts immutable.Iterable 2015-05-21 14:28:09 +02:00
Konrad Malawski
b0b6c9e98a preStart is now more type-safe, allows AsyncStage to provide it's Async context 2015-05-11 13:16:37 +02:00
Konrad Malawski
9607ec0cdf +str #17290 Adds preStart / postStop to AbstractStage
+ AsyncStage now uses preStart
+ Log stage now uses preStart (better perf), can be optimised more
2015-05-11 12:57:41 +02:00
Endre Sándor Varga
7f6a67a5c0 =str #17407: MapAsync should pull when failed futures free up space 2015-05-07 15:05:29 +02:00
Konrad Malawski
f2b757df51 +str #17162 add log() stage for simple logging in Flows
+ with javadsl
+ allows configuring log levels
+ allows turning off logging of certain actions completely
+ cookbook adjusted to show this instead of manual PushStage
- PENDING: preStart based impl will be faster, coming soon
2015-04-24 15:37:39 +02:00
Roland Kuhn
616838a738 +str #15833 TLS with session renegotiation 2015-04-23 15:53:52 +02:00
Patrik Nordwall
c63b9c801a =str #16699 fix some FIXMEs 2015-04-23 14:36:53 +02:00
Roland Kuhn
7681c557f7 =str #17191 mapAsyncUnordered shall terminate after resume 2015-04-14 12:41:34 +02:00
Roland Kuhn
4c623fade7 !str #17090 add AsyncStage 2015-04-10 09:00:36 +02:00
Patrik Nordwall
23c533fdd5 =str #16751 Update to reactive-streams 1.0-RC3
Changed rules:
* 1.9 Always onSubscribe prior to any other signals
* 1.9 NullPointerException if subscriber is null
* 3.17 Long overflow, effectively unbounded instead of onError

Fixed some more things:
* fixed some FIXME
* Long drop and take
* memory leaks in tck tests, use BeforeClass to create ActorSystem
  use AfterClass to shutdown ActorSystem
* more tck tests
* don't emit OnComplete when substream is cancelled
* work around for memory leak in PrefixAndTail
2015-03-05 17:58:24 +01:00
Patrik Nordwall
693dcbefcc +str #15750 Prototype of stream supervision
* add supervion for stages and built in ops run by interpreter
* add supervision for mapAsync and mapAsyncUnordered
* add supervision to groupBy and splitWhen
* reference doc for scala and java
2015-02-20 15:44:01 +01:00
Patrik Nordwall
01646d10ff !str #16448 Change error to failure
* one API change OverflowStrategy.error -> OverflowStrategy.fail
* error is still kept in the internals where we are at the reactive
  streams level
2015-01-30 10:30:56 +01:00
Patrik Nordwall
7cf80ab3f3 =str #16602 Suppress dead letters
* akka 2.3.9
* also added missing `final` to case classes
2015-01-23 17:18:09 +01:00
Endre Sándor Varga
325e1b6915 =str: #16285: Expand should not drop elements on completion 2014-11-27 15:18:23 +01:00
Patrik Nordwall
a82f266367 !str #15236 Replace Transformer with Stage
* replace all existing Transformer with Stage (PushPullStage)
* use Flow[ByteString, ByteString] as encoder/decoder transformer in http
* use the IteratorInterpreter for strict if possible
* emit then become
* emit then finish
* termination emits
* FlowTransformerSpec
* rework types to work with Java API
* rename and move things
* add scaladoc
2014-11-21 11:41:34 +01:00
Patrik Nordwall
837ce3eb12 =str #16338 Emit final elements in mapConcat 2014-11-19 19:51:44 +01:00
Viktor Klang
db4e5c4a29 =str - Various Flow and FlowMaterializer improvements
- Switches from using size-of-1/2 Vectors to using Lists
  - Fixes an issue where processorForNode wouldn't use the dispatcher form the settings
  - Adds a dedicated Collect fusion op
  - Adds various simplifications to ActorBasedFlowMaterializer
  - Adds FIXMEs where appropriate
  - Switches `grouped` to use a VectorBuilder
  - Adds support for `scan`
  - ActorBasedFlowMaterializer now uses Iterator instead of head+tail decomp on Seqs
  - Identity and Completed Transformers are now cached
  - Adds dedicated AstNodes for all combinators
  - Adds a hook-in point for fusion in `ActorBasedFlowMaterializer`
  - Adds support for `Operate` an AstNode with a function that create a fusing.Op
  - Adds experimental and slow optimizer as a PoC
  - Adds verification that Ast.Fused does not exist in optimizer input
2014-11-17 17:45:48 +01:00
Endre Sándor Varga
f80d97fc9b !str: IteratorInterpreter and ByteStringBatcher
also Fixing TerminationDirective return types
2014-11-14 14:08:07 +01:00
Endre Sándor Varga
9ecd8b61fe +str: Implement efficient stream op DSL 2014-11-06 12:02:33 +01:00