rust: Refactor Rust impl of protover_list_supports_protocol().

This includes a subtle difference in behaviour, as in 4258f1e18, where we return
(matching the C impl's return behaviour) earlier than before if parsing failed,
saving us computation in parsing the versions into a
protover::protoset::ProtoSet.

 * REFACTOR `protover::ffi::protover_list_supports_protocol()` to use new types
   and methods.
This commit is contained in:
Isis Lovecruft 2018-03-21 02:52:04 +00:00
parent c7bcca0233
commit 63eeda89ea
No known key found for this signature in database
GPG Key ID: B8938BC5E86C046F

View File

@ -101,16 +101,18 @@ pub extern "C" fn protocol_list_supports_protocol(
Ok(n) => n,
Err(_) => return 1,
};
let protocol = match translate_to_rust(c_protocol) {
Ok(n) => n,
let proto_entry: UnvalidatedProtoEntry = match protocol_list.parse() {
Ok(n) => n,
Err(_) => return 0,
};
let is_supported =
protover_string_supports_protocol(protocol_list, protocol, version);
return if is_supported { 1 } else { 0 };
let protocol: UnknownProtocol = match translate_to_rust(c_protocol) {
Ok(n) => n.into(),
Err(_) => return 0,
};
match proto_entry.supports_protocol(&protocol, &version) {
false => return 0,
true => return 1,
}
}
/// Provide an interface for C to translate arguments and return types for