James Clampffer created HDFS-10339:
--------------------------------------
Summary: libhdfs++: Expose async operations through the C API
Key: HDFS-10339
URL: https://issues.apache.org/jira/browse/HDFS-10339
Project: Hadoop HDFS
Issue Type: Sub-task
Reporter: James Clampffer
Assignee: James Clampffer
I propose an API that looks like the following for doing async operations in C.
(might be some typeos, going off memory of what I tried, will clean up)
{code}
typedef struct {
int status;
ssize_t count;
... whatever else ...
} async_context;
typedef void* caller_context;
typedef void (*)(const async_context*, caller_context*) capi_callback;
void hdfsAsyncPread(hdfsFS fs, hdfsFile file, off_t offset, void *buf, size_t
count, capi_callback, caller_context);
{code}
When invoked we take a copy of the caller context that gets forwarded to the
callback when the async op completes; this is where a user can keep a pointer
to some state associated with the operation. The callback is invoked by a
const async_contex* analogous to the Status object in the C++ API so the
callback code can check status, bytes read, and other stuff.
Internally this can be implemented by a callable struct/lambda that captures
the caller_context and invokes the capi_callback with the caller_context and
result async_context.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)