Skip to main content

qdrant_client/builders/
max_optimization_threads_builder.rs

1use crate::qdrant::*;
2
3/// Max number of threads (jobs) for running optimizations per shard.
4/// Each optimization job will also use `max_indexing_threads` threads by itself for index building.
5///
6/// - If `auto` - have no limit and choose dynamically to saturate CPU.
7/// - If `disabled` or `0` - no optimization threads, optimizations will be disabled.
8#[must_use]
9#[derive(Clone)]
10pub struct MaxOptimizationThreadsBuilder {
11    pub(crate) inner: MaxOptimizationThreads,
12}
13
14impl MaxOptimizationThreadsBuilder {
15    /// Use specific number of optimization threads.
16    ///
17    /// - If `0` - no optimization threads, optimizations will be disabled.
18    #[inline]
19    pub fn threads(threads: u64) -> Self {
20        Self {
21            inner: MaxOptimizationThreads::from(threads),
22        }
23    }
24
25    /// No optimization threads, optimizations will be disabled.
26    #[inline]
27    pub fn disabled() -> Self {
28        Self::threads(0)
29    }
30
31    /// Have no limit and choose dynamically to saturate CPU.
32    #[inline]
33    pub fn auto() -> Self {
34        Self {
35            inner: MaxOptimizationThreads::from(max_optimization_threads::Variant::Setting(
36                max_optimization_threads::Setting::Auto as i32,
37            )),
38        }
39    }
40}
41
42impl From<MaxOptimizationThreadsBuilder> for MaxOptimizationThreads {
43    fn from(value: MaxOptimizationThreadsBuilder) -> Self {
44        value.build()
45    }
46}
47
48impl MaxOptimizationThreadsBuilder {
49    pub fn build(self) -> MaxOptimizationThreads {
50        self.inner
51    }
52}
53
54impl Default for MaxOptimizationThreadsBuilder {
55    fn default() -> Self {
56        Self::auto()
57    }
58}
59
60impl From<u64> for MaxOptimizationThreads {
61    fn from(threads: u64) -> Self {
62        MaxOptimizationThreads {
63            variant: Some(max_optimization_threads::Variant::from(threads)),
64        }
65    }
66}
67
68impl From<max_optimization_threads::Variant> for MaxOptimizationThreads {
69    fn from(setting: max_optimization_threads::Variant) -> Self {
70        MaxOptimizationThreads {
71            variant: Some(setting),
72        }
73    }
74}
75
76impl From<u64> for max_optimization_threads::Variant {
77    fn from(threads: u64) -> Self {
78        Self::Value(threads)
79    }
80}
81
82impl From<max_optimization_threads::Setting> for max_optimization_threads::Variant {
83    fn from(setting: max_optimization_threads::Setting) -> Self {
84        Self::Setting(setting as i32)
85    }
86}