@@ -234,11 +234,6 @@ private final class Pipe {
234234private enum ReadData {
235235 /// A chunk of data, sent as soon as it is received.
236236 case Chunk( NSData )
237-
238- /// The aggregate of all data sent so far, sent right before completion.
239- ///
240- /// No further chunks will occur after this has been sent.
241- case Aggregated( NSData )
242237}
243238
244239/// Takes ownership of the read handle from the given pipe, then sends
@@ -257,7 +252,6 @@ private func aggregateDataReadFromPipe(pipe: Pipe) -> SignalProducer<ReadData, T
257252 buffer. appendData ( data)
258253 } , failed: observer. sendFailed
259254 , completed: {
260- observer. sendNext ( . Aggregated( buffer) )
261255 observer. sendCompleted ( )
262256 } , interrupted: observer. sendInterrupted
263257 ) )
@@ -464,38 +458,40 @@ public func launchTask(taskDescription: Task, standardInput: SignalProducer<NSDa
464458 stdoutProducer. startWithSignal { signal, signalDisposable in
465459 disposable += signalDisposable
466460
461+ let aggregate = NSMutableData ( )
467462 signal. observe ( Observer ( next: { readData in
468463 switch readData {
469464 case let . Chunk( data) :
470465 observer. sendNext ( . StandardOutput( data) )
471-
472- case let . Aggregated( data) :
473- stdoutAggregatedObserver. sendNext ( data)
466+ aggregate. appendData ( data)
474467 }
475468 } , failed: { error in
476469 observer. sendFailed ( error)
477470 stdoutAggregatedObserver. sendFailed ( error)
478- } , completed: stdoutAggregatedObserver. sendCompleted
479- , interrupted: stdoutAggregatedObserver. sendInterrupted
471+ } , completed: {
472+ stdoutAggregatedObserver. sendNext ( aggregate)
473+ stdoutAggregatedObserver. sendCompleted ( )
474+ } , interrupted: stdoutAggregatedObserver. sendInterrupted
480475 ) )
481476 }
482477
483478 stderrProducer. startWithSignal { signal, signalDisposable in
484479 disposable += signalDisposable
485480
481+ let aggregate = NSMutableData ( )
486482 signal. observe ( Observer ( next: { readData in
487483 switch readData {
488484 case let . Chunk( data) :
489485 observer. sendNext ( . StandardError( data) )
490-
491- case let . Aggregated( data) :
492- stderrAggregatedObserver. sendNext ( data)
486+ aggregate. appendData ( data)
493487 }
494488 } , failed: { error in
495489 observer. sendFailed ( error)
496490 stderrAggregatedObserver. sendFailed ( error)
497- } , completed: stderrAggregatedObserver. sendCompleted
498- , interrupted: stderrAggregatedObserver. sendInterrupted
491+ } , completed: {
492+ stderrAggregatedObserver. sendNext ( aggregate)
493+ stderrAggregatedObserver. sendCompleted ( )
494+ } , interrupted: stderrAggregatedObserver. sendInterrupted
499495 ) )
500496 }
501497
0 commit comments