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) -> &SymbolClaimTracker
pub fn claim_tracker(&self) -> &SymbolClaimTracker
Borrow the shared symbol claim tracker.
Trait Implementations§
Source§impl AgentService for ProtocolServer
impl AgentService for ProtocolServer
Source§type VerifyStream = ReceiverStream<Result<VerifyStepResult, Status>>
type VerifyStream = ReceiverStream<Result<VerifyStepResult, Status>>
Server streaming response type for the Verify method.
Source§type WatchStream = ReceiverStream<Result<WatchEvent, Status>>
type WatchStream = ReceiverStream<Result<WatchEvent, Status>>
Server streaming response type for the Watch method.
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,
Trigger verification pipeline on a changeset (server-streaming)
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,
Merge an approved changeset into a Git commit
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,
Watch for repo events from other agents (server-streaming)
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,
File-level operations through the session workspace overlay
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,
Dry-run conflict detection before SUBMIT
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,
Get current session workspace state
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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>
Converts
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>
Converts
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>
Wrap the input message
T in a tonic::Request