pub struct GrpcAgentServerV2 { /* private fields */ }Expand description
gRPC-based agent server implementation for Protocol v2.
GrpcAgentServerV2 provides a gRPC transport for agents that need to communicate
with the Zentinel proxy over the network. This is ideal for agents running in
separate processes, containers, or on different machines.
§Features
- Network transport: Communicates over TCP with HTTP/2 and TLS support
- Language agnostic: Works with any gRPC client implementation
- Scalability: Can handle multiple concurrent proxy connections
- Monitoring: Integrates with gRPC ecosystem tools for observability
§Example
ⓘ
use zentinel_agent_protocol::v2::GrpcAgentServerV2;
// Create server with your handler
let handler = Box::new(MyAgent::new());
let server = GrpcAgentServerV2::new("my-agent", handler);
// Serve on a specific address
let addr = "127.0.0.1:8080".parse()?;
server.run(addr).await?;§Transport Details
The gRPC transport uses the standard Agent Protocol v2 service definition:
- Bidirectional streaming for event processing
- Capability negotiation during handshake
- Health check integration
- Configuration update support
- Metrics collection
Implementations§
Source§impl GrpcAgentServerV2
impl GrpcAgentServerV2
Sourcepub fn new(id: impl Into<String>, handler: Box<dyn AgentHandlerV2>) -> Self
pub fn new(id: impl Into<String>, handler: Box<dyn AgentHandlerV2>) -> Self
Create a new v2 gRPC agent server.
Sourcepub fn into_service(self) -> AgentServiceV2Server<GrpcAgentHandlerV2>
pub fn into_service(self) -> AgentServiceV2Server<GrpcAgentHandlerV2>
Get the tonic service for this agent.
Sourcepub async fn run(self, addr: SocketAddr) -> Result<(), AgentProtocolError>
pub async fn run(self, addr: SocketAddr) -> Result<(), AgentProtocolError>
Start the gRPC server on the given address.
Auto Trait Implementations§
impl Freeze for GrpcAgentServerV2
impl !RefUnwindSafe for GrpcAgentServerV2
impl Send for GrpcAgentServerV2
impl Sync for GrpcAgentServerV2
impl Unpin for GrpcAgentServerV2
impl UnsafeUnpin for GrpcAgentServerV2
impl !UnwindSafe for GrpcAgentServerV2
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> 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