1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct IngestSource {
4 #[prost(oneof = "ingest_source::Source", tags = "1, 2, 3, 4")]
5 pub source: ::core::option::Option<ingest_source::Source>,
6}
7pub mod ingest_source {
9 #[derive(Clone, PartialEq, ::prost::Oneof)]
10 pub enum Source {
11 #[prost(message, tag = "1")]
12 S3(super::S3IngestSource),
13 #[prost(message, tag = "2")]
14 Gcs(super::GcsIngestSource),
15 #[prost(message, tag = "3")]
16 PresignedFile(super::PresignedFileIngestSource),
17 #[prost(message, tag = "4")]
18 FileStore(super::FileStoreIngestSource),
19 }
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct S3IngestSource {
23 #[prost(string, tag = "1")]
24 pub path: ::prost::alloc::string::String,
25}
26#[derive(Clone, PartialEq, ::prost::Message)]
27pub struct GcsIngestSource {
28 #[prost(string, tag = "1")]
29 pub path: ::prost::alloc::string::String,
30}
31#[derive(Clone, PartialEq, ::prost::Message)]
32pub struct PresignedFileIngestSource {
33 #[prost(string, tag = "1")]
34 pub url: ::prost::alloc::string::String,
35}
36#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct FileStoreIngestSource {
38 #[prost(string, tag = "1")]
39 pub file_revision_rid: ::prost::alloc::string::String,
40}
41#[derive(Clone, PartialEq, ::prost::Message)]
42pub struct TimestampMetadata {
43 #[prost(string, tag = "1")]
44 pub column: ::prost::alloc::string::String,
45 #[prost(message, optional, tag = "2")]
46 pub r#type: ::core::option::Option<super::super::types::time::TimestampType>,
47}
48#[derive(Clone, PartialEq, ::prost::Message)]
49pub struct ContainerizedExtractor {
50 #[prost(string, tag = "1")]
51 pub rid: ::prost::alloc::string::String,
52 #[prost(string, tag = "2")]
53 pub workspace_rid: ::prost::alloc::string::String,
54 #[prost(string, tag = "3")]
55 pub name: ::prost::alloc::string::String,
56 #[prost(string, optional, tag = "4")]
57 pub description: ::core::option::Option<::prost::alloc::string::String>,
58 #[prost(message, optional, tag = "5")]
59 pub created_at: ::core::option::Option<
60 super::super::super::google::protobuf::Timestamp,
61 >,
62 #[prost(bool, tag = "6")]
63 pub is_archived: bool,
64 #[prost(message, optional, tag = "7")]
65 pub active_container_image: ::core::option::Option<
66 super::super::registry::v2::ContainerImage,
67 >,
68 #[prost(enumeration = "ExtractorOrigin", tag = "8")]
69 pub origin: i32,
70 #[prost(string, optional, tag = "9")]
71 pub catalog_id: ::core::option::Option<::prost::alloc::string::String>,
72}
73#[derive(Clone, PartialEq, ::prost::Message)]
74pub struct CreateContainerizedExtractorRequest {
75 #[prost(string, tag = "1")]
76 pub workspace_rid: ::prost::alloc::string::String,
77 #[prost(string, tag = "2")]
78 pub name: ::prost::alloc::string::String,
79 #[prost(string, optional, tag = "3")]
80 pub description: ::core::option::Option<::prost::alloc::string::String>,
81}
82#[derive(Clone, PartialEq, ::prost::Message)]
83pub struct CreateContainerizedExtractorResponse {
84 #[prost(message, optional, tag = "1")]
85 pub extractor: ::core::option::Option<ContainerizedExtractor>,
86}
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct GetContainerizedExtractorRequest {
89 #[prost(string, tag = "1")]
90 pub rid: ::prost::alloc::string::String,
91 #[prost(string, tag = "2")]
92 pub workspace_rid: ::prost::alloc::string::String,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct GetContainerizedExtractorResponse {
96 #[prost(message, optional, tag = "1")]
97 pub extractor: ::core::option::Option<ContainerizedExtractor>,
98}
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct UpdateContainerizedExtractorRequest {
101 #[prost(string, tag = "1")]
102 pub rid: ::prost::alloc::string::String,
103 #[prost(string, tag = "2")]
104 pub workspace_rid: ::prost::alloc::string::String,
105 #[prost(string, optional, tag = "3")]
106 pub name: ::core::option::Option<::prost::alloc::string::String>,
107 #[prost(string, optional, tag = "4")]
108 pub description: ::core::option::Option<::prost::alloc::string::String>,
109 #[prost(bool, optional, tag = "5")]
110 pub is_archived: ::core::option::Option<bool>,
111 #[prost(string, optional, tag = "6")]
112 pub active_container_image_rid: ::core::option::Option<
113 ::prost::alloc::string::String,
114 >,
115}
116#[derive(Clone, PartialEq, ::prost::Message)]
117pub struct UpdateContainerizedExtractorResponse {
118 #[prost(message, optional, tag = "1")]
119 pub extractor: ::core::option::Option<ContainerizedExtractor>,
120}
121#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct SearchContainerizedExtractorsRequest {
123 #[prost(string, tag = "1")]
124 pub workspace_rid: ::prost::alloc::string::String,
125 #[prost(bool, tag = "2")]
126 pub include_archived: bool,
127 #[prost(int32, tag = "3")]
128 pub page_size: i32,
129 #[prost(string, optional, tag = "4")]
130 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
131 #[prost(string, optional, tag = "5")]
132 pub file_extension: ::core::option::Option<::prost::alloc::string::String>,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct SearchContainerizedExtractorsResponse {
136 #[prost(message, repeated, tag = "1")]
137 pub extractors: ::prost::alloc::vec::Vec<ContainerizedExtractor>,
138 #[prost(string, optional, tag = "2")]
139 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
140}
141#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
142#[repr(i32)]
143pub enum ExtractorOrigin {
144 Unspecified = 0,
145 Customer = 1,
146 FirstParty = 2,
147}
148impl ExtractorOrigin {
149 pub fn as_str_name(&self) -> &'static str {
154 match self {
155 Self::Unspecified => "EXTRACTOR_ORIGIN_UNSPECIFIED",
156 Self::Customer => "EXTRACTOR_ORIGIN_CUSTOMER",
157 Self::FirstParty => "EXTRACTOR_ORIGIN_FIRST_PARTY",
158 }
159 }
160 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
162 match value {
163 "EXTRACTOR_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
164 "EXTRACTOR_ORIGIN_CUSTOMER" => Some(Self::Customer),
165 "EXTRACTOR_ORIGIN_FIRST_PARTY" => Some(Self::FirstParty),
166 _ => None,
167 }
168 }
169}
170pub mod containerized_extractor_service_client {
172 #![allow(
173 unused_variables,
174 dead_code,
175 missing_docs,
176 clippy::wildcard_imports,
177 clippy::let_unit_value,
178 )]
179 use tonic::codegen::*;
180 use tonic::codegen::http::Uri;
181 #[derive(Debug, Clone)]
182 pub struct ContainerizedExtractorServiceClient<T> {
183 inner: tonic::client::Grpc<T>,
184 }
185 impl ContainerizedExtractorServiceClient<tonic::transport::Channel> {
186 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
188 where
189 D: TryInto<tonic::transport::Endpoint>,
190 D::Error: Into<StdError>,
191 {
192 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
193 Ok(Self::new(conn))
194 }
195 }
196 impl<T> ContainerizedExtractorServiceClient<T>
197 where
198 T: tonic::client::GrpcService<tonic::body::Body>,
199 T::Error: Into<StdError>,
200 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
201 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
202 {
203 pub fn new(inner: T) -> Self {
204 let inner = tonic::client::Grpc::new(inner);
205 Self { inner }
206 }
207 pub fn with_origin(inner: T, origin: Uri) -> Self {
208 let inner = tonic::client::Grpc::with_origin(inner, origin);
209 Self { inner }
210 }
211 pub fn with_interceptor<F>(
212 inner: T,
213 interceptor: F,
214 ) -> ContainerizedExtractorServiceClient<InterceptedService<T, F>>
215 where
216 F: tonic::service::Interceptor,
217 T::ResponseBody: Default,
218 T: tonic::codegen::Service<
219 http::Request<tonic::body::Body>,
220 Response = http::Response<
221 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
222 >,
223 >,
224 <T as tonic::codegen::Service<
225 http::Request<tonic::body::Body>,
226 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
227 {
228 ContainerizedExtractorServiceClient::new(
229 InterceptedService::new(inner, interceptor),
230 )
231 }
232 #[must_use]
237 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
238 self.inner = self.inner.send_compressed(encoding);
239 self
240 }
241 #[must_use]
243 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
244 self.inner = self.inner.accept_compressed(encoding);
245 self
246 }
247 #[must_use]
251 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
252 self.inner = self.inner.max_decoding_message_size(limit);
253 self
254 }
255 #[must_use]
259 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
260 self.inner = self.inner.max_encoding_message_size(limit);
261 self
262 }
263 pub async fn create_containerized_extractor(
264 &mut self,
265 request: impl tonic::IntoRequest<super::CreateContainerizedExtractorRequest>,
266 ) -> std::result::Result<
267 tonic::Response<super::CreateContainerizedExtractorResponse>,
268 tonic::Status,
269 > {
270 self.inner
271 .ready()
272 .await
273 .map_err(|e| {
274 tonic::Status::unknown(
275 format!("Service was not ready: {}", e.into()),
276 )
277 })?;
278 let codec = tonic::codec::ProstCodec::default();
279 let path = http::uri::PathAndQuery::from_static(
280 "/nominal.ingest.v2.ContainerizedExtractorService/CreateContainerizedExtractor",
281 );
282 let mut req = request.into_request();
283 req.extensions_mut()
284 .insert(
285 GrpcMethod::new(
286 "nominal.ingest.v2.ContainerizedExtractorService",
287 "CreateContainerizedExtractor",
288 ),
289 );
290 self.inner.unary(req, path, codec).await
291 }
292 pub async fn get_containerized_extractor(
293 &mut self,
294 request: impl tonic::IntoRequest<super::GetContainerizedExtractorRequest>,
295 ) -> std::result::Result<
296 tonic::Response<super::GetContainerizedExtractorResponse>,
297 tonic::Status,
298 > {
299 self.inner
300 .ready()
301 .await
302 .map_err(|e| {
303 tonic::Status::unknown(
304 format!("Service was not ready: {}", e.into()),
305 )
306 })?;
307 let codec = tonic::codec::ProstCodec::default();
308 let path = http::uri::PathAndQuery::from_static(
309 "/nominal.ingest.v2.ContainerizedExtractorService/GetContainerizedExtractor",
310 );
311 let mut req = request.into_request();
312 req.extensions_mut()
313 .insert(
314 GrpcMethod::new(
315 "nominal.ingest.v2.ContainerizedExtractorService",
316 "GetContainerizedExtractor",
317 ),
318 );
319 self.inner.unary(req, path, codec).await
320 }
321 pub async fn update_containerized_extractor(
322 &mut self,
323 request: impl tonic::IntoRequest<super::UpdateContainerizedExtractorRequest>,
324 ) -> std::result::Result<
325 tonic::Response<super::UpdateContainerizedExtractorResponse>,
326 tonic::Status,
327 > {
328 self.inner
329 .ready()
330 .await
331 .map_err(|e| {
332 tonic::Status::unknown(
333 format!("Service was not ready: {}", e.into()),
334 )
335 })?;
336 let codec = tonic::codec::ProstCodec::default();
337 let path = http::uri::PathAndQuery::from_static(
338 "/nominal.ingest.v2.ContainerizedExtractorService/UpdateContainerizedExtractor",
339 );
340 let mut req = request.into_request();
341 req.extensions_mut()
342 .insert(
343 GrpcMethod::new(
344 "nominal.ingest.v2.ContainerizedExtractorService",
345 "UpdateContainerizedExtractor",
346 ),
347 );
348 self.inner.unary(req, path, codec).await
349 }
350 pub async fn search_containerized_extractors(
351 &mut self,
352 request: impl tonic::IntoRequest<super::SearchContainerizedExtractorsRequest>,
353 ) -> std::result::Result<
354 tonic::Response<super::SearchContainerizedExtractorsResponse>,
355 tonic::Status,
356 > {
357 self.inner
358 .ready()
359 .await
360 .map_err(|e| {
361 tonic::Status::unknown(
362 format!("Service was not ready: {}", e.into()),
363 )
364 })?;
365 let codec = tonic::codec::ProstCodec::default();
366 let path = http::uri::PathAndQuery::from_static(
367 "/nominal.ingest.v2.ContainerizedExtractorService/SearchContainerizedExtractors",
368 );
369 let mut req = request.into_request();
370 req.extensions_mut()
371 .insert(
372 GrpcMethod::new(
373 "nominal.ingest.v2.ContainerizedExtractorService",
374 "SearchContainerizedExtractors",
375 ),
376 );
377 self.inner.unary(req, path, codec).await
378 }
379 }
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
382pub struct ContainerizedIngestItem {
383 #[prost(string, tag = "1")]
384 pub extractor_rid: ::prost::alloc::string::String,
385 #[prost(map = "string, message", tag = "2")]
386 pub sources: ::std::collections::HashMap<
387 ::prost::alloc::string::String,
388 IngestSource,
389 >,
390 #[prost(map = "string, string", tag = "3")]
391 pub arguments: ::std::collections::HashMap<
392 ::prost::alloc::string::String,
393 ::prost::alloc::string::String,
394 >,
395 #[prost(message, optional, tag = "4")]
396 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
397}
398#[derive(Clone, PartialEq, ::prost::Message)]
399pub struct FileIngestItem {
400 #[prost(message, optional, tag = "1")]
401 pub source: ::core::option::Option<IngestSource>,
402 #[prost(message, optional, tag = "2")]
403 pub ingest: ::core::option::Option<FileIngestOptions>,
404}
405#[derive(Clone, PartialEq, ::prost::Message)]
406pub struct FileIngestOptions {
407 #[prost(message, optional, tag = "1")]
408 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
409 #[prost(map = "string, string", tag = "2")]
410 pub units: ::std::collections::HashMap<
411 ::prost::alloc::string::String,
412 ::prost::alloc::string::String,
413 >,
414 #[prost(string, optional, tag = "3")]
415 pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
416 #[prost(map = "string, string", tag = "7")]
417 pub channel_name_overrides: ::std::collections::HashMap<
418 ::prost::alloc::string::String,
419 ::prost::alloc::string::String,
420 >,
421 #[prost(oneof = "file_ingest_options::Ingest", tags = "4, 5, 6")]
422 pub ingest: ::core::option::Option<file_ingest_options::Ingest>,
423}
424pub mod file_ingest_options {
426 #[derive(Clone, PartialEq, ::prost::Oneof)]
427 pub enum Ingest {
428 #[prost(message, tag = "4")]
429 Csv(super::CsvIngestOptions),
430 #[prost(message, tag = "5")]
431 Parquet(super::ParquetIngestOptions),
432 #[prost(message, tag = "6")]
433 Avro(super::AvroIngestOptions),
434 }
435}
436#[derive(Clone, PartialEq, ::prost::Message)]
437pub struct CsvIngestOptions {
438 #[prost(message, optional, tag = "1")]
439 pub format: ::core::option::Option<CsvFormat>,
440}
441#[derive(Clone, PartialEq, ::prost::Message)]
442pub struct ParquetIngestOptions {
443 #[prost(message, optional, tag = "1")]
444 pub format: ::core::option::Option<ParquetFormat>,
445 #[prost(bool, tag = "2")]
446 pub is_archive: bool,
447}
448#[derive(Clone, Copy, PartialEq, ::prost::Message)]
449pub struct AvroIngestOptions {}
450#[derive(Clone, PartialEq, ::prost::Message)]
451pub struct CsvFormat {
452 #[prost(oneof = "csv_format::Format", tags = "1, 2")]
453 pub format: ::core::option::Option<csv_format::Format>,
454}
455pub mod csv_format {
457 #[derive(Clone, PartialEq, ::prost::Oneof)]
458 pub enum Format {
459 #[prost(message, tag = "1")]
460 Wide(super::WideFormat),
461 #[prost(message, tag = "2")]
462 Long(super::LongFormat),
463 }
464}
465#[derive(Clone, PartialEq, ::prost::Message)]
466pub struct ParquetFormat {
467 #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
468 pub format: ::core::option::Option<parquet_format::Format>,
469}
470pub mod parquet_format {
472 #[derive(Clone, PartialEq, ::prost::Oneof)]
473 pub enum Format {
474 #[prost(message, tag = "1")]
475 Wide(super::WideFormat),
476 #[prost(message, tag = "2")]
477 Long(super::LongFormat),
478 }
479}
480#[derive(Clone, PartialEq, ::prost::Message)]
481pub struct WideFormat {
482 #[prost(map = "string, string", tag = "1")]
483 pub tag_columns: ::std::collections::HashMap<
484 ::prost::alloc::string::String,
485 ::prost::alloc::string::String,
486 >,
487 #[prost(string, repeated, tag = "2")]
488 pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
489}
490#[derive(Clone, PartialEq, ::prost::Message)]
491pub struct LongFormat {
492 #[prost(string, optional, tag = "1")]
493 pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
494 #[prost(string, optional, tag = "2")]
495 pub value_column: ::core::option::Option<::prost::alloc::string::String>,
496 #[prost(string, optional, tag = "3")]
497 pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
498}
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct LogIngestItem {
501 #[prost(message, optional, tag = "1")]
502 pub source: ::core::option::Option<IngestSource>,
503 #[prost(string, optional, tag = "2")]
504 pub channel: ::core::option::Option<::prost::alloc::string::String>,
505 #[prost(message, optional, tag = "3")]
506 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
507 #[prost(string, optional, tag = "4")]
508 pub message_field: ::core::option::Option<::prost::alloc::string::String>,
509}
510#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct McapIngestItem {
512 #[prost(message, optional, tag = "1")]
513 pub source: ::core::option::Option<IngestSource>,
514 #[prost(message, optional, tag = "2")]
515 pub channels: ::core::option::Option<McapChannelSelection>,
516 #[prost(bool, tag = "3")]
517 pub ignore_invalid_topics: bool,
518}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct McapChannelSelection {
521 #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
522 pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
523}
524pub mod mcap_channel_selection {
526 #[derive(Clone, PartialEq, ::prost::Oneof)]
527 pub enum Selection {
528 #[prost(message, tag = "1")]
529 IncludeTopics(super::McapTopicNames),
530 #[prost(message, tag = "2")]
531 ExcludeTopics(super::McapTopicNames),
532 }
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct McapTopicNames {
536 #[prost(string, repeated, tag = "1")]
537 pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
538}
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct DataflashIngestItem {
541 #[prost(message, optional, tag = "1")]
542 pub source: ::core::option::Option<IngestSource>,
543}
544#[derive(Clone, PartialEq, ::prost::Message)]
545pub struct PointCloudIngestItem {
546 #[prost(message, optional, tag = "1")]
547 pub source: ::core::option::Option<IngestSource>,
548 #[prost(message, optional, tag = "2")]
549 pub ingest: ::core::option::Option<PointCloudIngestOptions>,
550}
551#[derive(Clone, PartialEq, ::prost::Message)]
552pub struct PointCloudIngestOptions {
553 #[prost(message, optional, tag = "1")]
554 pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
555 #[prost(string, tag = "2")]
556 pub channel: ::prost::alloc::string::String,
557}
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct PointCloudSensorMetadata {
560 #[prost(map = "string, string", tag = "1")]
561 pub properties: ::std::collections::HashMap<
562 ::prost::alloc::string::String,
563 ::prost::alloc::string::String,
564 >,
565}
566#[derive(Clone, PartialEq, ::prost::Message)]
567pub struct VideoIngestItem {
568 #[prost(message, optional, tag = "1")]
569 pub source: ::core::option::Option<IngestSource>,
570 #[prost(message, optional, tag = "2")]
571 pub ingest: ::core::option::Option<VideoIngestOptions>,
572}
573#[derive(Clone, PartialEq, ::prost::Message)]
574pub struct VideoIngestOptions {
575 #[prost(message, optional, tag = "1")]
576 pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
577 #[prost(string, tag = "2")]
578 pub channel: ::prost::alloc::string::String,
579 #[prost(bool, optional, tag = "3")]
580 pub overwrite_segments: ::core::option::Option<bool>,
581}
582#[derive(Clone, PartialEq, ::prost::Message)]
583pub struct VideoTimestampManifest {
584 #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2")]
585 pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
586}
587pub mod video_timestamp_manifest {
589 #[derive(Clone, PartialEq, ::prost::Oneof)]
590 pub enum Manifest {
591 #[prost(message, tag = "1")]
592 NoManifest(super::NoTimestampManifest),
593 #[prost(message, tag = "2")]
594 TimestampManifestFiles(super::TimestampManifestFiles),
595 }
596}
597#[derive(Clone, Copy, PartialEq, ::prost::Message)]
598pub struct NoTimestampManifest {
599 #[prost(message, optional, tag = "1")]
600 pub starting_timestamp: ::core::option::Option<
601 super::super::super::google::protobuf::Timestamp,
602 >,
603 #[prost(message, optional, tag = "2")]
604 pub scale_parameter: ::core::option::Option<ScaleParameter>,
605}
606#[derive(Clone, PartialEq, ::prost::Message)]
607pub struct TimestampManifestFiles {
608 #[prost(message, repeated, tag = "1")]
609 pub sources: ::prost::alloc::vec::Vec<IngestSource>,
610}
611#[derive(Clone, Copy, PartialEq, ::prost::Message)]
612pub struct ScaleParameter {
613 #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
614 pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
615}
616pub mod scale_parameter {
618 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
619 pub enum ScaleParameter {
620 #[prost(double, tag = "1")]
621 TrueFrameRate(f64),
622 #[prost(message, tag = "2")]
623 EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
624 #[prost(double, tag = "3")]
625 ScaleFactor(f64),
626 }
627}
628#[derive(Clone, PartialEq, ::prost::Message)]
629pub struct IngestRequest {
630 #[prost(string, tag = "1")]
631 pub dataset_rid: ::prost::alloc::string::String,
632 #[prost(string, repeated, tag = "2")]
633 pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
634 #[prost(message, repeated, tag = "3")]
635 pub items: ::prost::alloc::vec::Vec<IngestItem>,
636 #[prost(map = "string, string", tag = "4")]
637 pub tags: ::std::collections::HashMap<
638 ::prost::alloc::string::String,
639 ::prost::alloc::string::String,
640 >,
641}
642#[derive(Clone, PartialEq, ::prost::Message)]
643pub struct IngestResponse {
644 #[prost(string, tag = "1")]
645 pub ingest_job_rid: ::prost::alloc::string::String,
646}
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct IngestItem {
649 #[prost(map = "string, string", tag = "1")]
650 pub tags: ::std::collections::HashMap<
651 ::prost::alloc::string::String,
652 ::prost::alloc::string::String,
653 >,
654 #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
655 pub item: ::core::option::Option<ingest_item::Item>,
656}
657pub mod ingest_item {
659 #[derive(Clone, PartialEq, ::prost::Oneof)]
660 pub enum Item {
661 #[prost(message, tag = "2")]
662 File(super::FileIngestItem),
663 #[prost(message, tag = "3")]
664 Log(super::LogIngestItem),
665 #[prost(message, tag = "4")]
666 Containerized(super::ContainerizedIngestItem),
667 #[prost(message, tag = "5")]
668 Video(super::VideoIngestItem),
669 #[prost(message, tag = "6")]
670 PointCloud(super::PointCloudIngestItem),
671 #[prost(message, tag = "7")]
672 Mcap(super::McapIngestItem),
673 #[prost(message, tag = "8")]
674 Dataflash(super::DataflashIngestItem),
675 }
676}
677pub mod ingest_service_client {
679 #![allow(
680 unused_variables,
681 dead_code,
682 missing_docs,
683 clippy::wildcard_imports,
684 clippy::let_unit_value,
685 )]
686 use tonic::codegen::*;
687 use tonic::codegen::http::Uri;
688 #[derive(Debug, Clone)]
689 pub struct IngestServiceClient<T> {
690 inner: tonic::client::Grpc<T>,
691 }
692 impl IngestServiceClient<tonic::transport::Channel> {
693 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
695 where
696 D: TryInto<tonic::transport::Endpoint>,
697 D::Error: Into<StdError>,
698 {
699 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
700 Ok(Self::new(conn))
701 }
702 }
703 impl<T> IngestServiceClient<T>
704 where
705 T: tonic::client::GrpcService<tonic::body::Body>,
706 T::Error: Into<StdError>,
707 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
708 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
709 {
710 pub fn new(inner: T) -> Self {
711 let inner = tonic::client::Grpc::new(inner);
712 Self { inner }
713 }
714 pub fn with_origin(inner: T, origin: Uri) -> Self {
715 let inner = tonic::client::Grpc::with_origin(inner, origin);
716 Self { inner }
717 }
718 pub fn with_interceptor<F>(
719 inner: T,
720 interceptor: F,
721 ) -> IngestServiceClient<InterceptedService<T, F>>
722 where
723 F: tonic::service::Interceptor,
724 T::ResponseBody: Default,
725 T: tonic::codegen::Service<
726 http::Request<tonic::body::Body>,
727 Response = http::Response<
728 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
729 >,
730 >,
731 <T as tonic::codegen::Service<
732 http::Request<tonic::body::Body>,
733 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
734 {
735 IngestServiceClient::new(InterceptedService::new(inner, interceptor))
736 }
737 #[must_use]
742 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
743 self.inner = self.inner.send_compressed(encoding);
744 self
745 }
746 #[must_use]
748 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
749 self.inner = self.inner.accept_compressed(encoding);
750 self
751 }
752 #[must_use]
756 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
757 self.inner = self.inner.max_decoding_message_size(limit);
758 self
759 }
760 #[must_use]
764 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
765 self.inner = self.inner.max_encoding_message_size(limit);
766 self
767 }
768 pub async fn ingest(
769 &mut self,
770 request: impl tonic::IntoRequest<super::IngestRequest>,
771 ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
772 self.inner
773 .ready()
774 .await
775 .map_err(|e| {
776 tonic::Status::unknown(
777 format!("Service was not ready: {}", e.into()),
778 )
779 })?;
780 let codec = tonic::codec::ProstCodec::default();
781 let path = http::uri::PathAndQuery::from_static(
782 "/nominal.ingest.v2.IngestService/Ingest",
783 );
784 let mut req = request.into_request();
785 req.extensions_mut()
786 .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
787 self.inner.unary(req, path, codec).await
788 }
789 }
790}