Skip to main content

MacpServer

Struct MacpServer 

Source
pub struct MacpServer { /* private fields */ }

Implementations§

Source§

impl MacpServer

Source

pub fn new(runtime: Arc<Runtime>, security: SecurityLayer) -> Self

Source

pub fn with_read_only_policies(self) -> Self

Source

pub fn with_policy_engine(self, engine: Arc<dyn PolicyEngine>) -> Self

Install an external ingress policy engine (OPA/Cedar/custom). All session starts, session-scoped sends, and session reads are then additionally gated on it (fail closed).

Trait Implementations§

Source§

impl Clone for MacpServer

Source§

fn clone(&self) -> MacpServer

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl MacpRuntimeService for MacpServer

Source§

type StreamSessionStream = Pin<Box<dyn Stream<Item = Result<StreamSessionResponse, Status>> + Send>>

Server streaming response type for the StreamSession method.
Source§

type WatchModeRegistryStream = Pin<Box<dyn Stream<Item = Result<WatchModeRegistryResponse, Status>> + Send>>

Server streaming response type for the WatchModeRegistry method.
Source§

type WatchRootsStream = Pin<Box<dyn Stream<Item = Result<WatchRootsResponse, Status>> + Send>>

Server streaming response type for the WatchRoots method.
Source§

type WatchSignalsStream = Pin<Box<dyn Stream<Item = Result<WatchSignalsResponse, Status>> + Send>>

Server streaming response type for the WatchSignals method.
Source§

type WatchSessionsStream = Pin<Box<dyn Stream<Item = Result<WatchSessionsResponse, Status>> + Send>>

Server streaming response type for the WatchSessions method.
Source§

type WatchPoliciesStream = Pin<Box<dyn Stream<Item = Result<WatchPoliciesResponse, Status>> + Send>>

Server streaming response type for the WatchPolicies method.
Source§

fn initialize<'life0, 'async_trait>( &'life0 self, request: Request<InitializeRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<InitializeResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn send<'life0, 'async_trait>( &'life0 self, request: Request<SendRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<SendResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_session<'life0, 'async_trait>( &'life0 self, request: Request<GetSessionRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<GetSessionResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn cancel_session<'life0, 'async_trait>( &'life0 self, request: Request<CancelSessionRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<CancelSessionResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn suspend_session<'life0, 'async_trait>( &'life0 self, request: Request<SuspendSessionRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<SuspendSessionResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Session suspension / resume (RFC-MACP-0001 §7.5)
Source§

fn resume_session<'life0, 'async_trait>( &'life0 self, request: Request<ResumeSessionRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ResumeSessionResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_manifest<'life0, 'async_trait>( &'life0 self, request: Request<GetManifestRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<GetManifestResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn list_modes<'life0, 'async_trait>( &'life0 self, _request: Request<ListModesRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ListModesResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn list_roots<'life0, 'async_trait>( &'life0 self, _request: Request<ListRootsRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ListRootsResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn stream_session<'life0, 'async_trait>( &'life0 self, request: Request<Streaming<StreamSessionRequest>>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::StreamSessionStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn watch_mode_registry<'life0, 'async_trait>( &'life0 self, _request: Request<WatchModeRegistryRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchModeRegistryStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn watch_roots<'life0, 'async_trait>( &'life0 self, _request: Request<WatchRootsRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchRootsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn watch_signals<'life0, 'async_trait>( &'life0 self, request: Request<WatchSignalsRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchSignalsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Ambient Signal observation
Source§

fn list_sessions<'life0, 'async_trait>( &'life0 self, request: Request<ListSessionsRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ListSessionsResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Session lifecycle observation (RFC-MACP-0001 §7.3)
Source§

fn watch_sessions<'life0, 'async_trait>( &'life0 self, request: Request<WatchSessionsRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchSessionsStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn list_ext_modes<'life0, 'async_trait>( &'life0 self, _request: Request<ListExtModesRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ListExtModesResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Extension mode lifecycle
Source§

fn register_ext_mode<'life0, 'async_trait>( &'life0 self, request: Request<RegisterExtModeRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<RegisterExtModeResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn unregister_ext_mode<'life0, 'async_trait>( &'life0 self, request: Request<UnregisterExtModeRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<UnregisterExtModeResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn promote_mode<'life0, 'async_trait>( &'life0 self, request: Request<PromoteModeRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<PromoteModeResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn register_policy<'life0, 'async_trait>( &'life0 self, request: Request<RegisterPolicyRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<RegisterPolicyResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Governance policy lifecycle (RFC-MACP-0012)
Source§

fn unregister_policy<'life0, 'async_trait>( &'life0 self, request: Request<UnregisterPolicyRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<UnregisterPolicyResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_policy<'life0, 'async_trait>( &'life0 self, request: Request<GetPolicyRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<GetPolicyResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn list_policies<'life0, 'async_trait>( &'life0 self, request: Request<ListPoliciesRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<ListPoliciesResponse>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn watch_policies<'life0, 'async_trait>( &'life0 self, _request: Request<WatchPoliciesRequest>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::WatchPoliciesStream>, Status>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more