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)

Reply via email to