Skip to content

RequestResponseError が複雑なので良い感じにしたい #4

Open
@tomoyuki-nakabayashi

Description

@tomoyuki-nakabayashi

WouldBlock を共通化するなら、nb::Result どこかで導入できると、
下あたりが

loop {
let result = Response::receive_response(
&mut transport,
&mut frame_buffer,
BasicCodecFactory::new(),
);
match result {
Ok((response, mut codec)) => {
println!(
"Ok. response = {}, {}, {}, {}",
response.service,
response.request,
response.sequence,
response.is_notification
);
if let Ok(result) = codec.read_u32() {
println!("\tresult = {}", result);
} else {
println!("\tno result...");
}
break;
}
Err(err) => {
if let RequestResponseError::FramedTransportError(
FramedTransportError::UnderlyingError(underlying_error),
) = &err
{
if underlying_error.kind() == std::io::ErrorKind::WouldBlock {
continue;
}
} else {
}
println!("Error: {:?}", err);
continue 'main;
}
}
}

こうできないかなぁ、みたいな?

    let result = nb::block!(Response::receive_response(...)?;
    // Ok の場合の処理を書く

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions