ray/src/common/state/object_table.h

179 lines
6 KiB
C
Raw Normal View History

#ifndef OBJECT_TABLE_H
#define OBJECT_TABLE_H
#include "common.h"
#include "table.h"
#include "db.h"
#include "task.h"
/*
* ==== Lookup call and callback ====
*/
/* Callback called when the lookup completes. The callback should free
* the manager_vector array, but NOT the strings they are pointing to.
*/
typedef void (*object_table_lookup_done_callback)(
object_id object_id,
int manager_count,
OWNER const char *manager_vector[],
void *user_context);
/**
* Return the list of nodes storing object_id in their plasma stores.
*
* @param db_handle Handle to object_table database.
* @param object_id ID of the object being looked up.
* @param retry Information about retrying the request to the database.
* @param done_callback Function to be called when database returns result.
* @param user_context Context passed by the caller.
* @return Void.
*/
void object_table_lookup(db_handle *db_handle,
object_id object_id,
retry_info *retry,
object_table_lookup_done_callback done_callback,
void *user_context);
/*
* ==== Add object call and callback ====
*/
/* Callback called when the object add/remove operation completes. */
typedef void (*object_table_done_callback)(object_id object_id,
void *user_context);
/**
* Add the plasma manager that created the db_handle to the
* list of plasma managers that have the object_id.
*
* @param db_handle Handle to db.
* @param object_id Object unique identifier.
* @param retry Information about retrying the request to the database.
* @param done_callback Callback to be called when lookup completes.
* @param user_context User context to be passed in the callbacks.
* @return Void.
*/
void object_table_add(db_handle *db_handle,
object_id object_id,
retry_info *retry,
object_table_done_callback done_callback,
void *user_context);
/*
* ==== Remove object call and callback ====
*/
/**
* Object remove function.
*
* @param db_handle Handle to db.
* @param object_id Object unique identifier.
* @param retry Information about retrying the request to the database.
* @param done_callback Callback to be called when lookup completes.
* @param user_context User context to be passed in the callbacks.
* @return Void.
*/
/*
void object_table_remove(db_handle *db,
2016-09-20 17:02:56 -07:00
object_id object_id,
lookup_callback callback,
void *context);
retry_info *retry,
object_table_done_callback done_callback,
void *user_context);
*/
/*
* ==== Subscribe to be announced when new object available ====
*/
/* Callback called when object object_id is available. */
typedef object_table_lookup_done_callback
object_table_object_available_callback;
/**
* Subcribing to new object available function.
*
* @param db_handle Handle to db.
* @param object_id Object unique identifier.
* @param object_available_callback callback to be called when new object
* becomes available.
* @param subscribe_context caller context which will be passed back in the
* object_available_callback.
* @param retry Information about retrying the request to the database.
* @param done_callback Callback to be called when subscription is installed.
* @param user_context User context to be passed into the done and fail
* callbacks.
* @return Void.
*/
void object_table_subscribe(
db_handle *db,
object_id object_id,
object_table_object_available_callback object_available_callback,
void *subscribe_context,
retry_info *retry,
object_table_lookup_done_callback done_callback,
void *user_context);
/* Data that is needed to register new object available callbacks with the state
* database. */
typedef struct {
object_table_object_available_callback object_available_callback;
void *subscribe_context;
} object_table_subscribe_data;
/*
* ==== Result table ====
*/
/**
* Callback called when the add/remove operation for a result table entry
* completes. */
typedef void (*result_table_done_callback)(object_id object_id,
void *user_context);
/**
* Add information about a new object to the object table. This
* is immutable information like the ID of the task that
* created the object.
*
* @param db_handle Handle to object_table database.
* @param object_id ID of the object to add.
* @param task_id ID of the task that creates this object.
* @param retry Information about retrying the request to the database.
* @param done_callback Function to be called when database returns result.
* @param user_context Context passed by the caller.
* @return Void.
*/
void result_table_add(db_handle *db_handle,
object_id object_id,
task_id task_id,
retry_info *retry,
result_table_done_callback done_callback,
void *user_context);
/** Callback called when the result table lookup completes. */
typedef void (*result_table_lookup_callback)(object_id object_id,
task *task,
void *user_context);
/**
* Lookup the task that created an object in the result table.
*
* @param db_handle Handle to object_table database.
* @param object_id ID of the object to lookup.
* @param retry Information about retrying the request to the database.
* @param done_callback Function to be called when database returns result.
* @param user_context Context passed by the caller.
* @return Void.
*/
void result_table_lookup(db_handle *db_handle,
object_id object_id,
retry_info *retry,
result_table_lookup_callback done_callback,
void *user_context);
#endif /* OBJECT_TABLE_H */