1930 Commits

Author SHA1 Message Date
Toralf Wittner
740efd31ad Depend on tokio-io and tokio-executor. (#210)
Addresses issue #204.
2018-05-23 13:28:40 +02:00
Pierre Krieger
41753d8c8e
Build libp2p on emscripten on circle-ci (#207) 2018-05-23 13:10:54 +02:00
Pierre Krieger
a163e81e30
Rename EitherSocket to EitherOutput (#201) 2018-05-23 11:45:35 +02:00
Pierre Krieger
b7065de672
Make the libp2p facade compilable for emscripten (#205) 2018-05-23 11:22:49 +02:00
Pierre Krieger
e5f23c74c0
Remove dial_custom_handler (#203)
* Remove dial_custom_handler

* Rename dial_to_handler to dial
2018-05-22 18:58:27 +02:00
Pierre Krieger
6d41923ca5
Update num-bigint (#202) 2018-05-22 16:35:13 +02:00
Pierre Krieger
d51321f5dd
Move the examples to the facade crate (#197) 2018-05-21 18:49:02 +02:00
Toralf Wittner
5f6e215ec1
Update to protobuf >= 2 (#199) 2018-05-21 17:32:59 +02:00
Toralf Wittner
250af629ee
Use loop to poll FuturesUnordered after push. (#198)
Fixes #190.
2018-05-21 16:27:03 +02:00
Pierre Krieger
3dacc9009e
Add the two missing libraries from the facade (#196) 2018-05-20 10:11:42 +02:00
Pierre Krieger
a282434d5d
Add a libp2p facade crate (#191)
* Add a libp2p facade crate

* Remove secio for now

* Reexport peerstore and PeerId

* Also reexport swarm()
2018-05-18 14:56:11 +02:00
Toralf Wittner
d394ea0e19
Add /libp2p/circuit/relay/0.1.0 protocol support. (#175)
Add `/libp2p/circuit/relay/0.1.0` protocol support.
2018-05-18 13:13:05 +02:00
Toralf Wittner
15540a34c2
Add missing check for read of 0 bytes. (#194)
Forgot this one in PR #178.
2018-05-17 15:29:27 +02:00
Toralf Wittner
86a21fc43e
Remove all targets from log statements. (#195)
The default uses crate + module path anyway, so `target` has been
redundant, causes more work when renaming crates and makes log
lines longer.
2018-05-17 15:14:13 +02:00
Pierre Krieger
cb800624f5
Change Transport::Dial to be Future and not IntoFuture (#193) 2018-05-17 13:09:22 +02:00
Pierre Krieger
5c1890e66a
Rename libp2p_swarm to libp2p_core (#189) 2018-05-16 12:59:36 +02:00
Pierre Krieger
dc6d4df3f8
IdentifyTransport now outputs the observed addr (#188) 2018-05-15 11:30:57 +02:00
Pierre Krieger
f787f3d8b8
Swarm rework (#182)
* Rename Transport::RawConn to Output

* Remove AsyncRead + AsyncWrite bound on Transport::Output

* UpgradedNode now always implements Transport

* Add and tweak modifiers for Transport and ConnectionUpgrade

* Secio upgrade now returns the pubkey in its output

* Add upgrade::apply

* Add Transport::and_then

* Rework the swarm

* Rustfmt

* Fix concerns
2018-05-14 15:55:16 +02:00
Toralf Wittner
4382adcbde connection_reuse: drop dead connections. (#178)
Currently, connection substreams are added to
`connection_reuse::Shared::active_connections`, but never removed. This
is not least because the `StreamMuxer` trait defines its inbound and
outbound substream futures to always yield a substream and contains no
provision to signal that no more substreams can be created, which would
allow client code (e.g. `ConnectionReuse`) to detect this and purge its
caches.

This PR defines the `StreamMuxer` trait to optionally yield
inbound/outbound substreams and changes `libp2p-mplex` to handle
stream EOFs by marking the underlying resource as closed.
`ConnectionReuse` will remove stream muxers from its active connections
cache if a `None` substream is returned.
2018-05-14 14:49:29 +02:00
Pierre Krieger
11f655dd6a
Pin protobuf to 1.4 (#184) 2018-05-14 11:04:05 +02:00
Pierre Krieger
ff7a191892
Remove the style check on travis (#186) 2018-05-14 10:39:49 +02:00
Pierre Krieger
37881d511e
Pass the host name with websockets (#177) 2018-05-08 22:07:07 +02:00
Toralf Wittner
64278244de Add log statements to multistream-select. (#180)
Addresses issue #126.
2018-05-08 20:43:00 +02:00
Pierre Krieger
d9e1e437b8
Try fix circleci again (#181) 2018-05-08 20:09:41 +02:00
Toralf Wittner
773cf6c26d Add log statements to libp2p-mplex. (#179)
* Add log statements to libp2p-mplex.

Addresses issue #126.

* Run `cargo fmt`.

* Wording.

* Adjust log levels.
2018-05-08 19:20:57 +02:00
Pierre Krieger
fd0d75f61e
Remove rustc-serialize (#176) 2018-05-06 17:41:06 +02:00
Pierre Krieger
9a7c278e83
Rename multiplex to libp2p-mplex (#153)
* Rename multiplex to libp2p-multiplex

* Rename multiplex to mplex

* Fmt

* Fix compilation
2018-05-04 15:27:49 +02:00
Pierre Krieger
0fb92140e1
Fix circle-ci (#174) 2018-05-04 12:22:02 +02:00
Toralf Wittner
383e16abea Return Option<bool> in PeerId::is_public_key`. (#172) 2018-05-03 15:42:50 +02:00
Toralf Wittner
d346a6f495 Refactor transport into multiple modules. (#170)
Addresses #158.

Besides the refactoring, the type `EitherIncomingStream` has been
removed as it is not used.
2018-05-02 11:50:48 +02:00
Toralf Wittner
3f2b6a5238 Add libp2p-ratelimit. (#161)
* Add libp2p-ratelimit.

* Run `cargo fmt`.

* Trigger another CI run.

* Add `target` to log statements.
2018-04-18 14:11:48 +02:00
quake wang
590bc91d59 resolve PeerInfo deserialize error (#168) 2018-04-18 10:39:42 +02:00
quake wang
96747441fc replace Vec with FuturesUnordered (#163)
* replace Vec with FuturesUnordered

* add err log
2018-04-16 11:55:16 +02:00
Pierre Krieger
2445d9e9ee
Various fixes and improvements (#166) 2018-04-11 17:32:32 +02:00
Qifan Lu
342a9f69d3 Bump multiaddr to 0.3 and remove patch in Cargo.toml (#164) 2018-04-10 18:08:01 +02:00
Toralf Wittner
3954f3a2ca Update .editorconfig to align with rustfmt. (#162)
The current settings differ from rustfmt which is used during CI runs to
check the source code format. In particular, rustfmt will replace tabs
with spaces, therefore this commit attempts to use the same settings
already for editing.
2018-04-09 10:52:25 +02:00
quake wang
4c1ab7f528 remove swarm controller from floodsub controller (#160) 2018-04-03 10:59:58 +02:00
Jef
29ca851f70 We don't need to immediately block if the cache is still filling (#155) 2018-03-21 17:08:43 +01:00
Jef
c487b489ce Add buffering to Substream using circular-buffer (#154)
* Add buffering to `Substream` using `circular-buffer`

* Fix freeze and add tests

* Fix tests

* fmt
2018-03-21 15:41:24 +01:00
Jef
5c4aefe457 Remove libp2p- prefix (#152)
* Remove `libp2p-` prefix

* More sed-fu
2018-03-20 14:44:46 +01:00
Jef
1e86c6ed35 Switch to bs (#150)
* Switch to `bs`

* fmt
2018-03-17 15:32:12 +01:00
Pierre Krieger
d6f1b9bf5b
Add logging to libp2p-swarm (#149)
* Add logging to libp2p-swarm

* Fix style
2018-03-16 16:39:02 +01:00
quake wang
a3b1d785e4 floodsub example typo (#148) 2018-03-16 12:07:55 +01:00
Pierre Krieger
18e1727842
Fix panics while logging (#140)
* Fix panic and logging

* Fix style
2018-03-15 18:03:39 +01:00
Pierre Krieger
064706be39
Add logging to the examples (#138) 2018-03-15 16:56:55 +01:00
Pierre Krieger
f81cc08027
Add logging to tcp-transport (#141) 2018-03-15 16:08:49 +01:00
Pierre Krieger
fd9349d15a
Add logging to libp2p-websocket (#142) 2018-03-15 15:45:11 +01:00
Pierre Krieger
68299c40a5
Implement Kademlia peer discovery (#120)
* Impl Clone for SwarmController and remove 'static

* Implement Kademlia

* Implement ConnectionReuse correctly

* Implement ConnectionReuse correctly

* Add some tests and fixes

* Remove useless boolean in active_connections

* Correctly run tests

* Optimize the processing

* Rustfmt on libp2p-kad

* Improve Kademlia example

* Next incoming is now in two steps

* Some work

* Remove log

* Fix dialing a node even if we already have a connection

* Add a proper PeerId to Peerstore

* Turn identify into a transport layer

* Expose the dialed multiaddress

* Add identified nodes to the peerstore

* Allow configuring the TTL of the addresses

* Split identify in two modules

* Some comments and tweaks

* Run rustfmt

* More work

* Add test and bugfix

* Fix everything

* Start transition to new identify system

* More work

* Minor style

* Start implementation of Kademlia server upgrade

* Continue implementing the Kademlia server

* Start reimplementing high-level kademlia code

* Continue reimplementing high-level code

* More work

* More work

* More work

* Fix wrong address reported when dialing

* Make it work

* Remove cluster_level field everywhere

* Fix bug in varint-rs when encoding

* More work

* More work

* More work

* More work

* More work

* Bugfix

* More work

* Implement ping

* Style in kademlia_handler

* More work

* Better error handling in query.rs

* More work

* More work

* More work

* Debug impls

* Some cleanup in swarm

* More work

* Clean up changes in swarm

* Unpublish the kbucket module

* Fix examples and some warnings

* Fix websocket browser code

* Rustfmt on libp2p-kad

* Kad initialization process

* Add logging to the example

* Fix concerns

* Fix style
2018-03-15 15:18:21 +01:00
Pierre Krieger
89f95f7136 Implement first draft of floodsub (#144)
* Implement ConnectionReuse correctly

* Add some tests and fixes

* Remove useless boolean in active_connections

* Correctly run tests

* Optimize the processing

* Next incoming is now in two steps

* Remove log

* Fix dialing a node even if we already have a connection

* Add a proper PeerId to Peerstore

* Turn identify into a transport layer

* Expose the dialed multiaddress

* Add identified nodes to the peerstore

* Allow configuring the TTL of the addresses

* Split identify in two modules

* Some comments and tweaks

* Run rustfmt

* Add test and bugfix

* Fix wrong address reported when dialing

* Switch to futures-mutex of paritytech (#113)

* Remove public key system from peerstore (#118)

* Remove public key system from peerstore

* Add comment about PartialOrd on PeerInfo

* Add a nat_traversal() method to Transport (#110)

* Add a nat_traversal() method to Transport

* Fix compilation

* Implement floodsub

* Work on a floodsub example

* Finish example

* More work

* More work

* More work

* More work

* More work

* Rustfmt

* Some style improvements

* Store the whole Topic instead of just the hash

* Add a bunch of TODOs

* Fix introduced warning

* Fix style

* Fix concerns

* Only store the hash of the values in the received messages

* Fix style

* Improve comments
2018-03-15 11:58:11 +01:00
Jef
2ffcf9eea3 Make rustfmt output human-readable (#139) 2018-03-07 20:03:22 +01:00