community: the drawer asks a peer for its card and the server for interests, and discover gets the similar-users shelf
This commit is contained in:
1 parent
64a7561750
commit
5160d97a5f
10 files changed
+412
-2
No files matched your search
@@ -125,6 +125,11 @@ pub fn browse_request() -> Vec<u8> {
|
||||
Writer::new().finish_u32(code::BROWSE_REQUEST)
|
||||
}
|
||||
|
||||
/// Ask a peer for their user-info card (code 15; answered with code 16).
|
||||
pub fn user_info_request() -> Vec<u8> {
|
||||
Writer::new().finish_u32(code::USER_INFO_REQUEST)
|
||||
}
|
||||
|
||||
/// Legacy enqueue message; some clients expect it before TransferRequest.
|
||||
pub fn queue_download(filename: &str) -> Vec<u8> {
|
||||
Writer::new()
|
||||
@@ -247,6 +252,15 @@ pub enum PeerEvent {
|
||||
UploadFailed {
|
||||
filename: String,
|
||||
},
|
||||
/// A peer's user-info card, the answer to our user_info_request.
|
||||
UserInfoResponse {
|
||||
description: String,
|
||||
/// Raw bytes as sent — hostile input until decoded under limits.
|
||||
picture: Option<Vec<u8>>,
|
||||
total_uploads: u32,
|
||||
queue_size: u32,
|
||||
has_free_slot: bool,
|
||||
},
|
||||
// Requests other peers make of us (M5 responder):
|
||||
BrowseRequest,
|
||||
UserInfoRequest,
|
||||
@@ -320,6 +334,17 @@ pub fn decode(code: u32, payload: Bytes) -> Result<PeerEvent> {
|
||||
code::UPLOAD_FAILED => PeerEvent::UploadFailed {
|
||||
filename: r.string()?,
|
||||
},
|
||||
code::USER_INFO_RESPONSE => {
|
||||
let description = r.string()?;
|
||||
let picture = if r.bool()? { Some(r.bytes()?.to_vec()) } else { None };
|
||||
PeerEvent::UserInfoResponse {
|
||||
description,
|
||||
picture,
|
||||
total_uploads: r.u32()?,
|
||||
queue_size: r.u32()?,
|
||||
has_free_slot: r.bool().unwrap_or(false),
|
||||
}
|
||||
}
|
||||
code::BROWSE_REQUEST => PeerEvent::BrowseRequest,
|
||||
code::USER_INFO_REQUEST => PeerEvent::UserInfoRequest,
|
||||
code::FOLDER_CONTENTS_REQUEST => PeerEvent::FolderContentsRequest {
|
||||
|
||||
Reference in new issue
Block a user