1#[derive(Debug)]
3pub struct OplogSyncerConfig {
4 src: Src,
5 oplog_storage: OplogStorage,
6}
7
8impl OplogSyncerConfig {
9 pub fn get_src_uri(&self) -> &str {
11 &self.src.uri
12 }
13
14 pub fn get_oplog_storage_uri(&self) -> &str {
16 &self.oplog_storage.uri
17 }
18}
19
20#[derive(Debug)]
21pub struct OplogStorage {
22 uri: String,
24}
25
26#[derive(Debug)]
28pub struct Src {
29 uri: String,
31}
32
33#[derive(Debug)]
35pub struct DetailSyncConf {
36 dst_uri: String,
38 db: String,
40 colls: Option<Vec<String>>,
42 collection_concurrent: usize,
44 doc_concurrent: usize,
46}
47
48fn number_of_cpus() -> usize {
49 num_cpus::get()
50}
51
52fn half_number_of_cpus() -> usize {
53 num_cpus::get() / 2
54}
55
56#[derive(Debug)]
57pub struct DbSyncConf {
59 src: Src,
60 oplog_storage: OplogStorage,
61 conf: DetailSyncConf,
62}
63
64impl DbSyncConf {
65 pub fn new(
67 src_uri: String,
68 target_uri: String,
69 oplog_storage_uri: String,
70 db: String,
71 colls: Option<Vec<String>>,
72 collection_concurrent: Option<usize>,
73 doc_concurrent: Option<usize>,
74 ) -> Self {
75 DbSyncConf {
76 src: Src { uri: src_uri },
77 oplog_storage: {
78 OplogStorage {
79 uri: oplog_storage_uri,
80 }
81 },
82 conf: DetailSyncConf {
83 dst_uri: target_uri,
84 db,
85 colls,
86 collection_concurrent: collection_concurrent.unwrap_or_else(number_of_cpus),
87 doc_concurrent: doc_concurrent.unwrap_or_else(half_number_of_cpus),
88 },
89 }
90 }
91
92 pub fn get_db(&self) -> &str {
94 &self.conf.db
95 }
96
97 pub fn get_record_collection(&self) -> &str {
99 "oplog_records"
100 }
101
102 pub fn get_oplog_storage_uri(&self) -> &str {
104 &self.oplog_storage.uri
105 }
106
107 pub fn get_dst_uri(&self) -> &str {
109 &self.conf.dst_uri
110 }
111
112 pub fn get_src_uri(&self) -> &str {
114 &self.src.uri
115 }
116
117 pub fn get_collection_concurrent(&self) -> usize {
119 self.conf.collection_concurrent
120 }
121
122 pub fn get_doc_concurrent(&self) -> usize {
124 self.conf.doc_concurrent
125 }
126
127 pub fn get_colls(&self) -> &Option<Vec<String>> {
131 &self.conf.colls
132 }
133}