15 Commits

Author SHA1 Message Date
Peter Adams
fe17f53108
Capture packets leading upto a user triggered event. (#94)
Motivation:

Capturing all packets is expensive. Recording to a ring buffer and
then outputting on a triggering event allows this cost to be reduced.

Modifications:

Add a new handler - NIOPCAPRingCaptureHandler.
This derives from the existing NIOWritePCAPHandler and generates PCAP recordings.
A ring buffer contained in this handler stores the captured packets until RecordPreviousPackets
is received as a user message at which point they are flushed to the sink.

Result:

There is a new handler capable of outputting packet captured data only in the build up to
a known event.

Co-authored-by: Cory Benfield <lukasa@apple.com>
Co-authored-by: George Barnett <gbrntt@gmail.com>
2020-07-24 13:55:12 +01:00
Johannes Weiss
53808818c2
don't use @tesable import NIO in test suite (#72)
Motivation:

The test suite for some reason imported NIO as @testable which is
verboten.

Modifications:

Don't do that.

Result:

Feeling better, compatible with the upcoming NIO 2.10.1.
2019-11-13 18:41:37 +00:00
Artem Redkin
ed97628fa3 fix NIO 2.9.0 deprecations (#61)
Motivation:

Usage of deprecated methods is bad.

Modification:

Fix usage of deprecated methods.

Result:

Fewer warnings.
2019-10-23 17:23:34 -07:00
Johannes Weiss
5a2fc66068
ServerQuiescingHelper: don't swallow close errors (#54)
Motivation:

ServerQuiescingHelper used to swallow close errors and it shoulnd't do
that.

Modifications:

Don't swallow close errors.

Result:

More correctness.
2019-08-07 18:05:47 +01:00
Johannes Weiss
66f9a509ed
use B2MD verifier (#52)
Motivation:

Use B2MDVerifier for the B2MDs in NIOExtras. Already found one bug,
separetely fixed in #51.

Modifications:

Write a basic validation test for all B2MDs.

Result:

Better test coverage.
2019-05-28 11:28:59 +01:00
Johannes Weiss
96e8335180
write PCAP handler (#46)
Motivation:

Especially with TLS but also without, in real production environments it
can be handy to be able to write pcap files from NIO directly.

Modifications:

add a ChannelHandler that can write a PCAP trace from what's going on in
the ChannelPipeline.

Result:

easier debugging in production
2019-04-12 15:08:10 +01:00
Johannes Weiss
ef608e41a9
use SwiftNIO 2.0.0 (#41) 2019-03-26 09:16:40 +00:00
Johannes Weiss
b7a3549b63
update to latest EmbeddedChannel API (#40)
Motivation:

EmbeddedChannel's API has changed a litle bit, we should update.

Modifications:

update

Result:

code will continue to work
2019-03-22 14:00:12 +00:00
Johannes Weiss
7d42934f15
depend on swift-nio: 2.0.0-convergence.1 (#37)
Motivation:

to tag versions, we shouldn't depend on `.branch("master")`

Modifications:

depend on swift-nio: 2.0.0-convergence.1

Result:

ready to soon tag the first version
2019-03-08 19:17:38 +00:00
Johannes Weiss
5b67140545
make HTTPResponseCompressor removable (#33)
Motivation:

HTTPResponseCompressor is trivially removable, so mark it.

Modifications:

make HTTPResponseCompressor implement RemovableChannelHandler

Result:

HTTPResponseCompressor can be removed
2019-03-08 18:32:08 +00:00
Tanner
575263e5f1 add NIOHTTPCompression library (#31) 2019-03-05 18:32:29 +00:00
Johannes Weiss
7a3e42a40f
move HTTPResponseDecoder to swift-nio-extras (#28)
Motivation:

HTTPResponseDecoder needs to incumbate, so move to nio-extras.

Modifications:

move all the code here.

Result:

incubation can begin
2019-03-05 17:59:29 +00:00
Johannes Weiss
7b7fcf09be port to NIO 2 (#24)
Motivation:

NIO 2 is the new hot stuff.

Modifications:

port to NIO 2

Result:

newer, shinier
2019-02-26 13:01:48 +00:00
Johannes Weiß
51c2dfb37b require Swift 4.1 (#6)
Motivation:

As swift-nio-extras is new, we can require Swift 4.1 which will allow us
to CI less stuff and also won't compatibility stuff for 4.0 that nobody
uses anymore.

Modifications:

require Swift 4.1

Result:

shinier
2018-05-23 16:32:57 +01:00
Johannes Weiß
4b14b7f2b1 quiescing helper & demo (#2)
Motivation:

In a few cases quiescing a server application is useful but it's harder
than necessary with core-NIO. Therefore this adds a helper & a
demonstration.

Modifications:

- add `QuiescingHelper` which helps users to quiesce a channel by
  collecting all accepted channels and when needed sends them the
  quiescing user event. When all collected channels have closed the
  user will be notified and can just shut down the ELG.
- added a demo implementation with a simple HTTP server that quiesces
  when receiving a signal

Result:

Make it quite easy to quiesce a server and show users how to do it.
2018-05-17 20:27:15 +02:00