pub struct MountainVinegRPCService {
ApplicationHandle: AppHandle,
RunTime: Arc<ApplicationRunTime>,
ActiveOperations: Arc<RwLock<HashMap<u64, CancellationToken>>>,
}Expand description
The concrete implementation of the MountainService gRPC service.
This service handles all incoming RPC calls from the Cocoon sidecar, validating requests, dispatching to appropriate handlers, and returning responses in the expected gRPC format.
Fields§
§ApplicationHandle: AppHandleTauri application handle for VS Code integration
RunTime: Arc<ApplicationRunTime>Application runtime containing core dependencies
ActiveOperations: Arc<RwLock<HashMap<u64, CancellationToken>>>Registry of active operations with their cancellation tokens Maps request ID to cancellation token for operation cancellation
Implementations§
Source§impl MountainVinegRPCService
impl MountainVinegRPCService
Sourcepub fn Create(
ApplicationHandle: AppHandle,
RunTime: Arc<ApplicationRunTime>,
) -> Self
pub fn Create( ApplicationHandle: AppHandle, RunTime: Arc<ApplicationRunTime>, ) -> Self
Sourcepub async fn RegisterOperation(&self, request_id: u64) -> CancellationToken
pub async fn RegisterOperation(&self, request_id: u64) -> CancellationToken
Sourcepub async fn UnregisterOperation(&self, request_id: u64)
pub async fn UnregisterOperation(&self, request_id: u64)
Unregisters an operation after completion
§Parameters
request_id: The request identifier to unregister
Sourcefn ValidateRequest(&self, request: &GenericRequest) -> Result<(), Status>
fn ValidateRequest(&self, request: &GenericRequest) -> Result<(), Status>
Sourcefn CreateErrorResponse(
RequestIdentifier: u64,
code: i32,
message: String,
data: Option<Vec<u8>>,
) -> GenericResponse
fn CreateErrorResponse( RequestIdentifier: u64, code: i32, message: String, data: Option<Vec<u8>>, ) -> GenericResponse
Sourcefn CreateSuccessResponse(
RequestIdentifier: u64,
result: &Value,
) -> GenericResponse
fn CreateSuccessResponse( RequestIdentifier: u64, result: &Value, ) -> GenericResponse
Trait Implementations§
Source§impl MountainService for MountainVinegRPCService
impl MountainService for MountainVinegRPCService
Source§fn process_cocoon_request<'life0, 'async_trait>(
&'life0 self,
request: Request<GenericRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GenericResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn process_cocoon_request<'life0, 'async_trait>(
&'life0 self,
request: Request<GenericRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GenericResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handles generic request-response RPCs from Cocoon.
This is the main entry point for Cocoon to request operations from Mountain. It validates the request, deserializes parameters, dispatches to the Track module, and returns the result or error in JSON-RPC format.
§Parameters
request: GenericRequest containing method name and serialized parameters
§Returns
Ok(Response<GenericResponse>): Response with result or errorErr(Status): gRPC status error (only for critical failures)
Source§fn send_cocoon_notification<'life0, 'async_trait>(
&'life0 self,
request: Request<GenericNotification>,
) -> Pin<Box<dyn Future<Output = Result<Response<Empty>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn send_cocoon_notification<'life0, 'async_trait>(
&'life0 self,
request: Request<GenericNotification>,
) -> Pin<Box<dyn Future<Output = Result<Response<Empty>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handles generic fire-and-forget notifications from Cocoon.
Notifications do not expect a response beyond acknowledgment. They are used for status updates, events, and other asynchronous notifications.
§Parameters
request: GenericNotification with method name and parameters
§Returns
Ok(Response<Empty>): Notification was received and loggedErr(Status): Critical error during processing
§TODO
Future implementation should route notifications to dedicated handlers:
let Parameter: Value = serde_json::from_slice(¬ification.parameter)?;
NotificationHandler::Handle(MethodName, Parameter).await?;Source§fn cancel_operation<'life0, 'async_trait>(
&'life0 self,
request: Request<CancelOperationRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Empty>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn cancel_operation<'life0, 'async_trait>(
&'life0 self,
request: Request<CancelOperationRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Empty>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handles a request from Cocoon to cancel a long-running operation.
This method is called when Cocoon wants to cancel an operation that was previously initiated via process_cocoon_request.
§Parameters
request: CancelOperationRequest with the request ID to cancel
§Returns
Ok(Response<Empty>): Cancellation was initiatedErr(Status): Critical error during cancellation
Auto Trait Implementations§
impl Freeze for MountainVinegRPCService
impl !RefUnwindSafe for MountainVinegRPCService
impl Send for MountainVinegRPCService
impl Sync for MountainVinegRPCService
impl Unpin for MountainVinegRPCService
impl !UnwindSafe for MountainVinegRPCService
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].