[
https://issues.apache.org/jira/browse/ARROW-6180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16906643#comment-16906643
]
Wes McKinney commented on ARROW-6180:
-------------------------------------
The idea is to have an private implementation of {{InputStream}} like this:
{code}
/// \brief Reads a segment of a RandomAccessFile in a thread-safe manner
class FileSegmentReader : public InputStream {
public:
FileSegmentReader(std::shared_ptr<RandomAccessFile> file, int64_t offset,
int64_t length) ...
...
private:
std::shared_ptr<RandomAccessFile> file_;
int64_t position_;
int64_t file_offset_;
int64_t total_length_;
}
{code}
> [C++] Create InputStream that references a segment of a RandomAccessFile
> ------------------------------------------------------------------------
>
> Key: ARROW-6180
> URL: https://issues.apache.org/jira/browse/ARROW-6180
> Project: Apache Arrow
> Issue Type: Improvement
> Components: C++
> Reporter: Wes McKinney
> Assignee: Zherui Cao
> Priority: Major
>
> If different threads wants to do buffered reads over different portions of a
> file (and they are unable to create their own separate file handles), they
> may clobber each other. I would propose creating an object that keeps the
> RandomAccessFile internally and implements the InputStream API in a way that
> is safe from other threads changing the file position
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)