ciri-p2p 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ciri/p2p/discovery/service.rb +1 -1
- data/lib/ciri/p2p/network_state.rb +5 -4
- data/lib/ciri/p2p/protocol_context.rb +19 -1
- data/lib/ciri/p2p/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 812787a199fb23a823439aa870a3c80c33f8acc6522b2e3bb5cc7f5993bf8afa
|
4
|
+
data.tar.gz: 945d1e1e5cde2adc55e3d6cd9e3c7ad214712325499417e222fb520bd644d1e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b5011a0fb16a3c1937a60b8f7cc7e5a9665ab33b425333dc1c0334eb2ac8b895f4151ffc6682918952440412e3ce7fba9975aaa4675d3b23d9b43f6529afc5b
|
7
|
+
data.tar.gz: 3900551a9e53ecc7504f99c535201ba1431072d36bb383212959f14e6b8f9bbb68ff8126b8c19e4a872054af2d4e8a7f7837e468776d995215028bacd7bde1b5
|
data/Gemfile.lock
CHANGED
@@ -94,7 +94,7 @@ module Ciri
|
|
94
94
|
@udp_port = @local_address.ip_port
|
95
95
|
end
|
96
96
|
|
97
|
-
|
97
|
+
info "start discovery server on udp_port: #{@udp_port} tcp_port: #{@tcp_port}\nlocal_node_id: #{@local_node_id}"
|
98
98
|
|
99
99
|
loop do
|
100
100
|
# read discovery message
|
@@ -53,7 +53,7 @@ module Ciri
|
|
53
53
|
def initialize_protocols(task: Async::Task.current)
|
54
54
|
# initialize protocols
|
55
55
|
@protocols.each do |protocol|
|
56
|
-
context = ProtocolContext.new(self)
|
56
|
+
context = ProtocolContext.new(self, protocol: protocol)
|
57
57
|
task.async {protocol.initialized(context)}
|
58
58
|
end
|
59
59
|
end
|
@@ -75,7 +75,7 @@ module Ciri
|
|
75
75
|
# check peers
|
76
76
|
protocol_handshake_checks(handshake)
|
77
77
|
@peers[peer.raw_node_id] = peer
|
78
|
-
|
78
|
+
info "[#{local_node_id.short_hex}] connect to new peer #{peer.inspect}"
|
79
79
|
@peer_store.update_peer_status(peer.raw_node_id, PeerStore::Status::CONNECTED)
|
80
80
|
# run peer logic
|
81
81
|
task.async do
|
@@ -89,7 +89,7 @@ module Ciri
|
|
89
89
|
@peers_lock.acquire do
|
90
90
|
# only disconnect from peers if direction correct to avoiding delete peer by mistake
|
91
91
|
if (exist_peer = @peers[peer.raw_node_id]) && exist_peer.direction == peer.direction
|
92
|
-
|
92
|
+
info("[#{local_node_id.short_hex}] disconnect peer: #{peer.inspect}, reason: #{reason}")
|
93
93
|
remove_peer(peer)
|
94
94
|
peer.disconnect
|
95
95
|
@peer_store.update_peer_status(peer.raw_node_id, PeerStore::Status::DISCONNECTED)
|
@@ -166,7 +166,8 @@ module Ciri
|
|
166
166
|
handle_message(peer, msg)
|
167
167
|
end
|
168
168
|
rescue StandardError => e
|
169
|
-
disconnect_peer(peer, reason: "io error: #{e}
|
169
|
+
disconnect_peer(peer, reason: "io error: #{e}")
|
170
|
+
error("io error: #{e}\n#{e.backtrace.join "\n"}")
|
170
171
|
end
|
171
172
|
|
172
173
|
message_service.wait
|
@@ -34,7 +34,6 @@ module Ciri
|
|
34
34
|
|
35
35
|
attr_reader :peer, :protocol, :protocol_io
|
36
36
|
|
37
|
-
def_delegators :protocol_io, :send_data
|
38
37
|
def_delegators :@network_state, :local_node_id
|
39
38
|
|
40
39
|
def initialize(network_state, peer: nil, protocol: nil, protocol_io: nil)
|
@@ -44,9 +43,28 @@ module Ciri
|
|
44
43
|
@protocol_io = protocol_io
|
45
44
|
end
|
46
45
|
|
46
|
+
def send_data(code, data, peer: self.peer, protocol: self.protocol.name)
|
47
|
+
ensure_peer(peer).find_protocol_io(protocol).send_data(code, data)
|
48
|
+
end
|
49
|
+
|
47
50
|
def raw_local_node_id
|
48
51
|
@raw_local_node_id ||= local_node_id.to_bytes
|
49
52
|
end
|
53
|
+
|
54
|
+
def peers
|
55
|
+
@network_state.peers.values
|
56
|
+
end
|
57
|
+
|
58
|
+
def find_peer(raw_node_id)
|
59
|
+
@network_state.peers[raw_node_id]
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def ensure_peer(peer)
|
65
|
+
return peer if peer.is_a?(P2P::Peer)
|
66
|
+
@network_state.peers[peer]
|
67
|
+
end
|
50
68
|
end
|
51
69
|
|
52
70
|
end
|
data/lib/ciri/p2p/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ciri-p2p
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jjy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ciri-utils
|