ora_proto/generated/
ora.server.v1.rs

1// This file is @generated by prost-build.
2/// Request for `Heartbeat`.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ExecutorConnectionRequest {
5    /// A message sent from the executor.
6    #[prost(message, optional, tag = "1")]
7    pub message: ::core::option::Option<ExecutorMessage>,
8}
9impl ::prost::Name for ExecutorConnectionRequest {
10    const NAME: &'static str = "ExecutorConnectionRequest";
11    const PACKAGE: &'static str = "ora.server.v1";
12    fn full_name() -> ::prost::alloc::string::String {
13        "ora.server.v1.ExecutorConnectionRequest".into()
14    }
15    fn type_url() -> ::prost::alloc::string::String {
16        "/ora.server.v1.ExecutorConnectionRequest".into()
17    }
18}
19/// Response for `Heartbeat`.
20#[derive(Clone, PartialEq, ::prost::Message)]
21pub struct ExecutorConnectionResponse {
22    /// A message sent from the server.
23    #[prost(message, optional, tag = "1")]
24    pub message: ::core::option::Option<ServerMessage>,
25}
26impl ::prost::Name for ExecutorConnectionResponse {
27    const NAME: &'static str = "ExecutorConnectionResponse";
28    const PACKAGE: &'static str = "ora.server.v1";
29    fn full_name() -> ::prost::alloc::string::String {
30        "ora.server.v1.ExecutorConnectionResponse".into()
31    }
32    fn type_url() -> ::prost::alloc::string::String {
33        "/ora.server.v1.ExecutorConnectionResponse".into()
34    }
35}
36/// A message sent from the executor.
37#[derive(Clone, PartialEq, ::prost::Message)]
38pub struct ExecutorMessage {
39    /// The message.
40    #[prost(oneof = "executor_message::ExecutorMessageKind", tags = "1, 2, 3, 4, 5")]
41    pub executor_message_kind: ::core::option::Option<
42        executor_message::ExecutorMessageKind,
43    >,
44}
45/// Nested message and enum types in `ExecutorMessage`.
46pub mod executor_message {
47    /// The message.
48    #[derive(Clone, PartialEq, ::prost::Oneof)]
49    pub enum ExecutorMessageKind {
50        /// The capabilities of the executor.
51        ///
52        /// The executor must send the capabilities
53        /// as the first message in the stream
54        /// before any heartbeats, subsequent capabilities
55        /// messages might be ignored.
56        #[prost(message, tag = "1")]
57        Capabilities(super::ExecutorCapabilities),
58        /// The heartbeat request.
59        #[prost(message, tag = "2")]
60        Heartbeat(super::ExecutorHeartbeat),
61        /// The job execution has started.
62        #[prost(message, tag = "3")]
63        ExecutionStarted(super::ExecutionStarted),
64        /// The execution has succeeded.
65        #[prost(message, tag = "4")]
66        ExecutionSucceeded(super::ExecutionSucceeded),
67        /// The execution has failed.
68        #[prost(message, tag = "5")]
69        ExecutionFailed(super::ExecutionFailed),
70    }
71}
72impl ::prost::Name for ExecutorMessage {
73    const NAME: &'static str = "ExecutorMessage";
74    const PACKAGE: &'static str = "ora.server.v1";
75    fn full_name() -> ::prost::alloc::string::String {
76        "ora.server.v1.ExecutorMessage".into()
77    }
78    fn type_url() -> ::prost::alloc::string::String {
79        "/ora.server.v1.ExecutorMessage".into()
80    }
81}
82/// Capabilities of the executor and other information
83/// that the server needs to know about the executor.
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct ExecutorCapabilities {
86    /// The name of the executor.
87    #[prost(string, tag = "1")]
88    pub name: ::prost::alloc::string::String,
89    /// The supported job types.
90    #[prost(message, repeated, tag = "2")]
91    pub supported_job_types: ::prost::alloc::vec::Vec<super::super::common::v1::JobType>,
92    /// The maximum number of concurrent job executions.
93    ///
94    /// The server will not assign more than `max_concurrent_executions`
95    /// job executions at the same time.
96    ///
97    /// 0 means no limit. Note that other than this currently
98    /// there is no backpressure mechanism in place, a sensible
99    /// limit is recommended in all cases.
100    #[prost(uint32, tag = "3")]
101    pub max_concurrent_executions: u32,
102}
103impl ::prost::Name for ExecutorCapabilities {
104    const NAME: &'static str = "ExecutorCapabilities";
105    const PACKAGE: &'static str = "ora.server.v1";
106    fn full_name() -> ::prost::alloc::string::String {
107        "ora.server.v1.ExecutorCapabilities".into()
108    }
109    fn type_url() -> ::prost::alloc::string::String {
110        "/ora.server.v1.ExecutorCapabilities".into()
111    }
112}
113/// The heartbeat content.
114#[derive(Clone, Copy, PartialEq, ::prost::Message)]
115pub struct ExecutorHeartbeat {}
116impl ::prost::Name for ExecutorHeartbeat {
117    const NAME: &'static str = "ExecutorHeartbeat";
118    const PACKAGE: &'static str = "ora.server.v1";
119    fn full_name() -> ::prost::alloc::string::String {
120        "ora.server.v1.ExecutorHeartbeat".into()
121    }
122    fn type_url() -> ::prost::alloc::string::String {
123        "/ora.server.v1.ExecutorHeartbeat".into()
124    }
125}
126/// The job execution has started.
127#[derive(Clone, PartialEq, ::prost::Message)]
128pub struct ExecutionStarted {
129    /// The ID of the job execution.
130    #[prost(string, tag = "1")]
131    pub execution_id: ::prost::alloc::string::String,
132    /// The time when the job execution started.
133    #[prost(message, optional, tag = "2")]
134    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
135}
136impl ::prost::Name for ExecutionStarted {
137    const NAME: &'static str = "ExecutionStarted";
138    const PACKAGE: &'static str = "ora.server.v1";
139    fn full_name() -> ::prost::alloc::string::String {
140        "ora.server.v1.ExecutionStarted".into()
141    }
142    fn type_url() -> ::prost::alloc::string::String {
143        "/ora.server.v1.ExecutionStarted".into()
144    }
145}
146/// A job execution has succeeded.
147#[derive(Clone, PartialEq, ::prost::Message)]
148pub struct ExecutionSucceeded {
149    /// The ID of the job execution.
150    #[prost(string, tag = "1")]
151    pub execution_id: ::prost::alloc::string::String,
152    /// The time when the job execution succeeded.
153    #[prost(message, optional, tag = "2")]
154    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
155    /// The output payload of the job.
156    #[prost(string, tag = "3")]
157    pub output_payload_json: ::prost::alloc::string::String,
158}
159impl ::prost::Name for ExecutionSucceeded {
160    const NAME: &'static str = "ExecutionSucceeded";
161    const PACKAGE: &'static str = "ora.server.v1";
162    fn full_name() -> ::prost::alloc::string::String {
163        "ora.server.v1.ExecutionSucceeded".into()
164    }
165    fn type_url() -> ::prost::alloc::string::String {
166        "/ora.server.v1.ExecutionSucceeded".into()
167    }
168}
169/// The job execution has failed.
170#[derive(Clone, PartialEq, ::prost::Message)]
171pub struct ExecutionFailed {
172    /// The ID of the job execution.
173    #[prost(string, tag = "1")]
174    pub execution_id: ::prost::alloc::string::String,
175    /// The time when the job execution failed.
176    #[prost(message, optional, tag = "2")]
177    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
178    /// The error message of the job.
179    #[prost(string, tag = "3")]
180    pub error_message: ::prost::alloc::string::String,
181}
182impl ::prost::Name for ExecutionFailed {
183    const NAME: &'static str = "ExecutionFailed";
184    const PACKAGE: &'static str = "ora.server.v1";
185    fn full_name() -> ::prost::alloc::string::String {
186        "ora.server.v1.ExecutionFailed".into()
187    }
188    fn type_url() -> ::prost::alloc::string::String {
189        "/ora.server.v1.ExecutionFailed".into()
190    }
191}
192/// A message sent from the server.
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct ServerMessage {
195    /// The message.
196    #[prost(oneof = "server_message::ServerMessageKind", tags = "1, 2, 3")]
197    pub server_message_kind: ::core::option::Option<server_message::ServerMessageKind>,
198}
199/// Nested message and enum types in `ServerMessage`.
200pub mod server_message {
201    /// The message.
202    #[derive(Clone, PartialEq, ::prost::Oneof)]
203    pub enum ServerMessageKind {
204        /// The properties of the executor.
205        #[prost(message, tag = "1")]
206        Properties(super::ExecutorProperties),
207        /// A job execution is ready to be executed by the executor.
208        #[prost(message, tag = "2")]
209        ExecutionReady(super::ExecutionReady),
210        /// The job execution was cancelled and should be dropped by the executor.
211        #[prost(message, tag = "3")]
212        ExecutionCancelled(super::ExecutionCancelled),
213    }
214}
215impl ::prost::Name for ServerMessage {
216    const NAME: &'static str = "ServerMessage";
217    const PACKAGE: &'static str = "ora.server.v1";
218    fn full_name() -> ::prost::alloc::string::String {
219        "ora.server.v1.ServerMessage".into()
220    }
221    fn type_url() -> ::prost::alloc::string::String {
222        "/ora.server.v1.ServerMessage".into()
223    }
224}
225/// Properties of the executor assigned by the server.
226#[derive(Clone, PartialEq, ::prost::Message)]
227pub struct ExecutorProperties {
228    /// The ID given to the executor.
229    #[prost(string, tag = "1")]
230    pub executor_id: ::prost::alloc::string::String,
231    /// The maximum interval between heartbeats.
232    ///
233    /// Executors should repeat the executor ping
234    /// request at least every `max_heartbeat_interval`.
235    ///
236    /// Note that delays in the network or the server
237    /// may cause the executor to miss the deadline,
238    /// so the executor should send the heartbeat
239    /// before the deadline to account for this.
240    #[prost(message, optional, tag = "2")]
241    pub max_heartbeat_interval: ::core::option::Option<::prost_types::Duration>,
242}
243impl ::prost::Name for ExecutorProperties {
244    const NAME: &'static str = "ExecutorProperties";
245    const PACKAGE: &'static str = "ora.server.v1";
246    fn full_name() -> ::prost::alloc::string::String {
247        "ora.server.v1.ExecutorProperties".into()
248    }
249    fn type_url() -> ::prost::alloc::string::String {
250        "/ora.server.v1.ExecutorProperties".into()
251    }
252}
253/// A job execution is ready to be executed by the executor.
254#[derive(Clone, PartialEq, ::prost::Message)]
255pub struct ExecutionReady {
256    /// The ID of the job.
257    #[prost(string, tag = "1")]
258    pub job_id: ::prost::alloc::string::String,
259    /// The execution ID of the job.
260    #[prost(string, tag = "2")]
261    pub execution_id: ::prost::alloc::string::String,
262    /// The job type ID.
263    #[prost(string, tag = "3")]
264    pub job_type_id: ::prost::alloc::string::String,
265    /// The attempt number of the job execution.
266    ///
267    /// The first attempt is 1.
268    #[prost(uint64, tag = "4")]
269    pub attempt_number: u64,
270    /// The input payload of the job.
271    #[prost(string, tag = "5")]
272    pub input_payload_json: ::prost::alloc::string::String,
273    /// The target execution time of the job.
274    #[prost(message, optional, tag = "6")]
275    pub target_execution_time: ::core::option::Option<::prost_types::Timestamp>,
276}
277impl ::prost::Name for ExecutionReady {
278    const NAME: &'static str = "ExecutionReady";
279    const PACKAGE: &'static str = "ora.server.v1";
280    fn full_name() -> ::prost::alloc::string::String {
281        "ora.server.v1.ExecutionReady".into()
282    }
283    fn type_url() -> ::prost::alloc::string::String {
284        "/ora.server.v1.ExecutionReady".into()
285    }
286}
287/// The job execution was cancelled and should be dropped by the executor.
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct ExecutionCancelled {
290    /// The ID of the job execution.
291    #[prost(string, tag = "1")]
292    pub execution_id: ::prost::alloc::string::String,
293}
294impl ::prost::Name for ExecutionCancelled {
295    const NAME: &'static str = "ExecutionCancelled";
296    const PACKAGE: &'static str = "ora.server.v1";
297    fn full_name() -> ::prost::alloc::string::String {
298        "ora.server.v1.ExecutionCancelled".into()
299    }
300    fn type_url() -> ::prost::alloc::string::String {
301        "/ora.server.v1.ExecutionCancelled".into()
302    }
303}
304/// Generated client implementations.
305pub mod executor_service_client {
306    #![allow(
307        unused_variables,
308        dead_code,
309        missing_docs,
310        clippy::wildcard_imports,
311        clippy::let_unit_value,
312    )]
313    use tonic::codegen::*;
314    use tonic::codegen::http::Uri;
315    /// Endpoint on the server for a single executor.
316    #[derive(Debug, Clone)]
317    pub struct ExecutorServiceClient<T> {
318        inner: tonic::client::Grpc<T>,
319    }
320    impl ExecutorServiceClient<tonic::transport::Channel> {
321        /// Attempt to create a new client by connecting to a given endpoint.
322        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
323        where
324            D: TryInto<tonic::transport::Endpoint>,
325            D::Error: Into<StdError>,
326        {
327            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
328            Ok(Self::new(conn))
329        }
330    }
331    impl<T> ExecutorServiceClient<T>
332    where
333        T: tonic::client::GrpcService<tonic::body::BoxBody>,
334        T::Error: Into<StdError>,
335        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
336        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
337    {
338        pub fn new(inner: T) -> Self {
339            let inner = tonic::client::Grpc::new(inner);
340            Self { inner }
341        }
342        pub fn with_origin(inner: T, origin: Uri) -> Self {
343            let inner = tonic::client::Grpc::with_origin(inner, origin);
344            Self { inner }
345        }
346        pub fn with_interceptor<F>(
347            inner: T,
348            interceptor: F,
349        ) -> ExecutorServiceClient<InterceptedService<T, F>>
350        where
351            F: tonic::service::Interceptor,
352            T::ResponseBody: Default,
353            T: tonic::codegen::Service<
354                http::Request<tonic::body::BoxBody>,
355                Response = http::Response<
356                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
357                >,
358            >,
359            <T as tonic::codegen::Service<
360                http::Request<tonic::body::BoxBody>,
361            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
362        {
363            ExecutorServiceClient::new(InterceptedService::new(inner, interceptor))
364        }
365        /// Compress requests with the given encoding.
366        ///
367        /// This requires the server to support it otherwise it might respond with an
368        /// error.
369        #[must_use]
370        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
371            self.inner = self.inner.send_compressed(encoding);
372            self
373        }
374        /// Enable decompressing responses.
375        #[must_use]
376        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
377            self.inner = self.inner.accept_compressed(encoding);
378            self
379        }
380        /// Limits the maximum size of a decoded message.
381        ///
382        /// Default: `4MB`
383        #[must_use]
384        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
385            self.inner = self.inner.max_decoding_message_size(limit);
386            self
387        }
388        /// Limits the maximum size of an encoded message.
389        ///
390        /// Default: `usize::MAX`
391        #[must_use]
392        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
393            self.inner = self.inner.max_encoding_message_size(limit);
394            self
395        }
396        /// Long-lived bidirectional stream for the executor.
397        pub async fn executor_connection(
398            &mut self,
399            request: impl tonic::IntoStreamingRequest<
400                Message = super::ExecutorConnectionRequest,
401            >,
402        ) -> std::result::Result<
403            tonic::Response<tonic::codec::Streaming<super::ExecutorConnectionResponse>>,
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                "/ora.server.v1.ExecutorService/ExecutorConnection",
417            );
418            let mut req = request.into_streaming_request();
419            req.extensions_mut()
420                .insert(
421                    GrpcMethod::new(
422                        "ora.server.v1.ExecutorService",
423                        "ExecutorConnection",
424                    ),
425                );
426            self.inner.streaming(req, path, codec).await
427        }
428    }
429}
430/// Generated server implementations.
431pub mod executor_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    /// Generated trait containing gRPC methods that should be implemented for use with ExecutorServiceServer.
441    #[async_trait]
442    pub trait ExecutorService: std::marker::Send + std::marker::Sync + 'static {
443        /// Long-lived bidirectional stream for the executor.
444        async fn executor_connection(
445            &self,
446            request: tonic::Request<tonic::Streaming<super::ExecutorConnectionRequest>>,
447        ) -> std::result::Result<
448            tonic::Response<BoxStream<super::ExecutorConnectionResponse>>,
449            tonic::Status,
450        > {
451            Err(tonic::Status::unimplemented("Not yet implemented"))
452        }
453    }
454    /// Endpoint on the server for a single executor.
455    #[derive(Debug)]
456    pub struct ExecutorServiceServer<T> {
457        inner: Arc<T>,
458        accept_compression_encodings: EnabledCompressionEncodings,
459        send_compression_encodings: EnabledCompressionEncodings,
460        max_decoding_message_size: Option<usize>,
461        max_encoding_message_size: Option<usize>,
462    }
463    impl<T> ExecutorServiceServer<T> {
464        pub fn new(inner: T) -> Self {
465            Self::from_arc(Arc::new(inner))
466        }
467        pub fn from_arc(inner: Arc<T>) -> Self {
468            Self {
469                inner,
470                accept_compression_encodings: Default::default(),
471                send_compression_encodings: Default::default(),
472                max_decoding_message_size: None,
473                max_encoding_message_size: None,
474            }
475        }
476        pub fn with_interceptor<F>(
477            inner: T,
478            interceptor: F,
479        ) -> InterceptedService<Self, F>
480        where
481            F: tonic::service::Interceptor,
482        {
483            InterceptedService::new(Self::new(inner), interceptor)
484        }
485        /// Enable decompressing requests with the given encoding.
486        #[must_use]
487        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
488            self.accept_compression_encodings.enable(encoding);
489            self
490        }
491        /// Compress responses with the given encoding, if the client supports it.
492        #[must_use]
493        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
494            self.send_compression_encodings.enable(encoding);
495            self
496        }
497        /// Limits the maximum size of a decoded message.
498        ///
499        /// Default: `4MB`
500        #[must_use]
501        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
502            self.max_decoding_message_size = Some(limit);
503            self
504        }
505        /// Limits the maximum size of an encoded message.
506        ///
507        /// Default: `usize::MAX`
508        #[must_use]
509        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
510            self.max_encoding_message_size = Some(limit);
511            self
512        }
513    }
514    impl<T, B> tonic::codegen::Service<http::Request<B>> for ExecutorServiceServer<T>
515    where
516        T: ExecutorService,
517        B: Body + std::marker::Send + 'static,
518        B::Error: Into<StdError> + std::marker::Send + 'static,
519    {
520        type Response = http::Response<tonic::body::BoxBody>;
521        type Error = std::convert::Infallible;
522        type Future = BoxFuture<Self::Response, Self::Error>;
523        fn poll_ready(
524            &mut self,
525            _cx: &mut Context<'_>,
526        ) -> Poll<std::result::Result<(), Self::Error>> {
527            Poll::Ready(Ok(()))
528        }
529        fn call(&mut self, req: http::Request<B>) -> Self::Future {
530            match req.uri().path() {
531                "/ora.server.v1.ExecutorService/ExecutorConnection" => {
532                    #[allow(non_camel_case_types)]
533                    struct ExecutorConnectionSvc<T: ExecutorService>(pub Arc<T>);
534                    impl<
535                        T: ExecutorService,
536                    > tonic::server::StreamingService<super::ExecutorConnectionRequest>
537                    for ExecutorConnectionSvc<T> {
538                        type Response = super::ExecutorConnectionResponse;
539                        type ResponseStream = BoxStream<
540                            super::ExecutorConnectionResponse,
541                        >;
542                        type Future = BoxFuture<
543                            tonic::Response<Self::ResponseStream>,
544                            tonic::Status,
545                        >;
546                        fn call(
547                            &mut self,
548                            request: tonic::Request<
549                                tonic::Streaming<super::ExecutorConnectionRequest>,
550                            >,
551                        ) -> Self::Future {
552                            let inner = Arc::clone(&self.0);
553                            let fut = async move {
554                                <T as ExecutorService>::executor_connection(&inner, request)
555                                    .await
556                            };
557                            Box::pin(fut)
558                        }
559                    }
560                    let accept_compression_encodings = self.accept_compression_encodings;
561                    let send_compression_encodings = self.send_compression_encodings;
562                    let max_decoding_message_size = self.max_decoding_message_size;
563                    let max_encoding_message_size = self.max_encoding_message_size;
564                    let inner = self.inner.clone();
565                    let fut = async move {
566                        let method = ExecutorConnectionSvc(inner);
567                        let codec = tonic::codec::ProstCodec::default();
568                        let mut grpc = tonic::server::Grpc::new(codec)
569                            .apply_compression_config(
570                                accept_compression_encodings,
571                                send_compression_encodings,
572                            )
573                            .apply_max_message_size_config(
574                                max_decoding_message_size,
575                                max_encoding_message_size,
576                            );
577                        let res = grpc.streaming(method, req).await;
578                        Ok(res)
579                    };
580                    Box::pin(fut)
581                }
582                _ => {
583                    Box::pin(async move {
584                        let mut response = http::Response::new(empty_body());
585                        let headers = response.headers_mut();
586                        headers
587                            .insert(
588                                tonic::Status::GRPC_STATUS,
589                                (tonic::Code::Unimplemented as i32).into(),
590                            );
591                        headers
592                            .insert(
593                                http::header::CONTENT_TYPE,
594                                tonic::metadata::GRPC_CONTENT_TYPE,
595                            );
596                        Ok(response)
597                    })
598                }
599            }
600        }
601    }
602    impl<T> Clone for ExecutorServiceServer<T> {
603        fn clone(&self) -> Self {
604            let inner = self.inner.clone();
605            Self {
606                inner,
607                accept_compression_encodings: self.accept_compression_encodings,
608                send_compression_encodings: self.send_compression_encodings,
609                max_decoding_message_size: self.max_decoding_message_size,
610                max_encoding_message_size: self.max_encoding_message_size,
611            }
612        }
613    }
614    /// Generated gRPC service name
615    pub const SERVICE_NAME: &str = "ora.server.v1.ExecutorService";
616    impl<T> tonic::server::NamedService for ExecutorServiceServer<T> {
617        const NAME: &'static str = SERVICE_NAME;
618    }
619}
620/// Request for `AddJobs`.
621#[derive(Clone, PartialEq, ::prost::Message)]
622pub struct AddJobsRequest {
623    /// The jobs to add.
624    #[prost(message, repeated, tag = "1")]
625    pub jobs: ::prost::alloc::vec::Vec<super::super::common::v1::JobDefinition>,
626}
627impl ::prost::Name for AddJobsRequest {
628    const NAME: &'static str = "AddJobsRequest";
629    const PACKAGE: &'static str = "ora.server.v1";
630    fn full_name() -> ::prost::alloc::string::String {
631        "ora.server.v1.AddJobsRequest".into()
632    }
633    fn type_url() -> ::prost::alloc::string::String {
634        "/ora.server.v1.AddJobsRequest".into()
635    }
636}
637/// Response for `AddJobs`.
638#[derive(Clone, PartialEq, ::prost::Message)]
639pub struct AddJobsResponse {
640    /// The IDs of the added jobs.
641    #[prost(string, repeated, tag = "1")]
642    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
643}
644impl ::prost::Name for AddJobsResponse {
645    const NAME: &'static str = "AddJobsResponse";
646    const PACKAGE: &'static str = "ora.server.v1";
647    fn full_name() -> ::prost::alloc::string::String {
648        "ora.server.v1.AddJobsResponse".into()
649    }
650    fn type_url() -> ::prost::alloc::string::String {
651        "/ora.server.v1.AddJobsResponse".into()
652    }
653}
654/// Request for `ListJobs`.
655#[derive(Clone, PartialEq, ::prost::Message)]
656pub struct ListJobsRequest {
657    /// A cursor that can be used to continue a previous query.
658    ///
659    /// Note that if the cursor is present, filters
660    /// and order may be ignored.
661    #[prost(string, optional, tag = "1")]
662    pub cursor: ::core::option::Option<::prost::alloc::string::String>,
663    /// Filter the returned jobs.
664    #[prost(message, optional, tag = "2")]
665    pub filter: ::core::option::Option<JobQueryFilter>,
666    /// The order of the returned jobs.
667    #[prost(enumeration = "JobQueryOrder", optional, tag = "3")]
668    pub order: ::core::option::Option<i32>,
669    /// The maximum number of jobs to return.
670    ///
671    /// If the number is 0, the amount
672    /// returned is unspecified.
673    #[prost(uint32, tag = "4")]
674    pub limit: u32,
675}
676impl ::prost::Name for ListJobsRequest {
677    const NAME: &'static str = "ListJobsRequest";
678    const PACKAGE: &'static str = "ora.server.v1";
679    fn full_name() -> ::prost::alloc::string::String {
680        "ora.server.v1.ListJobsRequest".into()
681    }
682    fn type_url() -> ::prost::alloc::string::String {
683        "/ora.server.v1.ListJobsRequest".into()
684    }
685}
686/// Response for `ListJobs`.
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct ListJobsResponse {
689    /// A batch of jobs.
690    #[prost(message, repeated, tag = "1")]
691    pub jobs: ::prost::alloc::vec::Vec<Job>,
692    /// A cursor that can be used to continue a previous query.
693    ///
694    /// A cursor may be present even if there are no more
695    /// jobs to return.
696    ///
697    /// Note that the format of the cursor is implementation-specific
698    /// and should not be relied upon.
699    #[prost(string, optional, tag = "2")]
700    pub cursor: ::core::option::Option<::prost::alloc::string::String>,
701    /// Whether there are more jobs to return.
702    #[prost(bool, tag = "3")]
703    pub has_more: bool,
704}
705impl ::prost::Name for ListJobsResponse {
706    const NAME: &'static str = "ListJobsResponse";
707    const PACKAGE: &'static str = "ora.server.v1";
708    fn full_name() -> ::prost::alloc::string::String {
709        "ora.server.v1.ListJobsResponse".into()
710    }
711    fn type_url() -> ::prost::alloc::string::String {
712        "/ora.server.v1.ListJobsResponse".into()
713    }
714}
715/// Request for `ListJobTypes`.
716#[derive(Clone, Copy, PartialEq, ::prost::Message)]
717pub struct ListJobTypesRequest {}
718impl ::prost::Name for ListJobTypesRequest {
719    const NAME: &'static str = "ListJobTypesRequest";
720    const PACKAGE: &'static str = "ora.server.v1";
721    fn full_name() -> ::prost::alloc::string::String {
722        "ora.server.v1.ListJobTypesRequest".into()
723    }
724    fn type_url() -> ::prost::alloc::string::String {
725        "/ora.server.v1.ListJobTypesRequest".into()
726    }
727}
728/// Response for `ListJobTypes`.
729#[derive(Clone, PartialEq, ::prost::Message)]
730pub struct ListJobTypesResponse {
731    /// The job types.
732    #[prost(message, repeated, tag = "1")]
733    pub job_types: ::prost::alloc::vec::Vec<super::super::common::v1::JobType>,
734}
735impl ::prost::Name for ListJobTypesResponse {
736    const NAME: &'static str = "ListJobTypesResponse";
737    const PACKAGE: &'static str = "ora.server.v1";
738    fn full_name() -> ::prost::alloc::string::String {
739        "ora.server.v1.ListJobTypesResponse".into()
740    }
741    fn type_url() -> ::prost::alloc::string::String {
742        "/ora.server.v1.ListJobTypesResponse".into()
743    }
744}
745/// Request for `CountJobs`.
746#[derive(Clone, PartialEq, ::prost::Message)]
747pub struct CountJobsRequest {
748    /// Filter the jobs to count.
749    #[prost(message, optional, tag = "1")]
750    pub filter: ::core::option::Option<JobQueryFilter>,
751}
752impl ::prost::Name for CountJobsRequest {
753    const NAME: &'static str = "CountJobsRequest";
754    const PACKAGE: &'static str = "ora.server.v1";
755    fn full_name() -> ::prost::alloc::string::String {
756        "ora.server.v1.CountJobsRequest".into()
757    }
758    fn type_url() -> ::prost::alloc::string::String {
759        "/ora.server.v1.CountJobsRequest".into()
760    }
761}
762/// Response for `CountJobs`.
763#[derive(Clone, Copy, PartialEq, ::prost::Message)]
764pub struct CountJobsResponse {
765    /// The number of jobs.
766    #[prost(uint64, tag = "1")]
767    pub count: u64,
768}
769impl ::prost::Name for CountJobsResponse {
770    const NAME: &'static str = "CountJobsResponse";
771    const PACKAGE: &'static str = "ora.server.v1";
772    fn full_name() -> ::prost::alloc::string::String {
773        "ora.server.v1.CountJobsResponse".into()
774    }
775    fn type_url() -> ::prost::alloc::string::String {
776        "/ora.server.v1.CountJobsResponse".into()
777    }
778}
779/// Request for `CancelJobs`.
780#[derive(Clone, PartialEq, ::prost::Message)]
781pub struct CancelJobsRequest {
782    /// The filter to select the jobs to cancel.
783    #[prost(message, optional, tag = "1")]
784    pub filter: ::core::option::Option<JobQueryFilter>,
785}
786impl ::prost::Name for CancelJobsRequest {
787    const NAME: &'static str = "CancelJobsRequest";
788    const PACKAGE: &'static str = "ora.server.v1";
789    fn full_name() -> ::prost::alloc::string::String {
790        "ora.server.v1.CancelJobsRequest".into()
791    }
792    fn type_url() -> ::prost::alloc::string::String {
793        "/ora.server.v1.CancelJobsRequest".into()
794    }
795}
796/// Response for `CancelJobs`.
797#[derive(Clone, PartialEq, ::prost::Message)]
798pub struct CancelJobsResponse {
799    /// The IDs of the cancelled jobs.
800    #[prost(string, repeated, tag = "1")]
801    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
802}
803impl ::prost::Name for CancelJobsResponse {
804    const NAME: &'static str = "CancelJobsResponse";
805    const PACKAGE: &'static str = "ora.server.v1";
806    fn full_name() -> ::prost::alloc::string::String {
807        "ora.server.v1.CancelJobsResponse".into()
808    }
809    fn type_url() -> ::prost::alloc::string::String {
810        "/ora.server.v1.CancelJobsResponse".into()
811    }
812}
813/// Request for `DeleteInactiveJobs`.
814#[derive(Clone, PartialEq, ::prost::Message)]
815pub struct DeleteInactiveJobsRequest {
816    /// The filter to select the jobs to remove.
817    #[prost(message, optional, tag = "1")]
818    pub filter: ::core::option::Option<JobQueryFilter>,
819}
820impl ::prost::Name for DeleteInactiveJobsRequest {
821    const NAME: &'static str = "DeleteInactiveJobsRequest";
822    const PACKAGE: &'static str = "ora.server.v1";
823    fn full_name() -> ::prost::alloc::string::String {
824        "ora.server.v1.DeleteInactiveJobsRequest".into()
825    }
826    fn type_url() -> ::prost::alloc::string::String {
827        "/ora.server.v1.DeleteInactiveJobsRequest".into()
828    }
829}
830/// Response for `DeleteInactiveJobs`.
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct DeleteInactiveJobsResponse {
833    /// The IDs of the cleaned up jobs.
834    #[prost(string, repeated, tag = "1")]
835    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
836}
837impl ::prost::Name for DeleteInactiveJobsResponse {
838    const NAME: &'static str = "DeleteInactiveJobsResponse";
839    const PACKAGE: &'static str = "ora.server.v1";
840    fn full_name() -> ::prost::alloc::string::String {
841        "ora.server.v1.DeleteInactiveJobsResponse".into()
842    }
843    fn type_url() -> ::prost::alloc::string::String {
844        "/ora.server.v1.DeleteInactiveJobsResponse".into()
845    }
846}
847/// Request for `ListExecutors`.
848#[derive(Clone, Copy, PartialEq, ::prost::Message)]
849pub struct ListExecutorsRequest {}
850impl ::prost::Name for ListExecutorsRequest {
851    const NAME: &'static str = "ListExecutorsRequest";
852    const PACKAGE: &'static str = "ora.server.v1";
853    fn full_name() -> ::prost::alloc::string::String {
854        "ora.server.v1.ListExecutorsRequest".into()
855    }
856    fn type_url() -> ::prost::alloc::string::String {
857        "/ora.server.v1.ListExecutorsRequest".into()
858    }
859}
860/// Response for `ListExecutors`.
861#[derive(Clone, PartialEq, ::prost::Message)]
862pub struct ListExecutorsResponse {
863    /// The executors.
864    #[prost(message, repeated, tag = "1")]
865    pub executors: ::prost::alloc::vec::Vec<ExecutorInfo>,
866}
867impl ::prost::Name for ListExecutorsResponse {
868    const NAME: &'static str = "ListExecutorsResponse";
869    const PACKAGE: &'static str = "ora.server.v1";
870    fn full_name() -> ::prost::alloc::string::String {
871        "ora.server.v1.ListExecutorsResponse".into()
872    }
873    fn type_url() -> ::prost::alloc::string::String {
874        "/ora.server.v1.ListExecutorsResponse".into()
875    }
876}
877/// Request for `CreateSchedules`.
878#[derive(Clone, PartialEq, ::prost::Message)]
879pub struct CreateSchedulesRequest {
880    /// The schedules to create.
881    #[prost(message, repeated, tag = "1")]
882    pub schedules: ::prost::alloc::vec::Vec<
883        super::super::common::v1::ScheduleDefinition,
884    >,
885}
886impl ::prost::Name for CreateSchedulesRequest {
887    const NAME: &'static str = "CreateSchedulesRequest";
888    const PACKAGE: &'static str = "ora.server.v1";
889    fn full_name() -> ::prost::alloc::string::String {
890        "ora.server.v1.CreateSchedulesRequest".into()
891    }
892    fn type_url() -> ::prost::alloc::string::String {
893        "/ora.server.v1.CreateSchedulesRequest".into()
894    }
895}
896/// Response for `CreateSchedules`.
897#[derive(Clone, PartialEq, ::prost::Message)]
898pub struct CreateSchedulesResponse {
899    /// The IDs of the created schedules.
900    #[prost(string, repeated, tag = "1")]
901    pub schedule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
902}
903impl ::prost::Name for CreateSchedulesResponse {
904    const NAME: &'static str = "CreateSchedulesResponse";
905    const PACKAGE: &'static str = "ora.server.v1";
906    fn full_name() -> ::prost::alloc::string::String {
907        "ora.server.v1.CreateSchedulesResponse".into()
908    }
909    fn type_url() -> ::prost::alloc::string::String {
910        "/ora.server.v1.CreateSchedulesResponse".into()
911    }
912}
913/// Request for `ListSchedules`.
914#[derive(Clone, PartialEq, ::prost::Message)]
915pub struct ListSchedulesRequest {
916    /// A cursor that can be used to continue a previous query.
917    ///
918    /// Note that if the cursor is present, filters
919    /// and order may be ignored.
920    #[prost(string, optional, tag = "1")]
921    pub cursor: ::core::option::Option<::prost::alloc::string::String>,
922    /// Filter the returned schedules.
923    #[prost(message, optional, tag = "2")]
924    pub filter: ::core::option::Option<ScheduleQueryFilter>,
925    /// The order of the returned schedules.
926    #[prost(enumeration = "ScheduleQueryOrder", optional, tag = "3")]
927    pub order: ::core::option::Option<i32>,
928    /// The maximum number of schedules to return.
929    ///
930    /// If the number is 0, the amount
931    /// returned is unspecified.
932    #[prost(uint32, tag = "4")]
933    pub limit: u32,
934}
935impl ::prost::Name for ListSchedulesRequest {
936    const NAME: &'static str = "ListSchedulesRequest";
937    const PACKAGE: &'static str = "ora.server.v1";
938    fn full_name() -> ::prost::alloc::string::String {
939        "ora.server.v1.ListSchedulesRequest".into()
940    }
941    fn type_url() -> ::prost::alloc::string::String {
942        "/ora.server.v1.ListSchedulesRequest".into()
943    }
944}
945/// Response for `ListSchedules`.
946#[derive(Clone, PartialEq, ::prost::Message)]
947pub struct ListSchedulesResponse {
948    /// A batch of schedules.
949    #[prost(message, repeated, tag = "1")]
950    pub schedules: ::prost::alloc::vec::Vec<Schedule>,
951    /// A cursor that can be used to continue a previous query.
952    ///
953    /// A cursor may be present even if there are no more
954    /// schedules to return.
955    ///
956    /// Note that the format of the cursor is implementation-specific
957    /// and should not be relied upon.
958    #[prost(string, optional, tag = "2")]
959    pub cursor: ::core::option::Option<::prost::alloc::string::String>,
960    /// Whether there are more schedules to return.
961    #[prost(bool, tag = "3")]
962    pub has_more: bool,
963}
964impl ::prost::Name for ListSchedulesResponse {
965    const NAME: &'static str = "ListSchedulesResponse";
966    const PACKAGE: &'static str = "ora.server.v1";
967    fn full_name() -> ::prost::alloc::string::String {
968        "ora.server.v1.ListSchedulesResponse".into()
969    }
970    fn type_url() -> ::prost::alloc::string::String {
971        "/ora.server.v1.ListSchedulesResponse".into()
972    }
973}
974/// Request for `CountSchedules`.
975#[derive(Clone, PartialEq, ::prost::Message)]
976pub struct CountSchedulesRequest {
977    /// Filter the schedules to count.
978    #[prost(message, optional, tag = "1")]
979    pub filter: ::core::option::Option<ScheduleQueryFilter>,
980}
981impl ::prost::Name for CountSchedulesRequest {
982    const NAME: &'static str = "CountSchedulesRequest";
983    const PACKAGE: &'static str = "ora.server.v1";
984    fn full_name() -> ::prost::alloc::string::String {
985        "ora.server.v1.CountSchedulesRequest".into()
986    }
987    fn type_url() -> ::prost::alloc::string::String {
988        "/ora.server.v1.CountSchedulesRequest".into()
989    }
990}
991/// Response for `CountSchedules`.
992#[derive(Clone, Copy, PartialEq, ::prost::Message)]
993pub struct CountSchedulesResponse {
994    /// The number of schedules.
995    #[prost(uint64, tag = "1")]
996    pub count: u64,
997}
998impl ::prost::Name for CountSchedulesResponse {
999    const NAME: &'static str = "CountSchedulesResponse";
1000    const PACKAGE: &'static str = "ora.server.v1";
1001    fn full_name() -> ::prost::alloc::string::String {
1002        "ora.server.v1.CountSchedulesResponse".into()
1003    }
1004    fn type_url() -> ::prost::alloc::string::String {
1005        "/ora.server.v1.CountSchedulesResponse".into()
1006    }
1007}
1008/// Request for `CancelSchedules`.
1009#[derive(Clone, PartialEq, ::prost::Message)]
1010pub struct CancelSchedulesRequest {
1011    /// The filter to select the schedules to cancel.
1012    #[prost(message, optional, tag = "1")]
1013    pub filter: ::core::option::Option<ScheduleQueryFilter>,
1014    /// Whether to also cancel the jobs created by the schedules.
1015    #[prost(bool, tag = "2")]
1016    pub cancel_jobs: bool,
1017}
1018impl ::prost::Name for CancelSchedulesRequest {
1019    const NAME: &'static str = "CancelSchedulesRequest";
1020    const PACKAGE: &'static str = "ora.server.v1";
1021    fn full_name() -> ::prost::alloc::string::String {
1022        "ora.server.v1.CancelSchedulesRequest".into()
1023    }
1024    fn type_url() -> ::prost::alloc::string::String {
1025        "/ora.server.v1.CancelSchedulesRequest".into()
1026    }
1027}
1028/// Response for `CancelSchedules`.
1029#[derive(Clone, PartialEq, ::prost::Message)]
1030pub struct CancelSchedulesResponse {
1031    /// The IDs of the cancelled schedules.
1032    #[prost(string, repeated, tag = "1")]
1033    pub schedule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1034    /// The IDs of the cancelled jobs that were
1035    /// created by the schedules.
1036    #[prost(string, repeated, tag = "2")]
1037    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1038}
1039impl ::prost::Name for CancelSchedulesResponse {
1040    const NAME: &'static str = "CancelSchedulesResponse";
1041    const PACKAGE: &'static str = "ora.server.v1";
1042    fn full_name() -> ::prost::alloc::string::String {
1043        "ora.server.v1.CancelSchedulesResponse".into()
1044    }
1045    fn type_url() -> ::prost::alloc::string::String {
1046        "/ora.server.v1.CancelSchedulesResponse".into()
1047    }
1048}
1049/// Request for `DeleteInactiveSchedules`.
1050#[derive(Clone, PartialEq, ::prost::Message)]
1051pub struct DeleteInactiveSchedulesRequest {
1052    /// The filter to select the schedules to remove.
1053    #[prost(message, optional, tag = "1")]
1054    pub filter: ::core::option::Option<ScheduleQueryFilter>,
1055}
1056impl ::prost::Name for DeleteInactiveSchedulesRequest {
1057    const NAME: &'static str = "DeleteInactiveSchedulesRequest";
1058    const PACKAGE: &'static str = "ora.server.v1";
1059    fn full_name() -> ::prost::alloc::string::String {
1060        "ora.server.v1.DeleteInactiveSchedulesRequest".into()
1061    }
1062    fn type_url() -> ::prost::alloc::string::String {
1063        "/ora.server.v1.DeleteInactiveSchedulesRequest".into()
1064    }
1065}
1066/// Response for `DeleteInactiveSchedules`.
1067#[derive(Clone, PartialEq, ::prost::Message)]
1068pub struct DeleteInactiveSchedulesResponse {
1069    /// The IDs of the cleaned up schedules.
1070    #[prost(string, repeated, tag = "1")]
1071    pub schedule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1072}
1073impl ::prost::Name for DeleteInactiveSchedulesResponse {
1074    const NAME: &'static str = "DeleteInactiveSchedulesResponse";
1075    const PACKAGE: &'static str = "ora.server.v1";
1076    fn full_name() -> ::prost::alloc::string::String {
1077        "ora.server.v1.DeleteInactiveSchedulesResponse".into()
1078    }
1079    fn type_url() -> ::prost::alloc::string::String {
1080        "/ora.server.v1.DeleteInactiveSchedulesResponse".into()
1081    }
1082}
1083/// Filter of job queries.
1084#[derive(Clone, PartialEq, ::prost::Message)]
1085pub struct JobQueryFilter {
1086    /// The job IDs to filter by.
1087    ///
1088    /// If the list is empty, all jobs are included.
1089    #[prost(string, repeated, tag = "1")]
1090    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1091    /// The job type IDs to filter by.
1092    ///
1093    /// If the list is empty, all job types are included.
1094    #[prost(string, repeated, tag = "2")]
1095    pub job_type_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1096    /// The execution IDs to filter by.
1097    ///
1098    /// If the list is empty, all executors are included.
1099    #[prost(string, repeated, tag = "3")]
1100    pub execution_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1101    /// The schedule IDs to filter by.
1102    ///
1103    /// If the list is empty, all schedules and jobs without
1104    /// schedules are included.
1105    #[prost(string, repeated, tag = "4")]
1106    pub schedule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1107    /// A list of execution statuses to filter by.
1108    /// If the list is empty, all statuses are included.
1109    ///
1110    /// If a job has multiple executions, the last
1111    /// execution status is used.
1112    ///
1113    /// If a job has no executions, its status is
1114    /// considered to be pending.
1115    #[prost(enumeration = "JobExecutionStatus", repeated, tag = "5")]
1116    pub status: ::prost::alloc::vec::Vec<i32>,
1117    /// A list of labels to filter by.
1118    ///
1119    /// If multiple filters are specified, all of them
1120    /// must match.
1121    #[prost(message, repeated, tag = "6")]
1122    pub labels: ::prost::alloc::vec::Vec<JobLabelFilter>,
1123    /// Only include active or inactive jobs.
1124    ///
1125    /// If not provided, all jobs are included.
1126    #[prost(bool, optional, tag = "7")]
1127    pub active: ::core::option::Option<bool>,
1128    /// Filter by the target execution time.
1129    ///
1130    /// The range can be open-ended in either direction.
1131    #[prost(message, optional, tag = "8")]
1132    pub target_execution_time: ::core::option::Option<
1133        super::super::common::v1::TimeRange,
1134    >,
1135    /// Filter by the time the job was created.
1136    ///
1137    /// The range can be open-ended in either direction.
1138    #[prost(message, optional, tag = "9")]
1139    pub created_at: ::core::option::Option<super::super::common::v1::TimeRange>,
1140}
1141impl ::prost::Name for JobQueryFilter {
1142    const NAME: &'static str = "JobQueryFilter";
1143    const PACKAGE: &'static str = "ora.server.v1";
1144    fn full_name() -> ::prost::alloc::string::String {
1145        "ora.server.v1.JobQueryFilter".into()
1146    }
1147    fn type_url() -> ::prost::alloc::string::String {
1148        "/ora.server.v1.JobQueryFilter".into()
1149    }
1150}
1151/// A job label filter.
1152#[derive(Clone, PartialEq, ::prost::Message)]
1153pub struct JobLabelFilter {
1154    /// The key of the label.
1155    #[prost(string, tag = "1")]
1156    pub key: ::prost::alloc::string::String,
1157    /// The condition of matching the value.
1158    #[prost(oneof = "job_label_filter::Value", tags = "2, 3")]
1159    pub value: ::core::option::Option<job_label_filter::Value>,
1160}
1161/// Nested message and enum types in `JobLabelFilter`.
1162pub mod job_label_filter {
1163    /// The condition of matching the value.
1164    #[derive(Clone, PartialEq, ::prost::Oneof)]
1165    pub enum Value {
1166        /// Whether the label should exist with any value.
1167        #[prost(enumeration = "super::LabelFilterExistCondition", tag = "2")]
1168        Exists(i32),
1169        /// The value must be equal to the given value.
1170        #[prost(string, tag = "3")]
1171        Equals(::prost::alloc::string::String),
1172    }
1173}
1174impl ::prost::Name for JobLabelFilter {
1175    const NAME: &'static str = "JobLabelFilter";
1176    const PACKAGE: &'static str = "ora.server.v1";
1177    fn full_name() -> ::prost::alloc::string::String {
1178        "ora.server.v1.JobLabelFilter".into()
1179    }
1180    fn type_url() -> ::prost::alloc::string::String {
1181        "/ora.server.v1.JobLabelFilter".into()
1182    }
1183}
1184/// A job.
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct Job {
1187    /// The ID of the job.
1188    #[prost(string, tag = "1")]
1189    pub id: ::prost::alloc::string::String,
1190    /// The ID of the schedule that created the job.
1191    #[prost(string, optional, tag = "2")]
1192    pub schedule_id: ::core::option::Option<::prost::alloc::string::String>,
1193    /// The job definition.
1194    #[prost(message, optional, tag = "3")]
1195    pub definition: ::core::option::Option<super::super::common::v1::JobDefinition>,
1196    /// The time the job was created.
1197    #[prost(message, optional, tag = "4")]
1198    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1199    /// All the executions of this job.
1200    #[prost(message, repeated, tag = "5")]
1201    pub executions: ::prost::alloc::vec::Vec<JobExecution>,
1202    /// Whether the job is active.
1203    #[prost(bool, tag = "6")]
1204    pub active: bool,
1205    /// Whether the job was cancelled.
1206    #[prost(bool, tag = "7")]
1207    pub cancelled: bool,
1208}
1209impl ::prost::Name for Job {
1210    const NAME: &'static str = "Job";
1211    const PACKAGE: &'static str = "ora.server.v1";
1212    fn full_name() -> ::prost::alloc::string::String {
1213        "ora.server.v1.Job".into()
1214    }
1215    fn type_url() -> ::prost::alloc::string::String {
1216        "/ora.server.v1.Job".into()
1217    }
1218}
1219#[derive(Clone, PartialEq, ::prost::Message)]
1220pub struct JobExecution {
1221    /// The ID of the job execution.
1222    #[prost(string, tag = "1")]
1223    pub id: ::prost::alloc::string::String,
1224    /// The ID of the job.
1225    #[prost(string, tag = "2")]
1226    pub job_id: ::prost::alloc::string::String,
1227    /// The ID of the associated executor.
1228    #[prost(string, optional, tag = "3")]
1229    pub executor_id: ::core::option::Option<::prost::alloc::string::String>,
1230    /// The status of the job execution.
1231    #[prost(enumeration = "JobExecutionStatus", tag = "4")]
1232    pub status: i32,
1233    /// The time the job execution was created.
1234    #[prost(message, optional, tag = "5")]
1235    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1236    /// The time the job execution was marked as ready.
1237    #[prost(message, optional, tag = "6")]
1238    pub ready_at: ::core::option::Option<::prost_types::Timestamp>,
1239    /// The time the job execution was assigned to an executor.
1240    #[prost(message, optional, tag = "7")]
1241    pub assigned_at: ::core::option::Option<::prost_types::Timestamp>,
1242    /// The time the job execution has started.
1243    #[prost(message, optional, tag = "8")]
1244    pub started_at: ::core::option::Option<::prost_types::Timestamp>,
1245    /// The time the job execution has succeeded.
1246    #[prost(message, optional, tag = "9")]
1247    pub succeeded_at: ::core::option::Option<::prost_types::Timestamp>,
1248    /// The time the job execution has failed.
1249    #[prost(message, optional, tag = "10")]
1250    pub failed_at: ::core::option::Option<::prost_types::Timestamp>,
1251    /// The output payload of the execution.
1252    #[prost(string, optional, tag = "11")]
1253    pub output_payload_json: ::core::option::Option<::prost::alloc::string::String>,
1254    /// The error message of the execution.
1255    #[prost(string, optional, tag = "12")]
1256    pub failure_reason: ::core::option::Option<::prost::alloc::string::String>,
1257}
1258impl ::prost::Name for JobExecution {
1259    const NAME: &'static str = "JobExecution";
1260    const PACKAGE: &'static str = "ora.server.v1";
1261    fn full_name() -> ::prost::alloc::string::String {
1262        "ora.server.v1.JobExecution".into()
1263    }
1264    fn type_url() -> ::prost::alloc::string::String {
1265        "/ora.server.v1.JobExecution".into()
1266    }
1267}
1268/// Information about an executor.
1269#[derive(Clone, PartialEq, ::prost::Message)]
1270pub struct ExecutorInfo {
1271    /// The ID of the executor.
1272    #[prost(string, tag = "1")]
1273    pub id: ::prost::alloc::string::String,
1274    /// The name of the executor.
1275    #[prost(string, tag = "2")]
1276    pub name: ::prost::alloc::string::String,
1277    /// The time the executor was last seen.
1278    #[prost(message, optional, tag = "3")]
1279    pub last_seen_at: ::core::option::Option<::prost_types::Timestamp>,
1280    /// Whether the executor is alive.
1281    #[prost(bool, tag = "4")]
1282    pub alive: bool,
1283    /// The job types supported by the executor.
1284    #[prost(string, repeated, tag = "5")]
1285    pub supported_job_type_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1286    /// The maximum number of concurrent job executions.
1287    #[prost(uint32, tag = "6")]
1288    pub max_concurrent_executions: u32,
1289    /// A list of execution IDs assigned to the executor.
1290    #[prost(string, repeated, tag = "7")]
1291    pub assigned_execution_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1292}
1293impl ::prost::Name for ExecutorInfo {
1294    const NAME: &'static str = "ExecutorInfo";
1295    const PACKAGE: &'static str = "ora.server.v1";
1296    fn full_name() -> ::prost::alloc::string::String {
1297        "ora.server.v1.ExecutorInfo".into()
1298    }
1299    fn type_url() -> ::prost::alloc::string::String {
1300        "/ora.server.v1.ExecutorInfo".into()
1301    }
1302}
1303/// A schedule.
1304#[derive(Clone, PartialEq, ::prost::Message)]
1305pub struct Schedule {
1306    /// The ID of the schedule.
1307    #[prost(string, tag = "1")]
1308    pub id: ::prost::alloc::string::String,
1309    /// The schedule definition.
1310    #[prost(message, optional, tag = "2")]
1311    pub definition: ::core::option::Option<super::super::common::v1::ScheduleDefinition>,
1312    /// The time the schedule was created.
1313    #[prost(message, optional, tag = "3")]
1314    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1315    /// Whether the schedule is active.
1316    #[prost(bool, tag = "5")]
1317    pub active: bool,
1318    /// Whether the schedule was cancelled.
1319    #[prost(bool, tag = "6")]
1320    pub cancelled: bool,
1321}
1322impl ::prost::Name for Schedule {
1323    const NAME: &'static str = "Schedule";
1324    const PACKAGE: &'static str = "ora.server.v1";
1325    fn full_name() -> ::prost::alloc::string::String {
1326        "ora.server.v1.Schedule".into()
1327    }
1328    fn type_url() -> ::prost::alloc::string::String {
1329        "/ora.server.v1.Schedule".into()
1330    }
1331}
1332/// Filter of schedule queries.
1333#[derive(Clone, PartialEq, ::prost::Message)]
1334pub struct ScheduleQueryFilter {
1335    /// The schedule IDs to filter by.
1336    ///
1337    /// If the list is empty, all schedules are included.
1338    #[prost(string, repeated, tag = "1")]
1339    pub schedule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1340    /// Filter by job IDs that
1341    /// are created by the schedules.
1342    ///
1343    /// If the list is empty, no filtering is done.
1344    #[prost(string, repeated, tag = "2")]
1345    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1346    /// Filter by job type IDs of jobs
1347    /// that are created by the schedules (if applicable).
1348    ///
1349    /// If the list is empty, no filtering is done.
1350    #[prost(string, repeated, tag = "3")]
1351    pub job_type_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1352    /// A list of labels to filter by.
1353    ///
1354    /// If multiple filters are specified, all of them
1355    /// must match.
1356    #[prost(message, repeated, tag = "4")]
1357    pub labels: ::prost::alloc::vec::Vec<ScheduleLabelFilter>,
1358    /// Only include active or inactive schedules.
1359    ///
1360    /// If not provided, all schedules are included.
1361    #[prost(bool, optional, tag = "5")]
1362    pub active: ::core::option::Option<bool>,
1363    /// Filter by the time the schedule was created.
1364    ///
1365    /// The range can be open-ended in either direction.
1366    #[prost(message, optional, tag = "6")]
1367    pub created_at: ::core::option::Option<super::super::common::v1::TimeRange>,
1368}
1369impl ::prost::Name for ScheduleQueryFilter {
1370    const NAME: &'static str = "ScheduleQueryFilter";
1371    const PACKAGE: &'static str = "ora.server.v1";
1372    fn full_name() -> ::prost::alloc::string::String {
1373        "ora.server.v1.ScheduleQueryFilter".into()
1374    }
1375    fn type_url() -> ::prost::alloc::string::String {
1376        "/ora.server.v1.ScheduleQueryFilter".into()
1377    }
1378}
1379/// A schedule label filter.
1380#[derive(Clone, PartialEq, ::prost::Message)]
1381pub struct ScheduleLabelFilter {
1382    /// The key of the label.
1383    #[prost(string, tag = "1")]
1384    pub key: ::prost::alloc::string::String,
1385    /// The condition of matching the value.
1386    #[prost(oneof = "schedule_label_filter::Value", tags = "2, 3")]
1387    pub value: ::core::option::Option<schedule_label_filter::Value>,
1388}
1389/// Nested message and enum types in `ScheduleLabelFilter`.
1390pub mod schedule_label_filter {
1391    /// The condition of matching the value.
1392    #[derive(Clone, PartialEq, ::prost::Oneof)]
1393    pub enum Value {
1394        /// Whether the label should exist with any value.
1395        #[prost(enumeration = "super::LabelFilterExistCondition", tag = "2")]
1396        Exists(i32),
1397        /// The value must be equal to the given value.
1398        #[prost(string, tag = "3")]
1399        Equals(::prost::alloc::string::String),
1400    }
1401}
1402impl ::prost::Name for ScheduleLabelFilter {
1403    const NAME: &'static str = "ScheduleLabelFilter";
1404    const PACKAGE: &'static str = "ora.server.v1";
1405    fn full_name() -> ::prost::alloc::string::String {
1406        "ora.server.v1.ScheduleLabelFilter".into()
1407    }
1408    fn type_url() -> ::prost::alloc::string::String {
1409        "/ora.server.v1.ScheduleLabelFilter".into()
1410    }
1411}
1412/// The order of jobs returned.
1413#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1414#[repr(i32)]
1415pub enum JobQueryOrder {
1416    /// The order is unspecified.
1417    Unspecified = 0,
1418    /// Order by the time the job was created in ascending order.
1419    CreatedAtAsc = 1,
1420    /// Order by the time the job was created in descending order.
1421    CreatedAtDesc = 2,
1422    /// Order by the target execution time in ascending order.
1423    TargetExecutionTimeAsc = 3,
1424    /// Order by the target execution time in descending order.
1425    TargetExecutionTimeDesc = 4,
1426}
1427impl JobQueryOrder {
1428    /// String value of the enum field names used in the ProtoBuf definition.
1429    ///
1430    /// The values are not transformed in any way and thus are considered stable
1431    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1432    pub fn as_str_name(&self) -> &'static str {
1433        match self {
1434            Self::Unspecified => "JOB_QUERY_ORDER_UNSPECIFIED",
1435            Self::CreatedAtAsc => "JOB_QUERY_ORDER_CREATED_AT_ASC",
1436            Self::CreatedAtDesc => "JOB_QUERY_ORDER_CREATED_AT_DESC",
1437            Self::TargetExecutionTimeAsc => "JOB_QUERY_ORDER_TARGET_EXECUTION_TIME_ASC",
1438            Self::TargetExecutionTimeDesc => "JOB_QUERY_ORDER_TARGET_EXECUTION_TIME_DESC",
1439        }
1440    }
1441    /// Creates an enum from field names used in the ProtoBuf definition.
1442    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1443        match value {
1444            "JOB_QUERY_ORDER_UNSPECIFIED" => Some(Self::Unspecified),
1445            "JOB_QUERY_ORDER_CREATED_AT_ASC" => Some(Self::CreatedAtAsc),
1446            "JOB_QUERY_ORDER_CREATED_AT_DESC" => Some(Self::CreatedAtDesc),
1447            "JOB_QUERY_ORDER_TARGET_EXECUTION_TIME_ASC" => {
1448                Some(Self::TargetExecutionTimeAsc)
1449            }
1450            "JOB_QUERY_ORDER_TARGET_EXECUTION_TIME_DESC" => {
1451                Some(Self::TargetExecutionTimeDesc)
1452            }
1453            _ => None,
1454        }
1455    }
1456}
1457/// The status of a job execution.
1458#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1459#[repr(i32)]
1460pub enum JobExecutionStatus {
1461    /// The status is unspecified and depends on the implementation.
1462    Unspecified = 0,
1463    /// The job execution is pending and is not ready to run.
1464    Pending = 1,
1465    /// The job execution is ready to run.
1466    Ready = 2,
1467    /// The job execution was assigned to an executor.
1468    Assigned = 3,
1469    /// The job execution is running.
1470    Running = 4,
1471    /// The job execution is completed successfully.
1472    Succeeded = 5,
1473    /// The job execution is failed.
1474    Failed = 6,
1475}
1476impl JobExecutionStatus {
1477    /// String value of the enum field names used in the ProtoBuf definition.
1478    ///
1479    /// The values are not transformed in any way and thus are considered stable
1480    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1481    pub fn as_str_name(&self) -> &'static str {
1482        match self {
1483            Self::Unspecified => "JOB_EXECUTION_STATUS_UNSPECIFIED",
1484            Self::Pending => "JOB_EXECUTION_STATUS_PENDING",
1485            Self::Ready => "JOB_EXECUTION_STATUS_READY",
1486            Self::Assigned => "JOB_EXECUTION_STATUS_ASSIGNED",
1487            Self::Running => "JOB_EXECUTION_STATUS_RUNNING",
1488            Self::Succeeded => "JOB_EXECUTION_STATUS_SUCCEEDED",
1489            Self::Failed => "JOB_EXECUTION_STATUS_FAILED",
1490        }
1491    }
1492    /// Creates an enum from field names used in the ProtoBuf definition.
1493    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1494        match value {
1495            "JOB_EXECUTION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1496            "JOB_EXECUTION_STATUS_PENDING" => Some(Self::Pending),
1497            "JOB_EXECUTION_STATUS_READY" => Some(Self::Ready),
1498            "JOB_EXECUTION_STATUS_ASSIGNED" => Some(Self::Assigned),
1499            "JOB_EXECUTION_STATUS_RUNNING" => Some(Self::Running),
1500            "JOB_EXECUTION_STATUS_SUCCEEDED" => Some(Self::Succeeded),
1501            "JOB_EXECUTION_STATUS_FAILED" => Some(Self::Failed),
1502            _ => None,
1503        }
1504    }
1505}
1506/// The order of schedules returned.
1507#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1508#[repr(i32)]
1509pub enum ScheduleQueryOrder {
1510    /// The order is unspecified.
1511    Unspecified = 0,
1512    /// Order by the time the schedule was created in ascending order.
1513    CreatedAtAsc = 1,
1514    /// Order by the time the schedule was created in descending order.
1515    CreatedAtDesc = 2,
1516}
1517impl ScheduleQueryOrder {
1518    /// String value of the enum field names used in the ProtoBuf definition.
1519    ///
1520    /// The values are not transformed in any way and thus are considered stable
1521    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1522    pub fn as_str_name(&self) -> &'static str {
1523        match self {
1524            Self::Unspecified => "SCHEDULE_QUERY_ORDER_UNSPECIFIED",
1525            Self::CreatedAtAsc => "SCHEDULE_QUERY_ORDER_CREATED_AT_ASC",
1526            Self::CreatedAtDesc => "SCHEDULE_QUERY_ORDER_CREATED_AT_DESC",
1527        }
1528    }
1529    /// Creates an enum from field names used in the ProtoBuf definition.
1530    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1531        match value {
1532            "SCHEDULE_QUERY_ORDER_UNSPECIFIED" => Some(Self::Unspecified),
1533            "SCHEDULE_QUERY_ORDER_CREATED_AT_ASC" => Some(Self::CreatedAtAsc),
1534            "SCHEDULE_QUERY_ORDER_CREATED_AT_DESC" => Some(Self::CreatedAtDesc),
1535            _ => None,
1536        }
1537    }
1538}
1539#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1540#[repr(i32)]
1541pub enum LabelFilterExistCondition {
1542    /// The condition is unspecified.
1543    Unspecified = 0,
1544    /// The label must exist.
1545    Exists = 1,
1546}
1547impl LabelFilterExistCondition {
1548    /// String value of the enum field names used in the ProtoBuf definition.
1549    ///
1550    /// The values are not transformed in any way and thus are considered stable
1551    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1552    pub fn as_str_name(&self) -> &'static str {
1553        match self {
1554            Self::Unspecified => "LABEL_FILTER_EXIST_CONDITION_UNSPECIFIED",
1555            Self::Exists => "LABEL_FILTER_EXIST_CONDITION_EXISTS",
1556        }
1557    }
1558    /// Creates an enum from field names used in the ProtoBuf definition.
1559    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1560        match value {
1561            "LABEL_FILTER_EXIST_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
1562            "LABEL_FILTER_EXIST_CONDITION_EXISTS" => Some(Self::Exists),
1563            _ => None,
1564        }
1565    }
1566}
1567/// Generated client implementations.
1568pub mod admin_service_client {
1569    #![allow(
1570        unused_variables,
1571        dead_code,
1572        missing_docs,
1573        clippy::wildcard_imports,
1574        clippy::let_unit_value,
1575    )]
1576    use tonic::codegen::*;
1577    use tonic::codegen::http::Uri;
1578    /// A service that provides administrative functionality.
1579    #[derive(Debug, Clone)]
1580    pub struct AdminServiceClient<T> {
1581        inner: tonic::client::Grpc<T>,
1582    }
1583    impl AdminServiceClient<tonic::transport::Channel> {
1584        /// Attempt to create a new client by connecting to a given endpoint.
1585        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1586        where
1587            D: TryInto<tonic::transport::Endpoint>,
1588            D::Error: Into<StdError>,
1589        {
1590            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1591            Ok(Self::new(conn))
1592        }
1593    }
1594    impl<T> AdminServiceClient<T>
1595    where
1596        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1597        T::Error: Into<StdError>,
1598        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1599        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1600    {
1601        pub fn new(inner: T) -> Self {
1602            let inner = tonic::client::Grpc::new(inner);
1603            Self { inner }
1604        }
1605        pub fn with_origin(inner: T, origin: Uri) -> Self {
1606            let inner = tonic::client::Grpc::with_origin(inner, origin);
1607            Self { inner }
1608        }
1609        pub fn with_interceptor<F>(
1610            inner: T,
1611            interceptor: F,
1612        ) -> AdminServiceClient<InterceptedService<T, F>>
1613        where
1614            F: tonic::service::Interceptor,
1615            T::ResponseBody: Default,
1616            T: tonic::codegen::Service<
1617                http::Request<tonic::body::BoxBody>,
1618                Response = http::Response<
1619                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1620                >,
1621            >,
1622            <T as tonic::codegen::Service<
1623                http::Request<tonic::body::BoxBody>,
1624            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1625        {
1626            AdminServiceClient::new(InterceptedService::new(inner, interceptor))
1627        }
1628        /// Compress requests with the given encoding.
1629        ///
1630        /// This requires the server to support it otherwise it might respond with an
1631        /// error.
1632        #[must_use]
1633        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1634            self.inner = self.inner.send_compressed(encoding);
1635            self
1636        }
1637        /// Enable decompressing responses.
1638        #[must_use]
1639        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1640            self.inner = self.inner.accept_compressed(encoding);
1641            self
1642        }
1643        /// Limits the maximum size of a decoded message.
1644        ///
1645        /// Default: `4MB`
1646        #[must_use]
1647        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1648            self.inner = self.inner.max_decoding_message_size(limit);
1649            self
1650        }
1651        /// Limits the maximum size of an encoded message.
1652        ///
1653        /// Default: `usize::MAX`
1654        #[must_use]
1655        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1656            self.inner = self.inner.max_encoding_message_size(limit);
1657            self
1658        }
1659        /// Add jobs to be executed.
1660        pub async fn add_jobs(
1661            &mut self,
1662            request: impl tonic::IntoRequest<super::AddJobsRequest>,
1663        ) -> std::result::Result<
1664            tonic::Response<super::AddJobsResponse>,
1665            tonic::Status,
1666        > {
1667            self.inner
1668                .ready()
1669                .await
1670                .map_err(|e| {
1671                    tonic::Status::unknown(
1672                        format!("Service was not ready: {}", e.into()),
1673                    )
1674                })?;
1675            let codec = tonic::codec::ProstCodec::default();
1676            let path = http::uri::PathAndQuery::from_static(
1677                "/ora.server.v1.AdminService/AddJobs",
1678            );
1679            let mut req = request.into_request();
1680            req.extensions_mut()
1681                .insert(GrpcMethod::new("ora.server.v1.AdminService", "AddJobs"));
1682            self.inner.unary(req, path, codec).await
1683        }
1684        /// List jobs.
1685        pub async fn list_jobs(
1686            &mut self,
1687            request: impl tonic::IntoRequest<super::ListJobsRequest>,
1688        ) -> std::result::Result<
1689            tonic::Response<super::ListJobsResponse>,
1690            tonic::Status,
1691        > {
1692            self.inner
1693                .ready()
1694                .await
1695                .map_err(|e| {
1696                    tonic::Status::unknown(
1697                        format!("Service was not ready: {}", e.into()),
1698                    )
1699                })?;
1700            let codec = tonic::codec::ProstCodec::default();
1701            let path = http::uri::PathAndQuery::from_static(
1702                "/ora.server.v1.AdminService/ListJobs",
1703            );
1704            let mut req = request.into_request();
1705            req.extensions_mut()
1706                .insert(GrpcMethod::new("ora.server.v1.AdminService", "ListJobs"));
1707            self.inner.unary(req, path, codec).await
1708        }
1709        /// Count the number of jobs.
1710        pub async fn count_jobs(
1711            &mut self,
1712            request: impl tonic::IntoRequest<super::CountJobsRequest>,
1713        ) -> std::result::Result<
1714            tonic::Response<super::CountJobsResponse>,
1715            tonic::Status,
1716        > {
1717            self.inner
1718                .ready()
1719                .await
1720                .map_err(|e| {
1721                    tonic::Status::unknown(
1722                        format!("Service was not ready: {}", e.into()),
1723                    )
1724                })?;
1725            let codec = tonic::codec::ProstCodec::default();
1726            let path = http::uri::PathAndQuery::from_static(
1727                "/ora.server.v1.AdminService/CountJobs",
1728            );
1729            let mut req = request.into_request();
1730            req.extensions_mut()
1731                .insert(GrpcMethod::new("ora.server.v1.AdminService", "CountJobs"));
1732            self.inner.unary(req, path, codec).await
1733        }
1734        /// List all job types.
1735        pub async fn list_job_types(
1736            &mut self,
1737            request: impl tonic::IntoRequest<super::ListJobTypesRequest>,
1738        ) -> std::result::Result<
1739            tonic::Response<super::ListJobTypesResponse>,
1740            tonic::Status,
1741        > {
1742            self.inner
1743                .ready()
1744                .await
1745                .map_err(|e| {
1746                    tonic::Status::unknown(
1747                        format!("Service was not ready: {}", e.into()),
1748                    )
1749                })?;
1750            let codec = tonic::codec::ProstCodec::default();
1751            let path = http::uri::PathAndQuery::from_static(
1752                "/ora.server.v1.AdminService/ListJobTypes",
1753            );
1754            let mut req = request.into_request();
1755            req.extensions_mut()
1756                .insert(GrpcMethod::new("ora.server.v1.AdminService", "ListJobTypes"));
1757            self.inner.unary(req, path, codec).await
1758        }
1759        /// Cancel jobs.
1760        pub async fn cancel_jobs(
1761            &mut self,
1762            request: impl tonic::IntoRequest<super::CancelJobsRequest>,
1763        ) -> std::result::Result<
1764            tonic::Response<super::CancelJobsResponse>,
1765            tonic::Status,
1766        > {
1767            self.inner
1768                .ready()
1769                .await
1770                .map_err(|e| {
1771                    tonic::Status::unknown(
1772                        format!("Service was not ready: {}", e.into()),
1773                    )
1774                })?;
1775            let codec = tonic::codec::ProstCodec::default();
1776            let path = http::uri::PathAndQuery::from_static(
1777                "/ora.server.v1.AdminService/CancelJobs",
1778            );
1779            let mut req = request.into_request();
1780            req.extensions_mut()
1781                .insert(GrpcMethod::new("ora.server.v1.AdminService", "CancelJobs"));
1782            self.inner.unary(req, path, codec).await
1783        }
1784        /// Delete inactive jobs from storage.
1785        pub async fn delete_inactive_jobs(
1786            &mut self,
1787            request: impl tonic::IntoRequest<super::DeleteInactiveJobsRequest>,
1788        ) -> std::result::Result<
1789            tonic::Response<super::DeleteInactiveJobsResponse>,
1790            tonic::Status,
1791        > {
1792            self.inner
1793                .ready()
1794                .await
1795                .map_err(|e| {
1796                    tonic::Status::unknown(
1797                        format!("Service was not ready: {}", e.into()),
1798                    )
1799                })?;
1800            let codec = tonic::codec::ProstCodec::default();
1801            let path = http::uri::PathAndQuery::from_static(
1802                "/ora.server.v1.AdminService/DeleteInactiveJobs",
1803            );
1804            let mut req = request.into_request();
1805            req.extensions_mut()
1806                .insert(
1807                    GrpcMethod::new("ora.server.v1.AdminService", "DeleteInactiveJobs"),
1808                );
1809            self.inner.unary(req, path, codec).await
1810        }
1811        /// Get information about the executors.
1812        pub async fn list_executors(
1813            &mut self,
1814            request: impl tonic::IntoRequest<super::ListExecutorsRequest>,
1815        ) -> std::result::Result<
1816            tonic::Response<super::ListExecutorsResponse>,
1817            tonic::Status,
1818        > {
1819            self.inner
1820                .ready()
1821                .await
1822                .map_err(|e| {
1823                    tonic::Status::unknown(
1824                        format!("Service was not ready: {}", e.into()),
1825                    )
1826                })?;
1827            let codec = tonic::codec::ProstCodec::default();
1828            let path = http::uri::PathAndQuery::from_static(
1829                "/ora.server.v1.AdminService/ListExecutors",
1830            );
1831            let mut req = request.into_request();
1832            req.extensions_mut()
1833                .insert(GrpcMethod::new("ora.server.v1.AdminService", "ListExecutors"));
1834            self.inner.unary(req, path, codec).await
1835        }
1836        /// Create schedules.
1837        pub async fn create_schedules(
1838            &mut self,
1839            request: impl tonic::IntoRequest<super::CreateSchedulesRequest>,
1840        ) -> std::result::Result<
1841            tonic::Response<super::CreateSchedulesResponse>,
1842            tonic::Status,
1843        > {
1844            self.inner
1845                .ready()
1846                .await
1847                .map_err(|e| {
1848                    tonic::Status::unknown(
1849                        format!("Service was not ready: {}", e.into()),
1850                    )
1851                })?;
1852            let codec = tonic::codec::ProstCodec::default();
1853            let path = http::uri::PathAndQuery::from_static(
1854                "/ora.server.v1.AdminService/CreateSchedules",
1855            );
1856            let mut req = request.into_request();
1857            req.extensions_mut()
1858                .insert(
1859                    GrpcMethod::new("ora.server.v1.AdminService", "CreateSchedules"),
1860                );
1861            self.inner.unary(req, path, codec).await
1862        }
1863        /// List schedules.
1864        pub async fn list_schedules(
1865            &mut self,
1866            request: impl tonic::IntoRequest<super::ListSchedulesRequest>,
1867        ) -> std::result::Result<
1868            tonic::Response<super::ListSchedulesResponse>,
1869            tonic::Status,
1870        > {
1871            self.inner
1872                .ready()
1873                .await
1874                .map_err(|e| {
1875                    tonic::Status::unknown(
1876                        format!("Service was not ready: {}", e.into()),
1877                    )
1878                })?;
1879            let codec = tonic::codec::ProstCodec::default();
1880            let path = http::uri::PathAndQuery::from_static(
1881                "/ora.server.v1.AdminService/ListSchedules",
1882            );
1883            let mut req = request.into_request();
1884            req.extensions_mut()
1885                .insert(GrpcMethod::new("ora.server.v1.AdminService", "ListSchedules"));
1886            self.inner.unary(req, path, codec).await
1887        }
1888        /// Count the number of schedules.
1889        pub async fn count_schedules(
1890            &mut self,
1891            request: impl tonic::IntoRequest<super::CountSchedulesRequest>,
1892        ) -> std::result::Result<
1893            tonic::Response<super::CountSchedulesResponse>,
1894            tonic::Status,
1895        > {
1896            self.inner
1897                .ready()
1898                .await
1899                .map_err(|e| {
1900                    tonic::Status::unknown(
1901                        format!("Service was not ready: {}", e.into()),
1902                    )
1903                })?;
1904            let codec = tonic::codec::ProstCodec::default();
1905            let path = http::uri::PathAndQuery::from_static(
1906                "/ora.server.v1.AdminService/CountSchedules",
1907            );
1908            let mut req = request.into_request();
1909            req.extensions_mut()
1910                .insert(GrpcMethod::new("ora.server.v1.AdminService", "CountSchedules"));
1911            self.inner.unary(req, path, codec).await
1912        }
1913        /// Cancel schedules.
1914        pub async fn cancel_schedules(
1915            &mut self,
1916            request: impl tonic::IntoRequest<super::CancelSchedulesRequest>,
1917        ) -> std::result::Result<
1918            tonic::Response<super::CancelSchedulesResponse>,
1919            tonic::Status,
1920        > {
1921            self.inner
1922                .ready()
1923                .await
1924                .map_err(|e| {
1925                    tonic::Status::unknown(
1926                        format!("Service was not ready: {}", e.into()),
1927                    )
1928                })?;
1929            let codec = tonic::codec::ProstCodec::default();
1930            let path = http::uri::PathAndQuery::from_static(
1931                "/ora.server.v1.AdminService/CancelSchedules",
1932            );
1933            let mut req = request.into_request();
1934            req.extensions_mut()
1935                .insert(
1936                    GrpcMethod::new("ora.server.v1.AdminService", "CancelSchedules"),
1937                );
1938            self.inner.unary(req, path, codec).await
1939        }
1940        /// Delete inactive schedules from storage.
1941        pub async fn delete_inactive_schedules(
1942            &mut self,
1943            request: impl tonic::IntoRequest<super::DeleteInactiveSchedulesRequest>,
1944        ) -> std::result::Result<
1945            tonic::Response<super::DeleteInactiveSchedulesResponse>,
1946            tonic::Status,
1947        > {
1948            self.inner
1949                .ready()
1950                .await
1951                .map_err(|e| {
1952                    tonic::Status::unknown(
1953                        format!("Service was not ready: {}", e.into()),
1954                    )
1955                })?;
1956            let codec = tonic::codec::ProstCodec::default();
1957            let path = http::uri::PathAndQuery::from_static(
1958                "/ora.server.v1.AdminService/DeleteInactiveSchedules",
1959            );
1960            let mut req = request.into_request();
1961            req.extensions_mut()
1962                .insert(
1963                    GrpcMethod::new(
1964                        "ora.server.v1.AdminService",
1965                        "DeleteInactiveSchedules",
1966                    ),
1967                );
1968            self.inner.unary(req, path, codec).await
1969        }
1970    }
1971}
1972/// Generated server implementations.
1973pub mod admin_service_server {
1974    #![allow(
1975        unused_variables,
1976        dead_code,
1977        missing_docs,
1978        clippy::wildcard_imports,
1979        clippy::let_unit_value,
1980    )]
1981    use tonic::codegen::*;
1982    /// Generated trait containing gRPC methods that should be implemented for use with AdminServiceServer.
1983    #[async_trait]
1984    pub trait AdminService: std::marker::Send + std::marker::Sync + 'static {
1985        /// Add jobs to be executed.
1986        async fn add_jobs(
1987            &self,
1988            request: tonic::Request<super::AddJobsRequest>,
1989        ) -> std::result::Result<
1990            tonic::Response<super::AddJobsResponse>,
1991            tonic::Status,
1992        > {
1993            Err(tonic::Status::unimplemented("Not yet implemented"))
1994        }
1995        /// List jobs.
1996        async fn list_jobs(
1997            &self,
1998            request: tonic::Request<super::ListJobsRequest>,
1999        ) -> std::result::Result<
2000            tonic::Response<super::ListJobsResponse>,
2001            tonic::Status,
2002        > {
2003            Err(tonic::Status::unimplemented("Not yet implemented"))
2004        }
2005        /// Count the number of jobs.
2006        async fn count_jobs(
2007            &self,
2008            request: tonic::Request<super::CountJobsRequest>,
2009        ) -> std::result::Result<
2010            tonic::Response<super::CountJobsResponse>,
2011            tonic::Status,
2012        > {
2013            Err(tonic::Status::unimplemented("Not yet implemented"))
2014        }
2015        /// List all job types.
2016        async fn list_job_types(
2017            &self,
2018            request: tonic::Request<super::ListJobTypesRequest>,
2019        ) -> std::result::Result<
2020            tonic::Response<super::ListJobTypesResponse>,
2021            tonic::Status,
2022        > {
2023            Err(tonic::Status::unimplemented("Not yet implemented"))
2024        }
2025        /// Cancel jobs.
2026        async fn cancel_jobs(
2027            &self,
2028            request: tonic::Request<super::CancelJobsRequest>,
2029        ) -> std::result::Result<
2030            tonic::Response<super::CancelJobsResponse>,
2031            tonic::Status,
2032        > {
2033            Err(tonic::Status::unimplemented("Not yet implemented"))
2034        }
2035        /// Delete inactive jobs from storage.
2036        async fn delete_inactive_jobs(
2037            &self,
2038            request: tonic::Request<super::DeleteInactiveJobsRequest>,
2039        ) -> std::result::Result<
2040            tonic::Response<super::DeleteInactiveJobsResponse>,
2041            tonic::Status,
2042        > {
2043            Err(tonic::Status::unimplemented("Not yet implemented"))
2044        }
2045        /// Get information about the executors.
2046        async fn list_executors(
2047            &self,
2048            request: tonic::Request<super::ListExecutorsRequest>,
2049        ) -> std::result::Result<
2050            tonic::Response<super::ListExecutorsResponse>,
2051            tonic::Status,
2052        > {
2053            Err(tonic::Status::unimplemented("Not yet implemented"))
2054        }
2055        /// Create schedules.
2056        async fn create_schedules(
2057            &self,
2058            request: tonic::Request<super::CreateSchedulesRequest>,
2059        ) -> std::result::Result<
2060            tonic::Response<super::CreateSchedulesResponse>,
2061            tonic::Status,
2062        > {
2063            Err(tonic::Status::unimplemented("Not yet implemented"))
2064        }
2065        /// List schedules.
2066        async fn list_schedules(
2067            &self,
2068            request: tonic::Request<super::ListSchedulesRequest>,
2069        ) -> std::result::Result<
2070            tonic::Response<super::ListSchedulesResponse>,
2071            tonic::Status,
2072        > {
2073            Err(tonic::Status::unimplemented("Not yet implemented"))
2074        }
2075        /// Count the number of schedules.
2076        async fn count_schedules(
2077            &self,
2078            request: tonic::Request<super::CountSchedulesRequest>,
2079        ) -> std::result::Result<
2080            tonic::Response<super::CountSchedulesResponse>,
2081            tonic::Status,
2082        > {
2083            Err(tonic::Status::unimplemented("Not yet implemented"))
2084        }
2085        /// Cancel schedules.
2086        async fn cancel_schedules(
2087            &self,
2088            request: tonic::Request<super::CancelSchedulesRequest>,
2089        ) -> std::result::Result<
2090            tonic::Response<super::CancelSchedulesResponse>,
2091            tonic::Status,
2092        > {
2093            Err(tonic::Status::unimplemented("Not yet implemented"))
2094        }
2095        /// Delete inactive schedules from storage.
2096        async fn delete_inactive_schedules(
2097            &self,
2098            request: tonic::Request<super::DeleteInactiveSchedulesRequest>,
2099        ) -> std::result::Result<
2100            tonic::Response<super::DeleteInactiveSchedulesResponse>,
2101            tonic::Status,
2102        > {
2103            Err(tonic::Status::unimplemented("Not yet implemented"))
2104        }
2105    }
2106    /// A service that provides administrative functionality.
2107    #[derive(Debug)]
2108    pub struct AdminServiceServer<T> {
2109        inner: Arc<T>,
2110        accept_compression_encodings: EnabledCompressionEncodings,
2111        send_compression_encodings: EnabledCompressionEncodings,
2112        max_decoding_message_size: Option<usize>,
2113        max_encoding_message_size: Option<usize>,
2114    }
2115    impl<T> AdminServiceServer<T> {
2116        pub fn new(inner: T) -> Self {
2117            Self::from_arc(Arc::new(inner))
2118        }
2119        pub fn from_arc(inner: Arc<T>) -> Self {
2120            Self {
2121                inner,
2122                accept_compression_encodings: Default::default(),
2123                send_compression_encodings: Default::default(),
2124                max_decoding_message_size: None,
2125                max_encoding_message_size: None,
2126            }
2127        }
2128        pub fn with_interceptor<F>(
2129            inner: T,
2130            interceptor: F,
2131        ) -> InterceptedService<Self, F>
2132        where
2133            F: tonic::service::Interceptor,
2134        {
2135            InterceptedService::new(Self::new(inner), interceptor)
2136        }
2137        /// Enable decompressing requests with the given encoding.
2138        #[must_use]
2139        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2140            self.accept_compression_encodings.enable(encoding);
2141            self
2142        }
2143        /// Compress responses with the given encoding, if the client supports it.
2144        #[must_use]
2145        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2146            self.send_compression_encodings.enable(encoding);
2147            self
2148        }
2149        /// Limits the maximum size of a decoded message.
2150        ///
2151        /// Default: `4MB`
2152        #[must_use]
2153        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2154            self.max_decoding_message_size = Some(limit);
2155            self
2156        }
2157        /// Limits the maximum size of an encoded message.
2158        ///
2159        /// Default: `usize::MAX`
2160        #[must_use]
2161        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2162            self.max_encoding_message_size = Some(limit);
2163            self
2164        }
2165    }
2166    impl<T, B> tonic::codegen::Service<http::Request<B>> for AdminServiceServer<T>
2167    where
2168        T: AdminService,
2169        B: Body + std::marker::Send + 'static,
2170        B::Error: Into<StdError> + std::marker::Send + 'static,
2171    {
2172        type Response = http::Response<tonic::body::BoxBody>;
2173        type Error = std::convert::Infallible;
2174        type Future = BoxFuture<Self::Response, Self::Error>;
2175        fn poll_ready(
2176            &mut self,
2177            _cx: &mut Context<'_>,
2178        ) -> Poll<std::result::Result<(), Self::Error>> {
2179            Poll::Ready(Ok(()))
2180        }
2181        fn call(&mut self, req: http::Request<B>) -> Self::Future {
2182            match req.uri().path() {
2183                "/ora.server.v1.AdminService/AddJobs" => {
2184                    #[allow(non_camel_case_types)]
2185                    struct AddJobsSvc<T: AdminService>(pub Arc<T>);
2186                    impl<
2187                        T: AdminService,
2188                    > tonic::server::UnaryService<super::AddJobsRequest>
2189                    for AddJobsSvc<T> {
2190                        type Response = super::AddJobsResponse;
2191                        type Future = BoxFuture<
2192                            tonic::Response<Self::Response>,
2193                            tonic::Status,
2194                        >;
2195                        fn call(
2196                            &mut self,
2197                            request: tonic::Request<super::AddJobsRequest>,
2198                        ) -> Self::Future {
2199                            let inner = Arc::clone(&self.0);
2200                            let fut = async move {
2201                                <T as AdminService>::add_jobs(&inner, request).await
2202                            };
2203                            Box::pin(fut)
2204                        }
2205                    }
2206                    let accept_compression_encodings = self.accept_compression_encodings;
2207                    let send_compression_encodings = self.send_compression_encodings;
2208                    let max_decoding_message_size = self.max_decoding_message_size;
2209                    let max_encoding_message_size = self.max_encoding_message_size;
2210                    let inner = self.inner.clone();
2211                    let fut = async move {
2212                        let method = AddJobsSvc(inner);
2213                        let codec = tonic::codec::ProstCodec::default();
2214                        let mut grpc = tonic::server::Grpc::new(codec)
2215                            .apply_compression_config(
2216                                accept_compression_encodings,
2217                                send_compression_encodings,
2218                            )
2219                            .apply_max_message_size_config(
2220                                max_decoding_message_size,
2221                                max_encoding_message_size,
2222                            );
2223                        let res = grpc.unary(method, req).await;
2224                        Ok(res)
2225                    };
2226                    Box::pin(fut)
2227                }
2228                "/ora.server.v1.AdminService/ListJobs" => {
2229                    #[allow(non_camel_case_types)]
2230                    struct ListJobsSvc<T: AdminService>(pub Arc<T>);
2231                    impl<
2232                        T: AdminService,
2233                    > tonic::server::UnaryService<super::ListJobsRequest>
2234                    for ListJobsSvc<T> {
2235                        type Response = super::ListJobsResponse;
2236                        type Future = BoxFuture<
2237                            tonic::Response<Self::Response>,
2238                            tonic::Status,
2239                        >;
2240                        fn call(
2241                            &mut self,
2242                            request: tonic::Request<super::ListJobsRequest>,
2243                        ) -> Self::Future {
2244                            let inner = Arc::clone(&self.0);
2245                            let fut = async move {
2246                                <T as AdminService>::list_jobs(&inner, request).await
2247                            };
2248                            Box::pin(fut)
2249                        }
2250                    }
2251                    let accept_compression_encodings = self.accept_compression_encodings;
2252                    let send_compression_encodings = self.send_compression_encodings;
2253                    let max_decoding_message_size = self.max_decoding_message_size;
2254                    let max_encoding_message_size = self.max_encoding_message_size;
2255                    let inner = self.inner.clone();
2256                    let fut = async move {
2257                        let method = ListJobsSvc(inner);
2258                        let codec = tonic::codec::ProstCodec::default();
2259                        let mut grpc = tonic::server::Grpc::new(codec)
2260                            .apply_compression_config(
2261                                accept_compression_encodings,
2262                                send_compression_encodings,
2263                            )
2264                            .apply_max_message_size_config(
2265                                max_decoding_message_size,
2266                                max_encoding_message_size,
2267                            );
2268                        let res = grpc.unary(method, req).await;
2269                        Ok(res)
2270                    };
2271                    Box::pin(fut)
2272                }
2273                "/ora.server.v1.AdminService/CountJobs" => {
2274                    #[allow(non_camel_case_types)]
2275                    struct CountJobsSvc<T: AdminService>(pub Arc<T>);
2276                    impl<
2277                        T: AdminService,
2278                    > tonic::server::UnaryService<super::CountJobsRequest>
2279                    for CountJobsSvc<T> {
2280                        type Response = super::CountJobsResponse;
2281                        type Future = BoxFuture<
2282                            tonic::Response<Self::Response>,
2283                            tonic::Status,
2284                        >;
2285                        fn call(
2286                            &mut self,
2287                            request: tonic::Request<super::CountJobsRequest>,
2288                        ) -> Self::Future {
2289                            let inner = Arc::clone(&self.0);
2290                            let fut = async move {
2291                                <T as AdminService>::count_jobs(&inner, request).await
2292                            };
2293                            Box::pin(fut)
2294                        }
2295                    }
2296                    let accept_compression_encodings = self.accept_compression_encodings;
2297                    let send_compression_encodings = self.send_compression_encodings;
2298                    let max_decoding_message_size = self.max_decoding_message_size;
2299                    let max_encoding_message_size = self.max_encoding_message_size;
2300                    let inner = self.inner.clone();
2301                    let fut = async move {
2302                        let method = CountJobsSvc(inner);
2303                        let codec = tonic::codec::ProstCodec::default();
2304                        let mut grpc = tonic::server::Grpc::new(codec)
2305                            .apply_compression_config(
2306                                accept_compression_encodings,
2307                                send_compression_encodings,
2308                            )
2309                            .apply_max_message_size_config(
2310                                max_decoding_message_size,
2311                                max_encoding_message_size,
2312                            );
2313                        let res = grpc.unary(method, req).await;
2314                        Ok(res)
2315                    };
2316                    Box::pin(fut)
2317                }
2318                "/ora.server.v1.AdminService/ListJobTypes" => {
2319                    #[allow(non_camel_case_types)]
2320                    struct ListJobTypesSvc<T: AdminService>(pub Arc<T>);
2321                    impl<
2322                        T: AdminService,
2323                    > tonic::server::UnaryService<super::ListJobTypesRequest>
2324                    for ListJobTypesSvc<T> {
2325                        type Response = super::ListJobTypesResponse;
2326                        type Future = BoxFuture<
2327                            tonic::Response<Self::Response>,
2328                            tonic::Status,
2329                        >;
2330                        fn call(
2331                            &mut self,
2332                            request: tonic::Request<super::ListJobTypesRequest>,
2333                        ) -> Self::Future {
2334                            let inner = Arc::clone(&self.0);
2335                            let fut = async move {
2336                                <T as AdminService>::list_job_types(&inner, request).await
2337                            };
2338                            Box::pin(fut)
2339                        }
2340                    }
2341                    let accept_compression_encodings = self.accept_compression_encodings;
2342                    let send_compression_encodings = self.send_compression_encodings;
2343                    let max_decoding_message_size = self.max_decoding_message_size;
2344                    let max_encoding_message_size = self.max_encoding_message_size;
2345                    let inner = self.inner.clone();
2346                    let fut = async move {
2347                        let method = ListJobTypesSvc(inner);
2348                        let codec = tonic::codec::ProstCodec::default();
2349                        let mut grpc = tonic::server::Grpc::new(codec)
2350                            .apply_compression_config(
2351                                accept_compression_encodings,
2352                                send_compression_encodings,
2353                            )
2354                            .apply_max_message_size_config(
2355                                max_decoding_message_size,
2356                                max_encoding_message_size,
2357                            );
2358                        let res = grpc.unary(method, req).await;
2359                        Ok(res)
2360                    };
2361                    Box::pin(fut)
2362                }
2363                "/ora.server.v1.AdminService/CancelJobs" => {
2364                    #[allow(non_camel_case_types)]
2365                    struct CancelJobsSvc<T: AdminService>(pub Arc<T>);
2366                    impl<
2367                        T: AdminService,
2368                    > tonic::server::UnaryService<super::CancelJobsRequest>
2369                    for CancelJobsSvc<T> {
2370                        type Response = super::CancelJobsResponse;
2371                        type Future = BoxFuture<
2372                            tonic::Response<Self::Response>,
2373                            tonic::Status,
2374                        >;
2375                        fn call(
2376                            &mut self,
2377                            request: tonic::Request<super::CancelJobsRequest>,
2378                        ) -> Self::Future {
2379                            let inner = Arc::clone(&self.0);
2380                            let fut = async move {
2381                                <T as AdminService>::cancel_jobs(&inner, request).await
2382                            };
2383                            Box::pin(fut)
2384                        }
2385                    }
2386                    let accept_compression_encodings = self.accept_compression_encodings;
2387                    let send_compression_encodings = self.send_compression_encodings;
2388                    let max_decoding_message_size = self.max_decoding_message_size;
2389                    let max_encoding_message_size = self.max_encoding_message_size;
2390                    let inner = self.inner.clone();
2391                    let fut = async move {
2392                        let method = CancelJobsSvc(inner);
2393                        let codec = tonic::codec::ProstCodec::default();
2394                        let mut grpc = tonic::server::Grpc::new(codec)
2395                            .apply_compression_config(
2396                                accept_compression_encodings,
2397                                send_compression_encodings,
2398                            )
2399                            .apply_max_message_size_config(
2400                                max_decoding_message_size,
2401                                max_encoding_message_size,
2402                            );
2403                        let res = grpc.unary(method, req).await;
2404                        Ok(res)
2405                    };
2406                    Box::pin(fut)
2407                }
2408                "/ora.server.v1.AdminService/DeleteInactiveJobs" => {
2409                    #[allow(non_camel_case_types)]
2410                    struct DeleteInactiveJobsSvc<T: AdminService>(pub Arc<T>);
2411                    impl<
2412                        T: AdminService,
2413                    > tonic::server::UnaryService<super::DeleteInactiveJobsRequest>
2414                    for DeleteInactiveJobsSvc<T> {
2415                        type Response = super::DeleteInactiveJobsResponse;
2416                        type Future = BoxFuture<
2417                            tonic::Response<Self::Response>,
2418                            tonic::Status,
2419                        >;
2420                        fn call(
2421                            &mut self,
2422                            request: tonic::Request<super::DeleteInactiveJobsRequest>,
2423                        ) -> Self::Future {
2424                            let inner = Arc::clone(&self.0);
2425                            let fut = async move {
2426                                <T as AdminService>::delete_inactive_jobs(&inner, request)
2427                                    .await
2428                            };
2429                            Box::pin(fut)
2430                        }
2431                    }
2432                    let accept_compression_encodings = self.accept_compression_encodings;
2433                    let send_compression_encodings = self.send_compression_encodings;
2434                    let max_decoding_message_size = self.max_decoding_message_size;
2435                    let max_encoding_message_size = self.max_encoding_message_size;
2436                    let inner = self.inner.clone();
2437                    let fut = async move {
2438                        let method = DeleteInactiveJobsSvc(inner);
2439                        let codec = tonic::codec::ProstCodec::default();
2440                        let mut grpc = tonic::server::Grpc::new(codec)
2441                            .apply_compression_config(
2442                                accept_compression_encodings,
2443                                send_compression_encodings,
2444                            )
2445                            .apply_max_message_size_config(
2446                                max_decoding_message_size,
2447                                max_encoding_message_size,
2448                            );
2449                        let res = grpc.unary(method, req).await;
2450                        Ok(res)
2451                    };
2452                    Box::pin(fut)
2453                }
2454                "/ora.server.v1.AdminService/ListExecutors" => {
2455                    #[allow(non_camel_case_types)]
2456                    struct ListExecutorsSvc<T: AdminService>(pub Arc<T>);
2457                    impl<
2458                        T: AdminService,
2459                    > tonic::server::UnaryService<super::ListExecutorsRequest>
2460                    for ListExecutorsSvc<T> {
2461                        type Response = super::ListExecutorsResponse;
2462                        type Future = BoxFuture<
2463                            tonic::Response<Self::Response>,
2464                            tonic::Status,
2465                        >;
2466                        fn call(
2467                            &mut self,
2468                            request: tonic::Request<super::ListExecutorsRequest>,
2469                        ) -> Self::Future {
2470                            let inner = Arc::clone(&self.0);
2471                            let fut = async move {
2472                                <T as AdminService>::list_executors(&inner, request).await
2473                            };
2474                            Box::pin(fut)
2475                        }
2476                    }
2477                    let accept_compression_encodings = self.accept_compression_encodings;
2478                    let send_compression_encodings = self.send_compression_encodings;
2479                    let max_decoding_message_size = self.max_decoding_message_size;
2480                    let max_encoding_message_size = self.max_encoding_message_size;
2481                    let inner = self.inner.clone();
2482                    let fut = async move {
2483                        let method = ListExecutorsSvc(inner);
2484                        let codec = tonic::codec::ProstCodec::default();
2485                        let mut grpc = tonic::server::Grpc::new(codec)
2486                            .apply_compression_config(
2487                                accept_compression_encodings,
2488                                send_compression_encodings,
2489                            )
2490                            .apply_max_message_size_config(
2491                                max_decoding_message_size,
2492                                max_encoding_message_size,
2493                            );
2494                        let res = grpc.unary(method, req).await;
2495                        Ok(res)
2496                    };
2497                    Box::pin(fut)
2498                }
2499                "/ora.server.v1.AdminService/CreateSchedules" => {
2500                    #[allow(non_camel_case_types)]
2501                    struct CreateSchedulesSvc<T: AdminService>(pub Arc<T>);
2502                    impl<
2503                        T: AdminService,
2504                    > tonic::server::UnaryService<super::CreateSchedulesRequest>
2505                    for CreateSchedulesSvc<T> {
2506                        type Response = super::CreateSchedulesResponse;
2507                        type Future = BoxFuture<
2508                            tonic::Response<Self::Response>,
2509                            tonic::Status,
2510                        >;
2511                        fn call(
2512                            &mut self,
2513                            request: tonic::Request<super::CreateSchedulesRequest>,
2514                        ) -> Self::Future {
2515                            let inner = Arc::clone(&self.0);
2516                            let fut = async move {
2517                                <T as AdminService>::create_schedules(&inner, request).await
2518                            };
2519                            Box::pin(fut)
2520                        }
2521                    }
2522                    let accept_compression_encodings = self.accept_compression_encodings;
2523                    let send_compression_encodings = self.send_compression_encodings;
2524                    let max_decoding_message_size = self.max_decoding_message_size;
2525                    let max_encoding_message_size = self.max_encoding_message_size;
2526                    let inner = self.inner.clone();
2527                    let fut = async move {
2528                        let method = CreateSchedulesSvc(inner);
2529                        let codec = tonic::codec::ProstCodec::default();
2530                        let mut grpc = tonic::server::Grpc::new(codec)
2531                            .apply_compression_config(
2532                                accept_compression_encodings,
2533                                send_compression_encodings,
2534                            )
2535                            .apply_max_message_size_config(
2536                                max_decoding_message_size,
2537                                max_encoding_message_size,
2538                            );
2539                        let res = grpc.unary(method, req).await;
2540                        Ok(res)
2541                    };
2542                    Box::pin(fut)
2543                }
2544                "/ora.server.v1.AdminService/ListSchedules" => {
2545                    #[allow(non_camel_case_types)]
2546                    struct ListSchedulesSvc<T: AdminService>(pub Arc<T>);
2547                    impl<
2548                        T: AdminService,
2549                    > tonic::server::UnaryService<super::ListSchedulesRequest>
2550                    for ListSchedulesSvc<T> {
2551                        type Response = super::ListSchedulesResponse;
2552                        type Future = BoxFuture<
2553                            tonic::Response<Self::Response>,
2554                            tonic::Status,
2555                        >;
2556                        fn call(
2557                            &mut self,
2558                            request: tonic::Request<super::ListSchedulesRequest>,
2559                        ) -> Self::Future {
2560                            let inner = Arc::clone(&self.0);
2561                            let fut = async move {
2562                                <T as AdminService>::list_schedules(&inner, request).await
2563                            };
2564                            Box::pin(fut)
2565                        }
2566                    }
2567                    let accept_compression_encodings = self.accept_compression_encodings;
2568                    let send_compression_encodings = self.send_compression_encodings;
2569                    let max_decoding_message_size = self.max_decoding_message_size;
2570                    let max_encoding_message_size = self.max_encoding_message_size;
2571                    let inner = self.inner.clone();
2572                    let fut = async move {
2573                        let method = ListSchedulesSvc(inner);
2574                        let codec = tonic::codec::ProstCodec::default();
2575                        let mut grpc = tonic::server::Grpc::new(codec)
2576                            .apply_compression_config(
2577                                accept_compression_encodings,
2578                                send_compression_encodings,
2579                            )
2580                            .apply_max_message_size_config(
2581                                max_decoding_message_size,
2582                                max_encoding_message_size,
2583                            );
2584                        let res = grpc.unary(method, req).await;
2585                        Ok(res)
2586                    };
2587                    Box::pin(fut)
2588                }
2589                "/ora.server.v1.AdminService/CountSchedules" => {
2590                    #[allow(non_camel_case_types)]
2591                    struct CountSchedulesSvc<T: AdminService>(pub Arc<T>);
2592                    impl<
2593                        T: AdminService,
2594                    > tonic::server::UnaryService<super::CountSchedulesRequest>
2595                    for CountSchedulesSvc<T> {
2596                        type Response = super::CountSchedulesResponse;
2597                        type Future = BoxFuture<
2598                            tonic::Response<Self::Response>,
2599                            tonic::Status,
2600                        >;
2601                        fn call(
2602                            &mut self,
2603                            request: tonic::Request<super::CountSchedulesRequest>,
2604                        ) -> Self::Future {
2605                            let inner = Arc::clone(&self.0);
2606                            let fut = async move {
2607                                <T as AdminService>::count_schedules(&inner, request).await
2608                            };
2609                            Box::pin(fut)
2610                        }
2611                    }
2612                    let accept_compression_encodings = self.accept_compression_encodings;
2613                    let send_compression_encodings = self.send_compression_encodings;
2614                    let max_decoding_message_size = self.max_decoding_message_size;
2615                    let max_encoding_message_size = self.max_encoding_message_size;
2616                    let inner = self.inner.clone();
2617                    let fut = async move {
2618                        let method = CountSchedulesSvc(inner);
2619                        let codec = tonic::codec::ProstCodec::default();
2620                        let mut grpc = tonic::server::Grpc::new(codec)
2621                            .apply_compression_config(
2622                                accept_compression_encodings,
2623                                send_compression_encodings,
2624                            )
2625                            .apply_max_message_size_config(
2626                                max_decoding_message_size,
2627                                max_encoding_message_size,
2628                            );
2629                        let res = grpc.unary(method, req).await;
2630                        Ok(res)
2631                    };
2632                    Box::pin(fut)
2633                }
2634                "/ora.server.v1.AdminService/CancelSchedules" => {
2635                    #[allow(non_camel_case_types)]
2636                    struct CancelSchedulesSvc<T: AdminService>(pub Arc<T>);
2637                    impl<
2638                        T: AdminService,
2639                    > tonic::server::UnaryService<super::CancelSchedulesRequest>
2640                    for CancelSchedulesSvc<T> {
2641                        type Response = super::CancelSchedulesResponse;
2642                        type Future = BoxFuture<
2643                            tonic::Response<Self::Response>,
2644                            tonic::Status,
2645                        >;
2646                        fn call(
2647                            &mut self,
2648                            request: tonic::Request<super::CancelSchedulesRequest>,
2649                        ) -> Self::Future {
2650                            let inner = Arc::clone(&self.0);
2651                            let fut = async move {
2652                                <T as AdminService>::cancel_schedules(&inner, request).await
2653                            };
2654                            Box::pin(fut)
2655                        }
2656                    }
2657                    let accept_compression_encodings = self.accept_compression_encodings;
2658                    let send_compression_encodings = self.send_compression_encodings;
2659                    let max_decoding_message_size = self.max_decoding_message_size;
2660                    let max_encoding_message_size = self.max_encoding_message_size;
2661                    let inner = self.inner.clone();
2662                    let fut = async move {
2663                        let method = CancelSchedulesSvc(inner);
2664                        let codec = tonic::codec::ProstCodec::default();
2665                        let mut grpc = tonic::server::Grpc::new(codec)
2666                            .apply_compression_config(
2667                                accept_compression_encodings,
2668                                send_compression_encodings,
2669                            )
2670                            .apply_max_message_size_config(
2671                                max_decoding_message_size,
2672                                max_encoding_message_size,
2673                            );
2674                        let res = grpc.unary(method, req).await;
2675                        Ok(res)
2676                    };
2677                    Box::pin(fut)
2678                }
2679                "/ora.server.v1.AdminService/DeleteInactiveSchedules" => {
2680                    #[allow(non_camel_case_types)]
2681                    struct DeleteInactiveSchedulesSvc<T: AdminService>(pub Arc<T>);
2682                    impl<
2683                        T: AdminService,
2684                    > tonic::server::UnaryService<super::DeleteInactiveSchedulesRequest>
2685                    for DeleteInactiveSchedulesSvc<T> {
2686                        type Response = super::DeleteInactiveSchedulesResponse;
2687                        type Future = BoxFuture<
2688                            tonic::Response<Self::Response>,
2689                            tonic::Status,
2690                        >;
2691                        fn call(
2692                            &mut self,
2693                            request: tonic::Request<
2694                                super::DeleteInactiveSchedulesRequest,
2695                            >,
2696                        ) -> Self::Future {
2697                            let inner = Arc::clone(&self.0);
2698                            let fut = async move {
2699                                <T as AdminService>::delete_inactive_schedules(
2700                                        &inner,
2701                                        request,
2702                                    )
2703                                    .await
2704                            };
2705                            Box::pin(fut)
2706                        }
2707                    }
2708                    let accept_compression_encodings = self.accept_compression_encodings;
2709                    let send_compression_encodings = self.send_compression_encodings;
2710                    let max_decoding_message_size = self.max_decoding_message_size;
2711                    let max_encoding_message_size = self.max_encoding_message_size;
2712                    let inner = self.inner.clone();
2713                    let fut = async move {
2714                        let method = DeleteInactiveSchedulesSvc(inner);
2715                        let codec = tonic::codec::ProstCodec::default();
2716                        let mut grpc = tonic::server::Grpc::new(codec)
2717                            .apply_compression_config(
2718                                accept_compression_encodings,
2719                                send_compression_encodings,
2720                            )
2721                            .apply_max_message_size_config(
2722                                max_decoding_message_size,
2723                                max_encoding_message_size,
2724                            );
2725                        let res = grpc.unary(method, req).await;
2726                        Ok(res)
2727                    };
2728                    Box::pin(fut)
2729                }
2730                _ => {
2731                    Box::pin(async move {
2732                        let mut response = http::Response::new(empty_body());
2733                        let headers = response.headers_mut();
2734                        headers
2735                            .insert(
2736                                tonic::Status::GRPC_STATUS,
2737                                (tonic::Code::Unimplemented as i32).into(),
2738                            );
2739                        headers
2740                            .insert(
2741                                http::header::CONTENT_TYPE,
2742                                tonic::metadata::GRPC_CONTENT_TYPE,
2743                            );
2744                        Ok(response)
2745                    })
2746                }
2747            }
2748        }
2749    }
2750    impl<T> Clone for AdminServiceServer<T> {
2751        fn clone(&self) -> Self {
2752            let inner = self.inner.clone();
2753            Self {
2754                inner,
2755                accept_compression_encodings: self.accept_compression_encodings,
2756                send_compression_encodings: self.send_compression_encodings,
2757                max_decoding_message_size: self.max_decoding_message_size,
2758                max_encoding_message_size: self.max_encoding_message_size,
2759            }
2760        }
2761    }
2762    /// Generated gRPC service name
2763    pub const SERVICE_NAME: &str = "ora.server.v1.AdminService";
2764    impl<T> tonic::server::NamedService for AdminServiceServer<T> {
2765        const NAME: &'static str = SERVICE_NAME;
2766    }
2767}