@@ -216,31 +216,38 @@ where
216
216
217
217
async fn find_segment (
218
218
& self ,
219
- _namespace : & NamespaceName ,
220
- _frame_no : u64 ,
221
- _config_override : Option < Arc < Self :: Config > > ,
222
- ) -> super :: Result < super :: backend:: s3:: SegmentKey > {
223
- todo ! ( )
219
+ namespace : & NamespaceName ,
220
+ frame_no : u64 ,
221
+ config_override : Option < Arc < Self :: Config > > ,
222
+ ) -> super :: Result < super :: SegmentKey > {
223
+ let config = config_override. unwrap_or_else ( || self . backend . default_config ( ) ) ;
224
+ let key = self . backend . find_segment ( & config, namespace, frame_no) . await ?;
225
+ Ok ( key)
224
226
}
225
227
226
228
async fn fetch_segment_index (
227
229
& self ,
228
- _namespace : & NamespaceName ,
229
- _key : super :: backend :: s3 :: SegmentKey ,
230
- _config_override : Option < Arc < Self :: Config > > ,
230
+ namespace : & NamespaceName ,
231
+ key : & super :: SegmentKey ,
232
+ config_override : Option < Arc < Self :: Config > > ,
231
233
) -> super :: Result < fst:: Map < Arc < [ u8 ] > > > {
232
- todo ! ( )
234
+ let config = config_override. unwrap_or_else ( || self . backend . default_config ( ) ) ;
235
+ let index = self . backend . fetch_segment_index ( & config, namespace, key) . await ?;
236
+ Ok ( index)
233
237
}
234
238
235
239
async fn fetch_segment_data (
236
240
& self ,
237
- _namespace : & NamespaceName ,
238
- _key : super :: backend :: s3 :: SegmentKey ,
239
- _config_override : Option < Arc < Self :: Config > > ,
241
+ namespace : & NamespaceName ,
242
+ key : & super :: SegmentKey ,
243
+ config_override : Option < Arc < Self :: Config > > ,
240
244
) -> super :: Result < CompactedSegment < impl FileExt > > {
241
- todo ! ( ) ;
242
- #[ allow( unreachable_code) ]
243
- super :: Result :: < CompactedSegment < std:: fs:: File > > :: Err ( super :: Error :: InvalidIndex ( "" ) )
245
+ // TODO: make async
246
+ let config = config_override. unwrap_or_else ( || self . backend . default_config ( ) ) ;
247
+ let backend = self . backend . clone ( ) ;
248
+ let file = backend. fetch_segment_data ( config, namespace. clone ( ) , * key) . await ?;
249
+ let segment = CompactedSegment :: open ( file) . await ?;
250
+ Ok ( segment)
244
251
}
245
252
}
246
253
0 commit comments