IOReader.h 1.0 KB
Newer Older
1
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
C
Cai Yudong 已提交
2
//
3 4
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
C
Cai Yudong 已提交
5
//
6 7 8 9 10
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under the License.
C
Cai Yudong 已提交
11 12 13

#pragma once

Y
yudong.cai 已提交
14
#include <memory>
C
Cai Yudong 已提交
15 16 17 18 19 20 21
#include <string>

namespace milvus {
namespace storage {

class IOReader {
 public:
C
Cai Yudong 已提交
22
    virtual bool
23
    Open(const std::string& name) = 0;
C
Cai Yudong 已提交
24 25

    virtual void
26
    Read(void* ptr, int64_t size) = 0;
C
Cai Yudong 已提交
27 28

    virtual void
29
    Seekg(int64_t pos) = 0;
C
Cai Yudong 已提交
30

C
Cai Yudong 已提交
31
    virtual int64_t
32
    Length() = 0;
C
Cai Yudong 已提交
33

34
    virtual void
35
    Close() = 0;
C
Cai Yudong 已提交
36 37
};

Y
yudong.cai 已提交
38 39
using IOReaderPtr = std::shared_ptr<IOReader>;

C
Cai Yudong 已提交
40 41
}  // namespace storage
}  // namespace milvus