xref: /aosp_15_r20/bootable/recovery/minadbd/fuse_adb_provider.h (revision e7c364b630b241adcb6c7726a21055250b91fdac)
1*e7c364b6SAndroid Build Coastguard Worker /*
2*e7c364b6SAndroid Build Coastguard Worker  * Copyright (C) 2014 The Android Open Source Project
3*e7c364b6SAndroid Build Coastguard Worker  *
4*e7c364b6SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*e7c364b6SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*e7c364b6SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*e7c364b6SAndroid Build Coastguard Worker  *
8*e7c364b6SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*e7c364b6SAndroid Build Coastguard Worker  *
10*e7c364b6SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*e7c364b6SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*e7c364b6SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*e7c364b6SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*e7c364b6SAndroid Build Coastguard Worker  * limitations under the License.
15*e7c364b6SAndroid Build Coastguard Worker  */
16*e7c364b6SAndroid Build Coastguard Worker 
17*e7c364b6SAndroid Build Coastguard Worker #pragma once
18*e7c364b6SAndroid Build Coastguard Worker 
19*e7c364b6SAndroid Build Coastguard Worker #include <stdint.h>
20*e7c364b6SAndroid Build Coastguard Worker 
21*e7c364b6SAndroid Build Coastguard Worker #include "fuse_provider.h"
22*e7c364b6SAndroid Build Coastguard Worker 
23*e7c364b6SAndroid Build Coastguard Worker // This class reads data from adb server.
24*e7c364b6SAndroid Build Coastguard Worker class FuseAdbDataProvider : public FuseDataProvider {
25*e7c364b6SAndroid Build Coastguard Worker  public:
FuseAdbDataProvider(int fd,uint64_t file_size,uint32_t block_size)26*e7c364b6SAndroid Build Coastguard Worker   FuseAdbDataProvider(int fd, uint64_t file_size, uint32_t block_size)
27*e7c364b6SAndroid Build Coastguard Worker       : FuseDataProvider(file_size, block_size), fd_(fd) {}
28*e7c364b6SAndroid Build Coastguard Worker 
29*e7c364b6SAndroid Build Coastguard Worker   bool ReadBlockAlignedData(uint8_t* buffer, uint32_t fetch_size,
30*e7c364b6SAndroid Build Coastguard Worker                             uint32_t start_block) const override;
31*e7c364b6SAndroid Build Coastguard Worker 
Valid()32*e7c364b6SAndroid Build Coastguard Worker   bool Valid() const override {
33*e7c364b6SAndroid Build Coastguard Worker     return fd_ != -1;
34*e7c364b6SAndroid Build Coastguard Worker   }
35*e7c364b6SAndroid Build Coastguard Worker 
36*e7c364b6SAndroid Build Coastguard Worker  private:
37*e7c364b6SAndroid Build Coastguard Worker   // The underlying source to read data from (i.e. the one that talks to the host).
38*e7c364b6SAndroid Build Coastguard Worker   int fd_;
39*e7c364b6SAndroid Build Coastguard Worker };
40