pub struct ProtocolServer { /* private fields */ }Expand description
The gRPC server that implements the AgentService trait generated by
tonic from the agent.proto definition.
Holds a shared reference to the Engine (internally concurrent via
fine-grained locks) and a SessionManager for stateful agent sessions.
Implementations§
Source§impl ProtocolServer
impl ProtocolServer
Sourcepub fn new(engine: Arc<Engine>, auth_config: AuthConfig) -> Self
pub fn new(engine: Arc<Engine>, auth_config: AuthConfig) -> Self
Create a new ProtocolServer.
auth_config controls how agents authenticate on every
ConnectRequest. The session timeout is fixed at 30 minutes.
Sourcepub fn session_mgr(&self) -> &SessionManager
pub fn session_mgr(&self) -> &SessionManager
Borrow the session manager.
Sourcepub fn event_bus_arc(&self) -> Arc<EventBus>
pub fn event_bus_arc(&self) -> Arc<EventBus>
Return a cloned Arc handle to the shared event bus.
Callers that need to publish to the engine event bus from a spawned
task (where a borrow of &ProtocolServer is not available) should
use this to obtain a cheaply-clonable, ownership-safe handle.
Sourcepub fn claim_tracker(&self) -> &dyn ClaimTracker
pub fn claim_tracker(&self) -> &dyn ClaimTracker
Borrow the shared symbol claim tracker.
Sourcepub fn with_claim_tracker(
engine: Arc<Engine>,
auth_config: AuthConfig,
claim_tracker: Arc<dyn ClaimTracker>,
) -> Self
pub fn with_claim_tracker( engine: Arc<Engine>, auth_config: AuthConfig, claim_tracker: Arc<dyn ClaimTracker>, ) -> Self
Create a ProtocolServer with a custom claim tracker implementation.
Trait Implementations§
Source§impl AgentService for ProtocolServer
impl AgentService for ProtocolServer
Source§type VerifyStream = ReceiverStream<Result<VerifyStepResult, Status>>
type VerifyStream = ReceiverStream<Result<VerifyStepResult, Status>>
Source§type WatchStream = ReceiverStream<Result<WatchEvent, Status>>
type WatchStream = ReceiverStream<Result<WatchEvent, Status>>
fn connect<'life0, 'async_trait>(
&'life0 self,
request: Request<ConnectRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ConnectResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn context<'life0, 'async_trait>(
&'life0 self,
request: Request<ContextRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ContextResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn submit<'life0, 'async_trait>(
&'life0 self,
request: Request<SubmitRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SubmitResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn verify<'life0, 'async_trait>(
&'life0 self,
request: Request<VerifyRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::VerifyStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn verify<'life0, 'async_trait>(
&'life0 self,
request: Request<VerifyRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::VerifyStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn merge<'life0, 'async_trait>(
&'life0 self,
request: Request<MergeRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<MergeResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn merge<'life0, 'async_trait>(
&'life0 self,
request: Request<MergeRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<MergeResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn watch<'life0, 'async_trait>(
&'life0 self,
request: Request<WatchRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn watch<'life0, 'async_trait>(
&'life0 self,
request: Request<WatchRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn file_read<'life0, 'async_trait>(
&'life0 self,
request: Request<FileReadRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<FileReadResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn file_read<'life0, 'async_trait>(
&'life0 self,
request: Request<FileReadRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<FileReadResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn file_write<'life0, 'async_trait>(
&'life0 self,
request: Request<FileWriteRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<FileWriteResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn file_list<'life0, 'async_trait>(
&'life0 self,
request: Request<FileListRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<FileListResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn pre_submit_check<'life0, 'async_trait>(
&'life0 self,
request: Request<PreSubmitCheckRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<PreSubmitCheckResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pre_submit_check<'life0, 'async_trait>(
&'life0 self,
request: Request<PreSubmitCheckRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<PreSubmitCheckResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_session_status<'life0, 'async_trait>(
&'life0 self,
request: Request<SessionStatusRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SessionStatusResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_session_status<'life0, 'async_trait>(
&'life0 self,
request: Request<SessionStatusRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<SessionStatusResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn push<'life0, 'async_trait>(
&'life0 self,
request: Request<PushRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<PushResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn push<'life0, 'async_trait>(
&'life0 self,
request: Request<PushRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<PushResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn approve<'life0, 'async_trait>(
&'life0 self,
_request: Request<ApproveRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ApproveResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn approve<'life0, 'async_trait>(
&'life0 self,
_request: Request<ApproveRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ApproveResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn resolve<'life0, 'async_trait>(
&'life0 self,
_request: Request<ResolveRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ResolveResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn resolve<'life0, 'async_trait>(
&'life0 self,
_request: Request<ResolveRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<ResolveResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl Freeze for ProtocolServer
impl !RefUnwindSafe for ProtocolServer
impl Send for ProtocolServer
impl Sync for ProtocolServer
impl Unpin for ProtocolServer
impl UnsafeUnpin for ProtocolServer
impl !UnwindSafe for ProtocolServer
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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>
T in a tonic::Request