|
32 | 32 | use async_std::{io, task};
|
33 | 33 | use futures::prelude::*;
|
34 | 34 | use libp2p::kad::record::store::MemoryStore;
|
35 |
| -use libp2p::kad::{record::Key, Kademlia, KademliaEvent, PutRecordOk, Quorum, Record}; |
| 35 | +use libp2p::kad::{ |
| 36 | + record::Key, |
| 37 | + Kademlia, |
| 38 | + KademliaEvent, |
| 39 | + PutRecordOk, |
| 40 | + QueryResult, |
| 41 | + Quorum, |
| 42 | + Record |
| 43 | +}; |
36 | 44 | use libp2p::{
|
37 | 45 | NetworkBehaviour,
|
38 | 46 | PeerId,
|
@@ -76,26 +84,29 @@ fn main() -> Result<(), Box<dyn Error>> {
|
76 | 84 | // Called when `kademlia` produces an event.
|
77 | 85 | fn inject_event(&mut self, message: KademliaEvent) {
|
78 | 86 | match message {
|
79 |
| - KademliaEvent::GetRecordResult(Ok(result)) => { |
80 |
| - for Record { key, value, .. } in result.records { |
| 87 | + KademliaEvent::QueryResult { result, .. } => match result { |
| 88 | + QueryResult::GetRecord(Ok(ok)) => { |
| 89 | + for Record { key, value, .. } in ok.records { |
| 90 | + println!( |
| 91 | + "Got record {:?} {:?}", |
| 92 | + std::str::from_utf8(key.as_ref()).unwrap(), |
| 93 | + std::str::from_utf8(&value).unwrap(), |
| 94 | + ); |
| 95 | + } |
| 96 | + } |
| 97 | + QueryResult::GetRecord(Err(err)) => { |
| 98 | + eprintln!("Failed to get record: {:?}", err); |
| 99 | + } |
| 100 | + QueryResult::PutRecord(Ok(PutRecordOk { key })) => { |
81 | 101 | println!(
|
82 |
| - "Got record {:?} {:?}", |
83 |
| - std::str::from_utf8(key.as_ref()).unwrap(), |
84 |
| - std::str::from_utf8(&value).unwrap(), |
| 102 | + "Successfully put record {:?}", |
| 103 | + std::str::from_utf8(key.as_ref()).unwrap() |
85 | 104 | );
|
86 | 105 | }
|
87 |
| - } |
88 |
| - KademliaEvent::GetRecordResult(Err(err)) => { |
89 |
| - eprintln!("Failed to get record: {:?}", err); |
90 |
| - } |
91 |
| - KademliaEvent::PutRecordResult(Ok(PutRecordOk { key })) => { |
92 |
| - println!( |
93 |
| - "Successfully put record {:?}", |
94 |
| - std::str::from_utf8(key.as_ref()).unwrap() |
95 |
| - ); |
96 |
| - } |
97 |
| - KademliaEvent::PutRecordResult(Err(err)) => { |
98 |
| - eprintln!("Failed to put record: {:?}", err); |
| 106 | + QueryResult::PutRecord(Err(err)) => { |
| 107 | + eprintln!("Failed to put record: {:?}", err); |
| 108 | + } |
| 109 | + _ => {} |
99 | 110 | }
|
100 | 111 | _ => {}
|
101 | 112 | }
|
@@ -188,7 +199,7 @@ fn handle_input_line(kademlia: &mut Kademlia<MemoryStore>, line: String) {
|
188 | 199 | publisher: None,
|
189 | 200 | expires: None,
|
190 | 201 | };
|
191 |
| - kademlia.put_record(record, Quorum::One); |
| 202 | + kademlia.put_record(record, Quorum::One).expect("Failed to store record locally."); |
192 | 203 | }
|
193 | 204 | _ => {
|
194 | 205 | eprintln!("expected GET or PUT");
|
|
0 commit comments