1
1
pub mod metadata;
2
2
3
3
use crate :: index:: { IndexOptions , IndexStat } ;
4
- use crate :: instance:: { Instance , InstanceView } ;
4
+ use crate :: instance:: { Instance , InstanceView , InstanceViewOperations } ;
5
5
use crate :: prelude:: * ;
6
6
use crate :: utils:: clean:: clean;
7
7
use crate :: utils:: dir_ops:: sync_dir;
@@ -13,6 +13,25 @@ use std::collections::{HashMap, HashSet};
13
13
use std:: path:: PathBuf ;
14
14
use std:: sync:: Arc ;
15
15
16
+ pub trait WorkerOperations {
17
+ type InstanceView : InstanceViewOperations ;
18
+
19
+ fn create ( & self , handle : Handle , options : IndexOptions ) -> Result < ( ) , CreateError > ;
20
+ fn drop ( & self , handle : Handle ) -> Result < ( ) , DropError > ;
21
+ fn flush ( & self , handle : Handle ) -> Result < ( ) , FlushError > ;
22
+ fn insert (
23
+ & self ,
24
+ handle : Handle ,
25
+ vector : DynamicVector ,
26
+ pointer : Pointer ,
27
+ ) -> Result < ( ) , InsertError > ;
28
+ fn delete ( & self , handle : Handle , pointer : Pointer ) -> Result < ( ) , DeleteError > ;
29
+ fn basic_view ( & self , handle : Handle ) -> Result < Self :: InstanceView , BasicError > ;
30
+ fn vbase_view ( & self , handle : Handle ) -> Result < Self :: InstanceView , VbaseError > ;
31
+ fn list_view ( & self , handle : Handle ) -> Result < Self :: InstanceView , ListError > ;
32
+ fn stat ( & self , handle : Handle ) -> Result < IndexStat , StatError > ;
33
+ }
34
+
16
35
pub struct Worker {
17
36
path : PathBuf ,
18
37
protect : Mutex < WorkerProtect > ,
@@ -65,7 +84,12 @@ impl Worker {
65
84
pub fn view ( & self ) -> Arc < WorkerView > {
66
85
self . view . load_full ( )
67
86
}
68
- pub fn _create ( & self , handle : Handle , options : IndexOptions ) -> Result < ( ) , CreateError > {
87
+ }
88
+
89
+ impl WorkerOperations for Worker {
90
+ type InstanceView = InstanceView ;
91
+
92
+ fn create ( & self , handle : Handle , options : IndexOptions ) -> Result < ( ) , CreateError > {
69
93
use std:: collections:: hash_map:: Entry ;
70
94
let mut protect = self . protect . lock ( ) ;
71
95
match protect. indexes . entry ( handle) {
@@ -79,7 +103,7 @@ impl Worker {
79
103
Entry :: Occupied ( _) => Err ( CreateError :: Exist ) ,
80
104
}
81
105
}
82
- pub fn _drop ( & self , handle : Handle ) -> Result < ( ) , DropError > {
106
+ fn drop ( & self , handle : Handle ) -> Result < ( ) , DropError > {
83
107
let mut protect = self . protect . lock ( ) ;
84
108
if protect. indexes . remove ( & handle) . is_some ( ) {
85
109
protect. maintain ( & self . view ) ;
@@ -88,14 +112,14 @@ impl Worker {
88
112
Err ( DropError :: NotExist )
89
113
}
90
114
}
91
- pub fn _flush ( & self , handle : Handle ) -> Result < ( ) , FlushError > {
115
+ fn flush ( & self , handle : Handle ) -> Result < ( ) , FlushError > {
92
116
let view = self . view ( ) ;
93
117
let instance = view. get ( handle) . ok_or ( FlushError :: NotExist ) ?;
94
118
let view = instance. view ( ) . ok_or ( FlushError :: Upgrade ) ?;
95
119
view. flush ( ) ?;
96
120
Ok ( ( ) )
97
121
}
98
- pub fn _insert (
122
+ fn insert (
99
123
& self ,
100
124
handle : Handle ,
101
125
vector : DynamicVector ,
@@ -112,29 +136,29 @@ impl Worker {
112
136
}
113
137
Ok ( ( ) )
114
138
}
115
- pub fn _delete ( & self , handle : Handle , pointer : Pointer ) -> Result < ( ) , DeleteError > {
139
+ fn delete ( & self , handle : Handle , pointer : Pointer ) -> Result < ( ) , DeleteError > {
116
140
let view = self . view ( ) ;
117
141
let instance = view. get ( handle) . ok_or ( DeleteError :: NotExist ) ?;
118
142
let view = instance. view ( ) . ok_or ( DeleteError :: Upgrade ) ?;
119
143
view. delete ( pointer) ?;
120
144
Ok ( ( ) )
121
145
}
122
- pub fn _basic_view ( & self , handle : Handle ) -> Result < InstanceView , BasicError > {
146
+ fn basic_view ( & self , handle : Handle ) -> Result < InstanceView , BasicError > {
123
147
let view = self . view ( ) ;
124
148
let instance = view. get ( handle) . ok_or ( BasicError :: NotExist ) ?;
125
149
instance. view ( ) . ok_or ( BasicError :: Upgrade )
126
150
}
127
- pub fn _vbase_view ( & self , handle : Handle ) -> Result < InstanceView , VbaseError > {
151
+ fn vbase_view ( & self , handle : Handle ) -> Result < InstanceView , VbaseError > {
128
152
let view = self . view ( ) ;
129
153
let instance = view. get ( handle) . ok_or ( VbaseError :: NotExist ) ?;
130
154
instance. view ( ) . ok_or ( VbaseError :: Upgrade )
131
155
}
132
- pub fn _list_view ( & self , handle : Handle ) -> Result < InstanceView , ListError > {
156
+ fn list_view ( & self , handle : Handle ) -> Result < InstanceView , ListError > {
133
157
let view = self . view ( ) ;
134
158
let instance = view. get ( handle) . ok_or ( ListError :: NotExist ) ?;
135
159
instance. view ( ) . ok_or ( ListError :: Upgrade )
136
160
}
137
- pub fn _stat ( & self , handle : Handle ) -> Result < IndexStat , StatError > {
161
+ fn stat ( & self , handle : Handle ) -> Result < IndexStat , StatError > {
138
162
let view = self . view ( ) ;
139
163
let instance = view. get ( handle) . ok_or ( StatError :: NotExist ) ?;
140
164
let stat = instance. stat ( ) . ok_or ( StatError :: Upgrade ) ?;
0 commit comments