in dubbo-build/src/client.rs [100:161]
fn generate_methods<T: Service>(
service: &T,
emit_package: bool,
proto_path: &str,
compile_well_known_types: bool,
) -> TokenStream {
let mut stream = TokenStream::new();
let package = if emit_package { service.package() } else { "" };
for method in service.methods() {
let service_unique_name = format!(
"{}{}{}",
package,
if package.is_empty() { "" } else { "." },
service.identifier()
);
let path = format!(
"/{}{}{}/{}",
package,
if package.is_empty() { "" } else { "." },
service.identifier(),
method.identifier()
);
stream.extend(generate_doc_comments(method.comment()));
let method = match (method.client_streaming(), method.server_streaming()) {
(false, false) => generate_unary(
service_unique_name,
&method,
proto_path,
compile_well_known_types,
path,
),
(false, true) => generate_server_streaming(
service_unique_name,
&method,
proto_path,
compile_well_known_types,
path,
),
(true, false) => generate_client_streaming(
service_unique_name,
&method,
proto_path,
compile_well_known_types,
path,
),
(true, true) => generate_streaming(
service_unique_name,
&method,
proto_path,
compile_well_known_types,
path,
),
};
stream.extend(method);
}
stream
}