Commit Graph

465 Commits

Author SHA1 Message Date
6cde480c29 Fix Transport::and_then (#690) 2018-11-27 19:13:34 +01:00
e12795d1e6 Fix the custom derive (#689)
* Fix the custom derive

* Concern
2018-11-27 16:10:34 +01:00
45114aef46 Move the Swarm in its own module (#681) 2018-11-27 11:22:55 +01:00
d7ac755773 Avoid boxing in transport combinators. (#671)
Also use `ConnectedPoint` instead of `Endpoint` as parameter for mapping
function to align with `transport::and_then`.
2018-11-26 15:12:48 +01:00
dc55b00730 Split the protocols_handler.rs module into multiple submodules (#680)
* Rename protocols_handler.rs to protocols_handler/mod.rs

* Move DummyProtocolsHandler out of the module

* Extract ProtocolsHandlerSelect

* Extract NodeHandlerWrapper
2018-11-26 14:01:08 +01:00
d130302e15 Remove several unused transports. (#673) 2018-11-26 13:46:34 +01:00
9fe7d56410 Tests for RawSwarm (#602)
* 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

* whitespace and spelling

* WIP tests for handled_node_tasks:Task

* wip

* Move Handler related code to dummy_handler

* Sort out the events going to/from node

* WIP tests for poll

* Add a TestBuilder for NodeTask tests
More NodeTask tests

* Fixes broken test after upstream changes

* Clarify the behaviour of is_shutting_down

* Fix broken test

* Test for task exit when muxers in- and outbound are closed

* Add question about impossible Async::NotReady

* Fix tests after recent changes on master

* Upstream changes

* Tests for HandledNodesTasks

* Add test for HandledNodesTasks poll

* Test we reach all nodes and then closed all nodes

* Test event emission by HandledNodesTasks

* Test starting CollectionStream

* Test that we can reach a peer after a successful connection

* Assert collection contains what we expect

* Test handler events get to the collectionstream

* Remaining tests for CollectionStream

* Run tests on single threaded runtime to avoid intermittent failures

* Remove call to shutdown – not needed

* No need to specify tokio version

* Change the DummyTransport Output type to match RawSwarm

* First few tests for RawSwarm
Whitespace: spaces

* Dummy impl of `dial()`

* Typos/grammar in docs

* Impl Debug for RawSwarmEvent and Peer
Test dialing peer without peer id

* Test num_incoming_negotiated

* A few more tests

* whitespace

* Add derive(Debug) for RawSwarm, ReachAttempts, PeerPendingConnect, PeerNotConnected
Fix intermittent test failures by polling repeatedly when getting NotReady
Add more tests

* Outline remaining work

* Test more error conditions

* wip

* Test error conditions

* Remove debug statements

* typo

* whitespace

* Use PeerId::random

* Uneeded dependency

* Use PeerId::random

* Somewhat less artificial nat_traversal test

* Use the IPv6 "black hole" prefix as an "unreachable" multiaddr

* Use a boolean on DummyTransport to make dial attempts fail

* No funny stuff for nat_traversal
2018-11-26 08:57:19 +01:00
1b05132d6a Add libp2p-mdns (#590)
* Add libp2p-mdns

* Fix win32

* Make compatible with Rust 1.29

* Remove mDNS on esmcripten

* Fix concerns

* More concern

* Use append_u16

* Make decode_character_string return a Cow

* Add TODO

* Don't send queries from 5353

* Fix flags

* More flags fix

* More concerns

* Fix flags

* Fix removed env_logger
2018-11-24 13:55:18 +01:00
1da97242da Remove the NamesIter: Clone requirement (#663)
* Remove the NamesIter: Clone requirement

* Fix concerns
2018-11-22 18:15:35 +01:00
31962f5920 A few typos (#666) 2018-11-20 21:31:09 +01:00
938b91742f Add EitherUpgrade and generalise OrUpgrade. (#662) 2018-11-20 15:09:59 +01:00
b213fd7bd7 Add PeerId::random() (#661) 2018-11-20 13:44:36 +01:00
080a75451f Floodsub chat example (#641)
* Add a floodsub example with the new Swarm

* WIP fixes for Floodsub chat-example code

* cleanup

* Address grumbles

* Update docs

* Update to newest master
2018-11-20 10:35:22 +01:00
afa54085d5 Remove trivial todo (#657) 2018-11-19 22:28:48 +01:00
64af676178 Fix mapping of upgrade errors. (#656)
The current implementation of `MapUpgradeErr` implements `InboundUpgrade`
and `OutboundUpgrade` and applies the transformation in both cases which
means that mapping is always applied to inbound and outbound upgrade
errors. This commit uses separate `MapInboundUpgradeErr` and
`MapOutboundUpgradeErr` types which implements both traits but only map
errors in one direction.
2018-11-19 16:08:00 +01:00
e7bffd009f Add upgrade::apply for convenience. (#653) 2018-11-19 15:19:07 +01:00
1d1970c772 Fix mapping of upgrade. (#654)
The current implementation of `MapUpgrade` implements `InboundUpgrade`
and `OutboundUpgrade` and applies the transformation in both cases which
means that mapping is always applied to inbound and outbound upgrades.
This commit uses separate `MapInboundUpgrade` and `MapOutboundUpgrade`
types which implements both traits but only map in one direction.
2018-11-19 10:58:45 +01:00
37994b34e7 Behavior -> Behaviour (#650) 2018-11-16 12:59:57 +01:00
8b6bdd5554 Tests for CollectionStream (#588)
* 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

* whitespace and spelling

* WIP tests for handled_node_tasks:Task

* wip

* Move Handler related code to dummy_handler

* Sort out the events going to/from node

* WIP tests for poll

* Add a TestBuilder for NodeTask tests
More NodeTask tests

* Fixes broken test after upstream changes

* Clarify the behaviour of is_shutting_down

* Fix broken test

* Test for task exit when muxers in- and outbound are closed

* Add question about impossible Async::NotReady

* Fix tests after recent changes on master

* Upstream changes

* Tests for HandledNodesTasks

* Add test for HandledNodesTasks poll

* Test we reach all nodes and then closed all nodes

* Test event emission by HandledNodesTasks

* Test starting CollectionStream

* Test that we can reach a peer after a successful connection

* Assert collection contains what we expect

* Test handler events get to the collectionstream

* Remaining tests for CollectionStream

* Run tests on single threaded runtime to avoid intermittent failures

* Remove call to shutdown – not needed

* No need to specify tokio version

* Rustfmt

* More rustfmt

* Less noise

* cleanup

* Address grumbles

* Better debug impl for HandledNodesTasks

* Remove tests for Task we don't need
Test Task.send_event() and id() using a HandledNodesTasks

* Rename test builders

* Don't organise tests in submodules

* whitespace

* Revert changes to Debug impl for HandledNodesTasks

* Cleanup

* cleanup

* Address concerns

* Fix tests
2018-11-16 12:38:23 +01:00
413fb79208 Document the muxing module (#647)
* Document the muxing module

* Apply suggestions from code review

Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>
2018-11-16 12:24:12 +01:00
146817d7d9 Document the core::upgrade module (#644)
* Document the upgrade module

* Apply suggestions from code review

Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>

* More fixes
2018-11-16 12:11:44 +01:00
1c9091655b Move protocols_handler to the root (#643) 2018-11-15 18:39:20 +01:00
2e549884ef Split ConnectionUpgrade. (#642)
Introduce `InboundUpgrade` and `OutboundUpgrade`.
2018-11-15 17:41:11 +01:00
466385a58a Add an impl Debug for HandledNode (#628)
* Add an impl Debug for HandledNode

* Update core/src/nodes/handled_node.rs

Co-Authored-By: jamesray1 <16969914+jamesray1@users.noreply.github.com>

* Update core/src/nodes/handled_node.rs

Co-Authored-By: jamesray1 <16969914+jamesray1@users.noreply.github.com>

* Update core/src/nodes/handled_node.rs

Co-Authored-By: jamesray1 <16969914+jamesray1@users.noreply.github.com>

* Update core/src/nodes/handled_node.rs

Co-Authored-By: jamesray1 <16969914+jamesray1@users.noreply.github.com>
2018-11-15 11:22:45 +01:00
513b97b015 Tests for HandledNodesTasks (#584)
* 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

* whitespace and spelling

* WIP tests for handled_node_tasks:Task

* wip

* Move Handler related code to dummy_handler

* Sort out the events going to/from node

* WIP tests for poll

* Add a TestBuilder for NodeTask tests
More NodeTask tests

* Fixes broken test after upstream changes

* Clarify the behaviour of is_shutting_down

* Fix broken test

* Test for task exit when muxers in- and outbound are closed

* Add question about impossible Async::NotReady

* Fix tests after recent changes on master

* Upstream changes

* Tests for HandledNodesTasks

* Add test for HandledNodesTasks poll

* Test we reach all nodes and then closed all nodes

* Test event emission by HandledNodesTasks

* Rustfmt

* More rustfmt

* Less noise

* cleanup

* Address grumbles

* Better debug impl for HandledNodesTasks

* Remove tests for Task we don't need
Test Task.send_event() and id() using a HandledNodesTasks

* Rename test builders

* Don't organise tests in submodules

* whitespace

* Revert changes to Debug impl for HandledNodesTasks
2018-11-14 11:51:38 +01:00
9b47dd5385 Tweaks, spelling and grammar (#629) 2018-11-13 21:29:33 +01:00
623728b35d Add a custom derive for NetworkBehaviour (#619)
* Add ProtocolsHandlerSelect

* Add a custom derive for NetworkBehaviour

* Remove 2018 edition

* More work

* Update the tests and work

* Allow ignored fields

* More fixes

* Give access to everything in the poll method
2018-11-12 17:12:47 +01:00
d961e656a7 Use vecdeque for fair polling (#610)
* WIP

* Use pop_back()
Improve tests

* Avoid unwrapping

* Update core/src/nodes/listeners.rs

Co-Authored-By: dvdplm <dvdplm@gmail.com>
2018-11-08 14:55:54 +01:00
c04d0fe797 Add back the Swarm (#613) 2018-11-07 19:29:07 +01:00
61f280f3ef Fix grammar in core/nodes etc. (#608)
* Fix grammar

* Nothing we can *do* except ...

* Implementer

* Implementation
2018-11-07 17:01:33 +01:00
1b4dada4d0 Inject event by value in ProtocolsHandler (#605) 2018-11-05 16:53:04 +01:00
4405518045 Add a PeriodicPingHandler and a PingListenHandler (#574)
* 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
2018-11-04 09:47:15 +01:00
631ceaea4b Fix stack overflow when printing a SubstreamRef (#599)
* Fix stack overflow when printing a SubstreamRef

* Fix concern

* More problems
2018-11-03 09:54:31 +01:00
0f3ef5ee0a eg. -> e.g.; ie. -> i.e. via repren (#592)
* eg. -> e.g.; ie. -> i.e. via repren

* se.g. -> seg.
2018-11-02 16:40:00 +01:00
437a8c0fde Tests for HandledNode (#546)
* 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
2018-11-02 14:12:21 +01:00
9249e31218 Some minor fixes reported by clippy (#600) 2018-11-02 13:15:17 +01:00
c730b4b3c9 Add ProtocolsHandler trait (#573)
* Add ProtocolsHandler trait

* Reexport symbols

* Add a note about shutting down

* Add map_protocol

* Add a NodeHandlerWrapperBuilder

* Update core/src/nodes/protocols_handler.rs

Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>

* Fix compilation
2018-11-01 11:06:32 +01:00
45cd7db6e9 Remove spaces before semicolons (#591) 2018-10-29 10:38:32 +01:00
585c90a33c Add protocol to report external address view. (#566)
Add protocol to report external address view.

Address part of #443.
2018-10-28 11:02:26 +01:00
490ae980c7 #399 remove tokio_current_thread tests (#577)
* 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.
2018-10-25 11:26:37 +02:00
4a894851ab Remove even more unused files (#581)
* Remove even more unused files

* Remove dummy.rs as well
2018-10-23 12:07:06 +02:00
de26ba1d2d Fix the polling process in handled node (#582) 2018-10-20 13:12:05 +02:00
a77c1a6bf7 Fix panic in raw swarm (#571) 2018-10-18 09:42:20 +01:00
840663e181 Remove two unused files (#567) 2018-10-17 12:26:42 +01:00
5d1c54cc10 New core (#568)
* New core

* Fix lifetime requirements

* Remove identify transport

* Address &mut & ref ref mut

* Fix whitespaces
2018-10-17 10:17:40 +01:00
724d0f5d82 Remove the old API (#565)
* Remove the old API

* Fix integration test
2018-10-15 16:17:55 +01:00
2c98d06942 Change some nat_traversals to consider a prefix. (#550)
Change some `nat_traversal`s to consider a prefix.

Transports should consider only the relevant address prefix.
2018-10-15 16:29:32 +02:00
e179951c74 Add some documentation to listeners stream (#547)
* Add some documentation to listeners stream

* Fix concern
2018-10-15 11:12:40 +02:00
7d1a0238de Add shutdown functionality to NodeStream. (#560)
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.
2018-10-15 10:42:11 +02:00
7016b86b3a Add StreamMuxer::flush. (#534)
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`.
2018-10-11 10:35:14 +02:00