1#[derive(prost_helpers::AnyPB)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct InjectBarrierRequest {
5 #[prost(string, tag = "1")]
6 pub request_id: ::prost::alloc::string::String,
7 #[prost(message, optional, tag = "2")]
8 pub barrier: ::core::option::Option<super::stream_plan::Barrier>,
9 #[prost(uint32, tag = "3")]
10 pub database_id: u32,
11 #[prost(uint32, repeated, tag = "4")]
12 pub actor_ids_to_collect: ::prost::alloc::vec::Vec<u32>,
13 #[prost(uint32, repeated, tag = "5")]
14 pub table_ids_to_sync: ::prost::alloc::vec::Vec<u32>,
15 #[prost(uint32, tag = "6")]
16 pub partial_graph_id: u32,
17 #[prost(message, repeated, tag = "9")]
18 pub actors_to_build: ::prost::alloc::vec::Vec<
19 inject_barrier_request::FragmentBuildActorInfo,
20 >,
21 #[prost(message, repeated, tag = "10")]
22 pub subscriptions_to_add: ::prost::alloc::vec::Vec<
23 super::stream_plan::SubscriptionUpstreamInfo,
24 >,
25 #[prost(message, repeated, tag = "11")]
26 pub subscriptions_to_remove: ::prost::alloc::vec::Vec<
27 super::stream_plan::SubscriptionUpstreamInfo,
28 >,
29}
30pub mod inject_barrier_request {
32 #[derive(prost_helpers::AnyPB)]
33 #[derive(Clone, PartialEq, ::prost::Message)]
34 pub struct FragmentBuildActorInfo {
35 #[prost(uint32, tag = "1")]
36 pub fragment_id: u32,
37 #[prost(message, optional, tag = "2")]
38 pub node: ::core::option::Option<super::super::stream_plan::StreamNode>,
39 #[prost(message, repeated, tag = "3")]
40 pub actors: ::prost::alloc::vec::Vec<BuildActorInfo>,
41 }
42 #[derive(prost_helpers::AnyPB)]
43 #[derive(Clone, PartialEq, ::prost::Message)]
44 pub struct BuildActorInfo {
45 #[prost(uint32, tag = "1")]
46 pub actor_id: u32,
47 #[prost(map = "uint32, message", tag = "2")]
48 pub fragment_upstreams: ::std::collections::HashMap<
49 u32,
50 build_actor_info::UpstreamActors,
51 >,
52 #[prost(message, repeated, tag = "3")]
53 pub dispatchers: ::prost::alloc::vec::Vec<super::super::stream_plan::Dispatcher>,
54 #[prost(message, optional, tag = "4")]
55 pub vnode_bitmap: ::core::option::Option<super::super::common::Buffer>,
56 #[prost(string, tag = "5")]
57 pub mview_definition: ::prost::alloc::string::String,
58 #[prost(message, optional, tag = "6")]
59 pub expr_context: ::core::option::Option<super::super::plan_common::ExprContext>,
60 }
61 pub mod build_actor_info {
63 #[derive(prost_helpers::AnyPB)]
64 #[derive(Clone, PartialEq, ::prost::Message)]
65 pub struct UpstreamActors {
66 #[prost(message, repeated, tag = "1")]
67 pub actors: ::prost::alloc::vec::Vec<super::super::super::common::ActorInfo>,
68 }
69 }
70}
71#[derive(prost_helpers::AnyPB)]
72#[derive(Clone, PartialEq, ::prost::Message)]
73pub struct BarrierCompleteResponse {
74 #[prost(string, tag = "1")]
75 pub request_id: ::prost::alloc::string::String,
76 #[prost(message, optional, tag = "2")]
77 pub status: ::core::option::Option<super::common::Status>,
78 #[prost(message, repeated, tag = "3")]
79 pub create_mview_progress: ::prost::alloc::vec::Vec<
80 barrier_complete_response::CreateMviewProgress,
81 >,
82 #[prost(message, repeated, tag = "4")]
83 pub synced_sstables: ::prost::alloc::vec::Vec<
84 barrier_complete_response::LocalSstableInfo,
85 >,
86 #[prost(uint32, tag = "5")]
87 pub worker_id: u32,
88 #[prost(map = "uint32, message", tag = "6")]
89 pub table_watermarks: ::std::collections::HashMap<
90 u32,
91 super::hummock::TableWatermarks,
92 >,
93 #[prost(message, repeated, tag = "7")]
94 pub old_value_sstables: ::prost::alloc::vec::Vec<super::hummock::SstableInfo>,
95 #[prost(uint32, tag = "8")]
96 pub partial_graph_id: u32,
97 #[prost(uint64, tag = "9")]
99 pub epoch: u64,
100 #[prost(uint32, tag = "10")]
101 pub database_id: u32,
102}
103pub mod barrier_complete_response {
105 #[derive(prost_helpers::AnyPB)]
106 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
107 pub struct CreateMviewProgress {
108 #[prost(uint32, tag = "1")]
111 pub backfill_actor_id: u32,
112 #[prost(bool, tag = "2")]
113 pub done: bool,
114 #[prost(uint64, tag = "3")]
116 pub consumed_epoch: u64,
117 #[prost(uint64, tag = "4")]
119 pub consumed_rows: u64,
120 #[prost(uint64, tag = "5")]
121 pub pending_epoch_lag: u64,
122 }
123 #[derive(prost_helpers::AnyPB)]
124 #[derive(Clone, PartialEq, ::prost::Message)]
125 pub struct LocalSstableInfo {
126 #[prost(message, optional, tag = "2")]
127 pub sst: ::core::option::Option<super::super::hummock::SstableInfo>,
128 #[prost(map = "uint32, message", tag = "3")]
129 pub table_stats_map: ::std::collections::HashMap<
130 u32,
131 super::super::hummock::TableStats,
132 >,
133 #[prost(uint64, tag = "4")]
134 pub created_at: u64,
135 }
136}
137#[derive(prost_helpers::AnyPB)]
138#[derive(Clone, PartialEq, ::prost::Message)]
139pub struct StreamingControlStreamRequest {
140 #[prost(oneof = "streaming_control_stream_request::Request", tags = "1, 2, 3, 4, 5")]
141 pub request: ::core::option::Option<streaming_control_stream_request::Request>,
142}
143pub mod streaming_control_stream_request {
145 #[derive(prost_helpers::AnyPB)]
146 #[derive(Clone, PartialEq, ::prost::Message)]
147 pub struct InitialPartialGraph {
148 #[prost(uint32, tag = "1")]
149 pub partial_graph_id: u32,
150 #[prost(message, repeated, tag = "2")]
151 pub subscriptions: ::prost::alloc::vec::Vec<
152 super::super::stream_plan::SubscriptionUpstreamInfo,
153 >,
154 }
155 #[derive(prost_helpers::AnyPB)]
156 #[derive(Clone, PartialEq, ::prost::Message)]
157 pub struct DatabaseInitialPartialGraph {
158 #[prost(uint32, tag = "1")]
159 pub database_id: u32,
160 #[prost(message, repeated, tag = "2")]
161 pub graphs: ::prost::alloc::vec::Vec<InitialPartialGraph>,
162 }
163 #[derive(prost_helpers::AnyPB)]
164 #[derive(Clone, PartialEq, ::prost::Message)]
165 pub struct InitRequest {
166 #[prost(message, repeated, tag = "1")]
167 pub databases: ::prost::alloc::vec::Vec<DatabaseInitialPartialGraph>,
168 #[prost(string, tag = "2")]
169 pub term_id: ::prost::alloc::string::String,
170 }
171 #[derive(prost_helpers::AnyPB)]
172 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
173 pub struct CreatePartialGraphRequest {
174 #[prost(uint32, tag = "1")]
175 pub partial_graph_id: u32,
176 #[prost(uint32, tag = "2")]
177 pub database_id: u32,
178 }
179 #[derive(prost_helpers::AnyPB)]
180 #[derive(Clone, PartialEq, ::prost::Message)]
181 pub struct RemovePartialGraphRequest {
182 #[prost(uint32, repeated, tag = "1")]
183 pub partial_graph_ids: ::prost::alloc::vec::Vec<u32>,
184 #[prost(uint32, tag = "2")]
185 pub database_id: u32,
186 }
187 #[derive(prost_helpers::AnyPB)]
188 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
189 pub struct ResetDatabaseRequest {
190 #[prost(uint32, tag = "1")]
191 pub database_id: u32,
192 #[prost(uint32, tag = "2")]
193 pub reset_request_id: u32,
194 }
195 #[derive(prost_helpers::AnyPB)]
196 #[derive(Clone, PartialEq, ::prost::Oneof)]
197 pub enum Request {
198 #[prost(message, tag = "1")]
199 Init(InitRequest),
200 #[prost(message, tag = "2")]
201 InjectBarrier(super::InjectBarrierRequest),
202 #[prost(message, tag = "3")]
203 RemovePartialGraph(RemovePartialGraphRequest),
204 #[prost(message, tag = "4")]
205 CreatePartialGraph(CreatePartialGraphRequest),
206 #[prost(message, tag = "5")]
207 ResetDatabase(ResetDatabaseRequest),
208 }
209}
210#[derive(prost_helpers::AnyPB)]
211#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct ScoredError {
213 #[prost(string, tag = "1")]
214 pub err_msg: ::prost::alloc::string::String,
215 #[prost(int32, tag = "2")]
216 pub score: i32,
217}
218#[derive(prost_helpers::AnyPB)]
219#[derive(Clone, PartialEq, ::prost::Message)]
220pub struct StreamingControlStreamResponse {
221 #[prost(
222 oneof = "streaming_control_stream_response::Response",
223 tags = "1, 2, 3, 4, 5"
224 )]
225 pub response: ::core::option::Option<streaming_control_stream_response::Response>,
226}
227pub mod streaming_control_stream_response {
229 #[derive(prost_helpers::AnyPB)]
230 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
231 pub struct InitResponse {}
232 #[derive(prost_helpers::AnyPB)]
233 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
234 pub struct ShutdownResponse {}
235 #[derive(prost_helpers::AnyPB)]
236 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
237 pub struct ReportDatabaseFailureResponse {
238 #[prost(uint32, tag = "1")]
239 pub database_id: u32,
240 }
241 #[derive(prost_helpers::AnyPB)]
242 #[derive(Clone, PartialEq, ::prost::Message)]
243 pub struct ResetDatabaseResponse {
244 #[prost(uint32, tag = "1")]
245 pub database_id: u32,
246 #[prost(message, optional, tag = "2")]
247 pub root_err: ::core::option::Option<super::ScoredError>,
248 #[prost(uint32, tag = "3")]
249 pub reset_request_id: u32,
250 }
251 #[derive(prost_helpers::AnyPB)]
252 #[derive(Clone, PartialEq, ::prost::Oneof)]
253 pub enum Response {
254 #[prost(message, tag = "1")]
255 Init(InitResponse),
256 #[prost(message, tag = "2")]
257 CompleteBarrier(super::BarrierCompleteResponse),
258 #[prost(message, tag = "3")]
259 Shutdown(ShutdownResponse),
260 #[prost(message, tag = "4")]
261 ReportDatabaseFailure(ReportDatabaseFailureResponse),
262 #[prost(message, tag = "5")]
263 ResetDatabase(ResetDatabaseResponse),
264 }
265}
266#[derive(prost_helpers::AnyPB)]
267#[derive(Clone, Copy, PartialEq, ::prost::Message)]
268pub struct GetMinUncommittedObjectIdRequest {}
269#[derive(prost_helpers::AnyPB)]
270#[derive(Clone, Copy, PartialEq, ::prost::Message)]
271pub struct GetMinUncommittedObjectIdResponse {
272 #[prost(uint64, tag = "1")]
273 pub min_uncommitted_object_id: u64,
274}
275pub mod stream_service_client {
277 #![allow(
278 unused_variables,
279 dead_code,
280 missing_docs,
281 clippy::wildcard_imports,
282 clippy::let_unit_value,
283 )]
284 use tonic::codegen::*;
285 use tonic::codegen::http::Uri;
286 #[derive(Debug, Clone)]
287 pub struct StreamServiceClient<T> {
288 inner: tonic::client::Grpc<T>,
289 }
290 impl StreamServiceClient<tonic::transport::Channel> {
291 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
293 where
294 D: TryInto<tonic::transport::Endpoint>,
295 D::Error: Into<StdError>,
296 {
297 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
298 Ok(Self::new(conn))
299 }
300 }
301 impl<T> StreamServiceClient<T>
302 where
303 T: tonic::client::GrpcService<tonic::body::BoxBody>,
304 T::Error: Into<StdError>,
305 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
306 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
307 {
308 pub fn new(inner: T) -> Self {
309 let inner = tonic::client::Grpc::new(inner);
310 Self { inner }
311 }
312 pub fn with_origin(inner: T, origin: Uri) -> Self {
313 let inner = tonic::client::Grpc::with_origin(inner, origin);
314 Self { inner }
315 }
316 pub fn with_interceptor<F>(
317 inner: T,
318 interceptor: F,
319 ) -> StreamServiceClient<InterceptedService<T, F>>
320 where
321 F: tonic::service::Interceptor,
322 T::ResponseBody: Default,
323 T: tonic::codegen::Service<
324 http::Request<tonic::body::BoxBody>,
325 Response = http::Response<
326 <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
327 >,
328 >,
329 <T as tonic::codegen::Service<
330 http::Request<tonic::body::BoxBody>,
331 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
332 {
333 StreamServiceClient::new(InterceptedService::new(inner, interceptor))
334 }
335 #[must_use]
340 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
341 self.inner = self.inner.send_compressed(encoding);
342 self
343 }
344 #[must_use]
346 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
347 self.inner = self.inner.accept_compressed(encoding);
348 self
349 }
350 #[must_use]
354 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
355 self.inner = self.inner.max_decoding_message_size(limit);
356 self
357 }
358 #[must_use]
362 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
363 self.inner = self.inner.max_encoding_message_size(limit);
364 self
365 }
366 pub async fn streaming_control_stream(
367 &mut self,
368 request: impl tonic::IntoStreamingRequest<
369 Message = super::StreamingControlStreamRequest,
370 >,
371 ) -> std::result::Result<
372 tonic::Response<
373 tonic::codec::Streaming<super::StreamingControlStreamResponse>,
374 >,
375 tonic::Status,
376 > {
377 self.inner
378 .ready()
379 .await
380 .map_err(|e| {
381 tonic::Status::unknown(
382 format!("Service was not ready: {}", e.into()),
383 )
384 })?;
385 let codec = tonic::codec::ProstCodec::default();
386 let path = http::uri::PathAndQuery::from_static(
387 "/stream_service.StreamService/StreamingControlStream",
388 );
389 let mut req = request.into_streaming_request();
390 req.extensions_mut()
391 .insert(
392 GrpcMethod::new(
393 "stream_service.StreamService",
394 "StreamingControlStream",
395 ),
396 );
397 self.inner.streaming(req, path, codec).await
398 }
399 pub async fn get_min_uncommitted_object_id(
400 &mut self,
401 request: impl tonic::IntoRequest<super::GetMinUncommittedObjectIdRequest>,
402 ) -> std::result::Result<
403 tonic::Response<super::GetMinUncommittedObjectIdResponse>,
404 tonic::Status,
405 > {
406 self.inner
407 .ready()
408 .await
409 .map_err(|e| {
410 tonic::Status::unknown(
411 format!("Service was not ready: {}", e.into()),
412 )
413 })?;
414 let codec = tonic::codec::ProstCodec::default();
415 let path = http::uri::PathAndQuery::from_static(
416 "/stream_service.StreamService/GetMinUncommittedObjectId",
417 );
418 let mut req = request.into_request();
419 req.extensions_mut()
420 .insert(
421 GrpcMethod::new(
422 "stream_service.StreamService",
423 "GetMinUncommittedObjectId",
424 ),
425 );
426 self.inner.unary(req, path, codec).await
427 }
428 }
429}
430pub mod stream_service_server {
432 #![allow(
433 unused_variables,
434 dead_code,
435 missing_docs,
436 clippy::wildcard_imports,
437 clippy::let_unit_value,
438 )]
439 use tonic::codegen::*;
440 #[async_trait]
442 pub trait StreamService: std::marker::Send + std::marker::Sync + 'static {
443 type StreamingControlStreamStream: tonic::codegen::tokio_stream::Stream<
445 Item = std::result::Result<
446 super::StreamingControlStreamResponse,
447 tonic::Status,
448 >,
449 >
450 + std::marker::Send
451 + 'static;
452 async fn streaming_control_stream(
453 &self,
454 request: tonic::Request<
455 tonic::Streaming<super::StreamingControlStreamRequest>,
456 >,
457 ) -> std::result::Result<
458 tonic::Response<Self::StreamingControlStreamStream>,
459 tonic::Status,
460 >;
461 async fn get_min_uncommitted_object_id(
462 &self,
463 request: tonic::Request<super::GetMinUncommittedObjectIdRequest>,
464 ) -> std::result::Result<
465 tonic::Response<super::GetMinUncommittedObjectIdResponse>,
466 tonic::Status,
467 >;
468 }
469 #[derive(Debug)]
470 pub struct StreamServiceServer<T> {
471 inner: Arc<T>,
472 accept_compression_encodings: EnabledCompressionEncodings,
473 send_compression_encodings: EnabledCompressionEncodings,
474 max_decoding_message_size: Option<usize>,
475 max_encoding_message_size: Option<usize>,
476 }
477 impl<T> StreamServiceServer<T> {
478 pub fn new(inner: T) -> Self {
479 Self::from_arc(Arc::new(inner))
480 }
481 pub fn from_arc(inner: Arc<T>) -> Self {
482 Self {
483 inner,
484 accept_compression_encodings: Default::default(),
485 send_compression_encodings: Default::default(),
486 max_decoding_message_size: None,
487 max_encoding_message_size: None,
488 }
489 }
490 pub fn with_interceptor<F>(
491 inner: T,
492 interceptor: F,
493 ) -> InterceptedService<Self, F>
494 where
495 F: tonic::service::Interceptor,
496 {
497 InterceptedService::new(Self::new(inner), interceptor)
498 }
499 #[must_use]
501 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
502 self.accept_compression_encodings.enable(encoding);
503 self
504 }
505 #[must_use]
507 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
508 self.send_compression_encodings.enable(encoding);
509 self
510 }
511 #[must_use]
515 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
516 self.max_decoding_message_size = Some(limit);
517 self
518 }
519 #[must_use]
523 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
524 self.max_encoding_message_size = Some(limit);
525 self
526 }
527 }
528 impl<T, B> tonic::codegen::Service<http::Request<B>> for StreamServiceServer<T>
529 where
530 T: StreamService,
531 B: Body + std::marker::Send + 'static,
532 B::Error: Into<StdError> + std::marker::Send + 'static,
533 {
534 type Response = http::Response<tonic::body::BoxBody>;
535 type Error = std::convert::Infallible;
536 type Future = BoxFuture<Self::Response, Self::Error>;
537 fn poll_ready(
538 &mut self,
539 _cx: &mut Context<'_>,
540 ) -> Poll<std::result::Result<(), Self::Error>> {
541 Poll::Ready(Ok(()))
542 }
543 fn call(&mut self, req: http::Request<B>) -> Self::Future {
544 match req.uri().path() {
545 "/stream_service.StreamService/StreamingControlStream" => {
546 #[allow(non_camel_case_types)]
547 struct StreamingControlStreamSvc<T: StreamService>(pub Arc<T>);
548 impl<
549 T: StreamService,
550 > tonic::server::StreamingService<
551 super::StreamingControlStreamRequest,
552 > for StreamingControlStreamSvc<T> {
553 type Response = super::StreamingControlStreamResponse;
554 type ResponseStream = T::StreamingControlStreamStream;
555 type Future = BoxFuture<
556 tonic::Response<Self::ResponseStream>,
557 tonic::Status,
558 >;
559 fn call(
560 &mut self,
561 request: tonic::Request<
562 tonic::Streaming<super::StreamingControlStreamRequest>,
563 >,
564 ) -> Self::Future {
565 let inner = Arc::clone(&self.0);
566 let fut = async move {
567 <T as StreamService>::streaming_control_stream(
568 &inner,
569 request,
570 )
571 .await
572 };
573 Box::pin(fut)
574 }
575 }
576 let accept_compression_encodings = self.accept_compression_encodings;
577 let send_compression_encodings = self.send_compression_encodings;
578 let max_decoding_message_size = self.max_decoding_message_size;
579 let max_encoding_message_size = self.max_encoding_message_size;
580 let inner = self.inner.clone();
581 let fut = async move {
582 let method = StreamingControlStreamSvc(inner);
583 let codec = tonic::codec::ProstCodec::default();
584 let mut grpc = tonic::server::Grpc::new(codec)
585 .apply_compression_config(
586 accept_compression_encodings,
587 send_compression_encodings,
588 )
589 .apply_max_message_size_config(
590 max_decoding_message_size,
591 max_encoding_message_size,
592 );
593 let res = grpc.streaming(method, req).await;
594 Ok(res)
595 };
596 Box::pin(fut)
597 }
598 "/stream_service.StreamService/GetMinUncommittedObjectId" => {
599 #[allow(non_camel_case_types)]
600 struct GetMinUncommittedObjectIdSvc<T: StreamService>(pub Arc<T>);
601 impl<
602 T: StreamService,
603 > tonic::server::UnaryService<
604 super::GetMinUncommittedObjectIdRequest,
605 > for GetMinUncommittedObjectIdSvc<T> {
606 type Response = super::GetMinUncommittedObjectIdResponse;
607 type Future = BoxFuture<
608 tonic::Response<Self::Response>,
609 tonic::Status,
610 >;
611 fn call(
612 &mut self,
613 request: tonic::Request<
614 super::GetMinUncommittedObjectIdRequest,
615 >,
616 ) -> Self::Future {
617 let inner = Arc::clone(&self.0);
618 let fut = async move {
619 <T as StreamService>::get_min_uncommitted_object_id(
620 &inner,
621 request,
622 )
623 .await
624 };
625 Box::pin(fut)
626 }
627 }
628 let accept_compression_encodings = self.accept_compression_encodings;
629 let send_compression_encodings = self.send_compression_encodings;
630 let max_decoding_message_size = self.max_decoding_message_size;
631 let max_encoding_message_size = self.max_encoding_message_size;
632 let inner = self.inner.clone();
633 let fut = async move {
634 let method = GetMinUncommittedObjectIdSvc(inner);
635 let codec = tonic::codec::ProstCodec::default();
636 let mut grpc = tonic::server::Grpc::new(codec)
637 .apply_compression_config(
638 accept_compression_encodings,
639 send_compression_encodings,
640 )
641 .apply_max_message_size_config(
642 max_decoding_message_size,
643 max_encoding_message_size,
644 );
645 let res = grpc.unary(method, req).await;
646 Ok(res)
647 };
648 Box::pin(fut)
649 }
650 _ => {
651 Box::pin(async move {
652 let mut response = http::Response::new(empty_body());
653 let headers = response.headers_mut();
654 headers
655 .insert(
656 tonic::Status::GRPC_STATUS,
657 (tonic::Code::Unimplemented as i32).into(),
658 );
659 headers
660 .insert(
661 http::header::CONTENT_TYPE,
662 tonic::metadata::GRPC_CONTENT_TYPE,
663 );
664 Ok(response)
665 })
666 }
667 }
668 }
669 }
670 impl<T> Clone for StreamServiceServer<T> {
671 fn clone(&self) -> Self {
672 let inner = self.inner.clone();
673 Self {
674 inner,
675 accept_compression_encodings: self.accept_compression_encodings,
676 send_compression_encodings: self.send_compression_encodings,
677 max_decoding_message_size: self.max_decoding_message_size,
678 max_encoding_message_size: self.max_encoding_message_size,
679 }
680 }
681 }
682 pub const SERVICE_NAME: &str = "stream_service.StreamService";
684 impl<T> tonic::server::NamedService for StreamServiceServer<T> {
685 const NAME: &'static str = SERVICE_NAME;
686 }
687}