@@ -216,31 +216,38 @@ where
216216
217217 async fn find_segment (
218218 & 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)
224226 }
225227
226228 async fn fetch_segment_index (
227229 & 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 > > ,
231233 ) -> 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)
233237 }
234238
235239 async fn fetch_segment_data (
236240 & 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 > > ,
240244 ) -> 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)
244251 }
245252}
246253
0 commit comments