]> git.proxmox.com Git - ceph.git/blame - ceph/src/arrow/csharp/src/Apache.Arrow/Ipc/ArrowFileReader.cs
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / csharp / src / Apache.Arrow / Ipc / ArrowFileReader.cs
CommitLineData
1d09f67e
TL
1// Licensed to the Apache Software Foundation (ASF) under one or more
2// contributor license agreements. See the NOTICE file distributed with
3// this work for additional information regarding copyright ownership.
4// The ASF licenses this file to You under the Apache License, Version 2.0
5// (the "License"); you may not use this file except in compliance with
6// the License. You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16using Apache.Arrow.Memory;
17using System.IO;
18using System.Threading;
19using System.Threading.Tasks;
20
21namespace Apache.Arrow.Ipc
22{
23 /// <summary>
24 /// Implements an <see cref="ArrowStreamReader"/> that can read Arrow files.
25 /// </summary>
26 public class ArrowFileReader : ArrowStreamReader
27 {
28 private ArrowFileReaderImplementation Implementation =>
29 (ArrowFileReaderImplementation)_implementation;
30
31 public bool IsFileValid => Implementation.IsFileValid;
32
33 public ArrowFileReader(Stream stream)
34 : this(stream, leaveOpen: false)
35 {
36 }
37
38 public ArrowFileReader(Stream stream, MemoryAllocator allocator)
39 : this(stream, allocator, leaveOpen: false)
40 {
41 }
42
43 public ArrowFileReader(Stream stream, bool leaveOpen)
44 : this(stream, allocator: null, leaveOpen)
45 {
46 }
47
48 public ArrowFileReader(Stream stream, MemoryAllocator allocator, bool leaveOpen)
49 : base(new ArrowFileReaderImplementation(stream, allocator, leaveOpen))
50 {
51 }
52
53 public static ArrowFileReader FromFile(string filename)
54 {
55 var stream = new FileStream(filename, FileMode.Open, FileAccess.Read);
56 return new ArrowFileReader(stream);
57 }
58
59 public ValueTask<int> RecordBatchCountAsync()
60 {
61 return Implementation.RecordBatchCountAsync();
62 }
63
64 public ValueTask<RecordBatch> ReadRecordBatchAsync(int index, CancellationToken cancellationToken = default)
65 {
66 return Implementation.ReadRecordBatchAsync(index, cancellationToken);
67 }
68 }
69}