pub struct ProtoDescriptor { /* private fields */ }
Implementations§
Source§impl ProtoDescriptor
impl ProtoDescriptor
Sourcepub fn new(
includes: impl IntoIterator<Item = impl AsRef<Path>>,
files: impl IntoIterator<Item = impl AsRef<Path>>,
) -> Result<Self>
pub fn new( includes: impl IntoIterator<Item = impl AsRef<Path>>, files: impl IntoIterator<Item = impl AsRef<Path>>, ) -> Result<Self>
Instantiate DescriptorPool
from proto files and include paths
§Errors
- Failed to compile proto
ProtoxCompileError
- Failed to generate descriptor
DescriptorError
Examples found in repository?
examples/metadata.rs (lines 12-15)
11async fn main() -> Result<()> {
12 let desc = ProtoDescriptor::new(
13 vec!["/Users/philippreiter/Rust/wireman/example"],
14 vec!["grpc_simple/debugger.proto"],
15 )?;
16 let service = &desc.get_services()[0];
17 let method = &desc.get_methods(service)[1];
18 println!("Service: {:}", service.full_name());
19 println!("Method: {:}", method.full_name());
20
21 let mut req = desc.get_request(&method);
22 req.set_address("http://localhost:50051");
23
24 let resp = do_request(&req).await?;
25 println!("\nResponse:\n{:}", resp.message.to_json()?);
26
27 Ok(())
28}
More examples
examples/streaming.rs (lines 10-13)
9async fn main() -> Result<()> {
10 let desc = ProtoDescriptor::new(
11 vec!["/Users/philippreiter/Rust/wireman/example/server/streaming"],
12 vec!["streaming.proto"],
13 )?;
14
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17
18 if !method.is_server_streaming() {
19 println!("Method must be server streaming");
20 }
21
22 let mut request = desc.get_request(&method);
23 request.set_address("http://localhost:50051");
24
25 let response = call_server_streaming(&request, None).await?;
26
27 let mut pinned = std::pin::pin!(response);
28 let stream = pinned.as_mut().get_mut();
29
30 while let Some(message) = stream.next().await {
31 let message = message?;
32 println!("message: {:?}", message.message);
33 println!();
34 }
35
36 Ok(())
37}
Sourcepub async fn from_reflection(request: ReflectionRequest) -> Result<Self>
pub async fn from_reflection(request: ReflectionRequest) -> Result<Self>
Instantiates a DescriptorPool
from a grpc server that supports
reflection.
§Errors
Errors if server reflection or dependency resolving fails.
Examples found in repository?
examples/reflection.rs (line 14)
12async fn main() -> Result<()> {
13 let request = ReflectionRequest::new("http://localhost:50051");
14 let desc = ProtoDescriptor::from_reflection(request).await?;
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17 println!("Service: {:}", service.full_name());
18 println!("Method: {:}", method.full_name());
19 //
20 let mut req = desc.get_request(&method);
21 req.set_address("http://localhost:50051");
22
23 let mut req = desc.get_request(&method);
24 req.set_address("http://localhost:50051");
25
26 Ok(())
27}
Sourcepub fn get_service_by_name(&self, name: &str) -> Option<ServiceDescriptor>
pub fn get_service_by_name(&self, name: &str) -> Option<ServiceDescriptor>
Returns a Service by its name
Sourcepub fn get_message_by_name(&self, name: &str) -> Option<MessageDescriptor>
pub fn get_message_by_name(&self, name: &str) -> Option<MessageDescriptor>
Returns a Message by its name
Sourcepub fn get_method_by_name(
&self,
service_name: &str,
method_name: &str,
) -> Option<MethodDescriptor>
pub fn get_method_by_name( &self, service_name: &str, method_name: &str, ) -> Option<MethodDescriptor>
Returns a Method of a service by its name
Sourcepub fn get_services(&self) -> Vec<ServiceDescriptor>
pub fn get_services(&self) -> Vec<ServiceDescriptor>
Returns all Services from the descriptor pool
Examples found in repository?
examples/reflection.rs (line 15)
12async fn main() -> Result<()> {
13 let request = ReflectionRequest::new("http://localhost:50051");
14 let desc = ProtoDescriptor::from_reflection(request).await?;
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17 println!("Service: {:}", service.full_name());
18 println!("Method: {:}", method.full_name());
19 //
20 let mut req = desc.get_request(&method);
21 req.set_address("http://localhost:50051");
22
23 let mut req = desc.get_request(&method);
24 req.set_address("http://localhost:50051");
25
26 Ok(())
27}
More examples
examples/metadata.rs (line 16)
11async fn main() -> Result<()> {
12 let desc = ProtoDescriptor::new(
13 vec!["/Users/philippreiter/Rust/wireman/example"],
14 vec!["grpc_simple/debugger.proto"],
15 )?;
16 let service = &desc.get_services()[0];
17 let method = &desc.get_methods(service)[1];
18 println!("Service: {:}", service.full_name());
19 println!("Method: {:}", method.full_name());
20
21 let mut req = desc.get_request(&method);
22 req.set_address("http://localhost:50051");
23
24 let resp = do_request(&req).await?;
25 println!("\nResponse:\n{:}", resp.message.to_json()?);
26
27 Ok(())
28}
examples/streaming.rs (line 15)
9async fn main() -> Result<()> {
10 let desc = ProtoDescriptor::new(
11 vec!["/Users/philippreiter/Rust/wireman/example/server/streaming"],
12 vec!["streaming.proto"],
13 )?;
14
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17
18 if !method.is_server_streaming() {
19 println!("Method must be server streaming");
20 }
21
22 let mut request = desc.get_request(&method);
23 request.set_address("http://localhost:50051");
24
25 let response = call_server_streaming(&request, None).await?;
26
27 let mut pinned = std::pin::pin!(response);
28 let stream = pinned.as_mut().get_mut();
29
30 while let Some(message) = stream.next().await {
31 let message = message?;
32 println!("message: {:?}", message.message);
33 println!();
34 }
35
36 Ok(())
37}
Sourcepub fn get_methods(&self, service: &ServiceDescriptor) -> Vec<MethodDescriptor>
pub fn get_methods(&self, service: &ServiceDescriptor) -> Vec<MethodDescriptor>
Examples found in repository?
examples/reflection.rs (line 16)
12async fn main() -> Result<()> {
13 let request = ReflectionRequest::new("http://localhost:50051");
14 let desc = ProtoDescriptor::from_reflection(request).await?;
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17 println!("Service: {:}", service.full_name());
18 println!("Method: {:}", method.full_name());
19 //
20 let mut req = desc.get_request(&method);
21 req.set_address("http://localhost:50051");
22
23 let mut req = desc.get_request(&method);
24 req.set_address("http://localhost:50051");
25
26 Ok(())
27}
More examples
examples/metadata.rs (line 17)
11async fn main() -> Result<()> {
12 let desc = ProtoDescriptor::new(
13 vec!["/Users/philippreiter/Rust/wireman/example"],
14 vec!["grpc_simple/debugger.proto"],
15 )?;
16 let service = &desc.get_services()[0];
17 let method = &desc.get_methods(service)[1];
18 println!("Service: {:}", service.full_name());
19 println!("Method: {:}", method.full_name());
20
21 let mut req = desc.get_request(&method);
22 req.set_address("http://localhost:50051");
23
24 let resp = do_request(&req).await?;
25 println!("\nResponse:\n{:}", resp.message.to_json()?);
26
27 Ok(())
28}
examples/streaming.rs (line 16)
9async fn main() -> Result<()> {
10 let desc = ProtoDescriptor::new(
11 vec!["/Users/philippreiter/Rust/wireman/example/server/streaming"],
12 vec!["streaming.proto"],
13 )?;
14
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17
18 if !method.is_server_streaming() {
19 println!("Method must be server streaming");
20 }
21
22 let mut request = desc.get_request(&method);
23 request.set_address("http://localhost:50051");
24
25 let response = call_server_streaming(&request, None).await?;
26
27 let mut pinned = std::pin::pin!(response);
28 let stream = pinned.as_mut().get_mut();
29
30 while let Some(message) = stream.next().await {
31 let message = message?;
32 println!("message: {:?}", message.message);
33 println!();
34 }
35
36 Ok(())
37}
pub fn get_request_descriptor( &self, method: &MethodDescriptor, ) -> MessageDescriptor
pub fn get_response_descriptor( &self, method: &MethodDescriptor, ) -> MessageDescriptor
Sourcepub fn get_request(&self, method: &MethodDescriptor) -> RequestMessage
pub fn get_request(&self, method: &MethodDescriptor) -> RequestMessage
Examples found in repository?
examples/reflection.rs (line 20)
12async fn main() -> Result<()> {
13 let request = ReflectionRequest::new("http://localhost:50051");
14 let desc = ProtoDescriptor::from_reflection(request).await?;
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17 println!("Service: {:}", service.full_name());
18 println!("Method: {:}", method.full_name());
19 //
20 let mut req = desc.get_request(&method);
21 req.set_address("http://localhost:50051");
22
23 let mut req = desc.get_request(&method);
24 req.set_address("http://localhost:50051");
25
26 Ok(())
27}
More examples
examples/metadata.rs (line 21)
11async fn main() -> Result<()> {
12 let desc = ProtoDescriptor::new(
13 vec!["/Users/philippreiter/Rust/wireman/example"],
14 vec!["grpc_simple/debugger.proto"],
15 )?;
16 let service = &desc.get_services()[0];
17 let method = &desc.get_methods(service)[1];
18 println!("Service: {:}", service.full_name());
19 println!("Method: {:}", method.full_name());
20
21 let mut req = desc.get_request(&method);
22 req.set_address("http://localhost:50051");
23
24 let resp = do_request(&req).await?;
25 println!("\nResponse:\n{:}", resp.message.to_json()?);
26
27 Ok(())
28}
examples/streaming.rs (line 22)
9async fn main() -> Result<()> {
10 let desc = ProtoDescriptor::new(
11 vec!["/Users/philippreiter/Rust/wireman/example/server/streaming"],
12 vec!["streaming.proto"],
13 )?;
14
15 let service = &desc.get_services()[0];
16 let method = &desc.get_methods(service)[0];
17
18 if !method.is_server_streaming() {
19 println!("Method must be server streaming");
20 }
21
22 let mut request = desc.get_request(&method);
23 request.set_address("http://localhost:50051");
24
25 let response = call_server_streaming(&request, None).await?;
26
27 let mut pinned = std::pin::pin!(response);
28 let stream = pinned.as_mut().get_mut();
29
30 while let Some(message) = stream.next().await {
31 let message = message?;
32 println!("message: {:?}", message.message);
33 println!();
34 }
35
36 Ok(())
37}
pub fn get_response(&self, method: &MethodDescriptor) -> ResponseMessage
Trait Implementations§
Source§impl Clone for ProtoDescriptor
impl Clone for ProtoDescriptor
Source§fn clone(&self) -> ProtoDescriptor
fn clone(&self) -> ProtoDescriptor
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ProtoDescriptor
impl Debug for ProtoDescriptor
Source§impl Default for ProtoDescriptor
impl Default for ProtoDescriptor
Source§fn default() -> ProtoDescriptor
fn default() -> ProtoDescriptor
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ProtoDescriptor
impl RefUnwindSafe for ProtoDescriptor
impl Send for ProtoDescriptor
impl Sync for ProtoDescriptor
impl Unpin for ProtoDescriptor
impl UnwindSafe for ProtoDescriptor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request