* Add ProtocolsHandler trait
* Reexport symbols
* Add a note about shutting down
* Add a PeriodicPingHandler and a PingListenHandler
* Fix core doctest
* Add tolerating not supported
* Fix concerns
* Add unit tests for core::nodes::NodeStream
* Move DummyMuxer to core/tests
* Address grumbles
* Impl Debug for SubstreamRef<P>
* Add test for poll()
* Don't need to open a substream
* pretty printer test
* More tests for NodeStream poll()
* ListenerStream unit tests: transport() and listeners()
* Tests for nodes/listeners.rs
* Add a few tests to help illustrate the "drowning" behaviour of busy listeners
* Tests for HandledNode
* Address grumbles
* Remove non-project specific stuff
* Address grumbles
* Prefer freestanding function
* Untangle the code for old shutdown test from the new tests
Add HandlerState and use it in TestBuilder
Shorter test names
* WIP – tests pass
* Use a newtype to lighten up the function signatures a bit
Test NotReady case
* Cleanup Event enum
Track events as they reach the Handler
Describe complex test logic
* Assert on the event trace
* More tests for poll()
* Switch to using usize as the OutboundOpenInfo so we can assert on event contents
More tests for poll()
* whitespace
* Move Handler related code to dummy_handler
* Fixes broken test after upstream changes
* Clarify the behaviour of is_shutting_down
* Fix broken test
* Fix tests after recent changes on master
* no tabs
* whitespace
* rustfmt
* Add public HandledNode.handler() method that returns a ref to the NodeHandler
Don't use private members in tests
* Add HandledNode.handler_mut that returns a mutable ref to the NodeHandler
* Remove debugging stmts
* Fix parse error
* remove tokio_current_thread tests
* Review changes:
Removed newline
Moved uds tokio test crate to top to avoid self and keep with convention of other test crates
Removed sleep from uds test and block until all futures are completed.
Add shutdown functionality to `NodeStream`.
Add `NodeStream::shutdown` to allow triggering the shutdown process,
and `NodeStream::poll_shutdown` as the internal way to drive any
potential shutdown to completion.
Update the `StreamMuxer` trait.
- `read_substream`, `write_substream` and `flush_substream` now return `Poll` instead of `Result`.
- A new `Shutdown` enum allows for half-closing of substreams and is used in `shutdown_substream`.
- `close_inbound` and `close_outbound` have been merged into `shutdown` which takes a `Shutdown` parameter to allow closing only one direction.
- Add a new `flush_all` method to allow flushing after a series of actions (e.g. multiple `shutdown_substream`).
W.r.t. flushing the general idea is that normal use drains buffers over time. Shutting down a substream does not imply flushing, so can be followed by `flush_substream` or (if multiple substreams are to be shut down) a single `flush_all`. Shutting down the muxer itself proceeds likewise, i.e. `shutdown` followed by `flush_all`.
* Add unit tests for core::nodes::NodeStream
* Move DummyMuxer to core/tests
* Address grumbles
* Impl Debug for SubstreamRef<P>
* Add test for poll()
* Don't need to open a substream
* pretty printer test
* More tests for NodeStream poll()
* ListenerStream unit tests: transport() and listeners()
* Tests for nodes/listeners.rs
* Add a few tests to help illustrate the "drowning" behaviour of busy listeners
* Address grumbles
* Remove non-project specific stuff
* Address grumbles
* Prefer freestanding function
* Add unit tests for core::nodes::NodeStream
* Move DummyMuxer to core/tests
* Address grumbles
* Impl Debug for SubstreamRef<P>
* Add test for poll()
* Don't need to open a substream
* pretty printer test
* More tests for NodeStream poll()
* Remove contentious test of Debug
* Provide poll() as a regular method when we can't fail
* Add a CollectionReachEvent that allows accepting
* Add small TODO in handled_node
* Implement Debug on collection events
* Implement Debug for CollectionStream
* Implement Debug for structs in handled_node_tasks
* Attempt to fix compilation errors with stable Rust
* Prove the unwrap
Refactor multiaddr crate.
- Remove `AddrComponent`. Instead `Protocol` directly contains its
associated data.
- Various smaller changes around conversions to Multiaddr from other
types, e.g. socket addresses.
- Expand tests to include property tests which test encoding/decoding
identity.
* Rewrite the swarm
* Small improvement to Debug of ListenersStream
* Fix Swarm::Replaced never being produced
* Fix logic problem when reaching a node in swarm
* Small comment in swarm
* Add closed_multiaddr to Replaced event
* Add address to NodeClosed and NodeError
* Fix concerns
* Remove StreamMuxer::boxed
* The SwarmFuture is now a Stream
* Return the produced future in the message
* Remove IncomingConnection event
* Pass error when failing to dial
* Fix loop break mistake
* Fix concern
* Rename SwarmFuture to SwarmEvents
* Increase type length limit
* Remove todo