Struct mz_dataflow_types::client::grpc::GrpcShared
source · [−]pub struct GrpcShared<PC, PR> { /* private fields */ }
Expand description
The server side gRPC implementation that will run in computed or storaged.
There are two main tasks involved: The gRPC callback implementations will execute in their own tasks,
receive commands from the network and send responses to the network. Upon reception of a command,
the implementation will put it in a mpsc queue, out of which the consumer (running in another
task) will read it with a recv call. The same goes for the send path: The consumer calls send
which
puts the response in a mpsc queue, from which the gRPC stubs will read and send it over the network.
If an error occurs, the consumer receives an error from the recv call. If no client is connected recv will block until a client is available. To implement the “waiting for client” the queue_change notification is used. recv will check first if a client is connected using queue. If queue is None, no client is connected and recv will await on the queue_change notification. The server does this vice-versa. Upon connection of a client, it will insert the endpoints into queue and trigger the queue_change, which will wake up the waiting clients.
This is the shared datastructure between server and consumer.
Auto Trait Implementations
impl<PC, PR> !RefUnwindSafe for GrpcShared<PC, PR>
impl<PC, PR> Send for GrpcShared<PC, PR> where
PR: Send,
impl<PC, PR> Sync for GrpcShared<PC, PR> where
PR: Send,
impl<PC, PR> Unpin for GrpcShared<PC, PR>
impl<PC, PR> !UnwindSafe for GrpcShared<PC, PR>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FutureExt for T
impl<T> FutureExt for T
sourcefn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
sourcefn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
sourcefn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message T
in a tonic::Request
sourceimpl<P, R> ProtoType<R> for P where
R: RustType<P>,
impl<P, R> ProtoType<R> for P where
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See RustType::from_proto
.
sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See RustType::into_proto
.
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more