Browse Source

Implement Proto{De,En}code for FileSearchResponse.

wip
Titouan Rigoudy 7 years ago
parent
commit
a4bc28fc93
1 changed files with 40 additions and 1 deletions
  1. +40
    -1
      src/proto/server/response.rs

+ 40
- 1
src/proto/server/response.rs View File

@ -106,6 +106,10 @@ impl ProtoEncode for ServerResponse {
encoder.encode_u32(CODE_CONNECT_TO_PEER)?; encoder.encode_u32(CODE_CONNECT_TO_PEER)?;
response.encode(encoder)?; response.encode(encoder)?;
}, },
ServerResponse::FileSearchResponse(ref response) => {
encoder.encode_u32(CODE_FILE_SEARCH)?;
response.encode(encoder)?;
},
_ => { _ => {
unimplemented!(); unimplemented!();
}, },
@ -122,6 +126,10 @@ impl ProtoDecode for ServerResponse {
let response = ConnectToPeerResponse::decode(decoder)?; let response = ConnectToPeerResponse::decode(decoder)?;
ServerResponse::ConnectToPeerResponse(response) ServerResponse::ConnectToPeerResponse(response)
}, },
CODE_FILE_SEARCH => {
let response = FileSearchResponse::decode(decoder)?;
ServerResponse::FileSearchResponse(response)
},
_ => { _ => {
return Err(DecodeError::UnknownCodeError(code)); return Err(DecodeError::UnknownCodeError(code));
}, },
@ -199,7 +207,7 @@ impl ProtoDecode for ConnectToPeerResponse {
* FILE SEARCH * * FILE SEARCH *
*=============*/ *=============*/
#[derive(Debug)]
#[derive(Debug, Eq, PartialEq)]
pub struct FileSearchResponse { pub struct FileSearchResponse {
pub user_name: String, pub user_name: String,
pub ticket: u32, pub ticket: u32,
@ -220,6 +228,28 @@ impl ReadFromPacket for FileSearchResponse {
} }
} }
impl ProtoEncode for FileSearchResponse {
fn encode(&self, encoder: &mut ProtoEncoder) -> Result<(), io::Error> {
encoder.encode_string(&self.user_name)?;
encoder.encode_u32(self.ticket)?;
encoder.encode_string(&self.query)
}
}
impl ProtoDecode for FileSearchResponse {
fn decode(decoder: &mut ProtoDecoder) -> Result<Self, DecodeError> {
let user_name = decoder.decode_string()?;
let ticket = decoder.decode_u32()?;
let query = decoder.decode_string()?;
Ok(FileSearchResponse {
user_name: user_name,
ticket: ticket,
query: query,
})
}
}
/*=======* /*=======*
* LOGIN * * LOGIN *
*=======*/ *=======*/
@ -721,4 +751,13 @@ mod tests {
is_privileged: true, is_privileged: true,
}) })
} }
#[test]
fn roundtrip_file_search() {
roundtrip(FileSearchResponse {
user_name: "alice".to_string(),
ticket: 1337,
query: "foo.txt".to_string(),
})
}
} }

Loading…
Cancel
Save