January 2018
Beginner to intermediate
454 pages
10h 8m
English
Our handle_cmd() method does nothing, for now, so let's update it. First of all, we'll need a method to send a response to a client:
impl Client {
#[async]
fn send(mut self, answer: Answer) -> Result<Self> {
self.writer = await!(self.writer.send(answer))?;
Ok(self)
}
}
This simply calls the send() method of the writer. Since it consumes it, we reassign the result to the attribute.
Now, we'll handle the USER FTP command:
#[async] fn handle_cmd(mut self, cmd: Command) -> Result<Self> { println!("Received command: {:?}", cmd); match cmd { Command::User(content) => { if content.is_empty() { self = await! (self.send(Answer::new(ResultCode::InvalidParameterOrArgument, "Invalid username")))?; } else { self = await!(self.send(Answer::new(ResultCode::UserLoggedIn, ...