mirror of
https://github.com/vale981/ray
synced 2025-03-12 06:06:39 -04:00
109 lines
3.3 KiB
C
109 lines
3.3 KiB
C
#ifndef LOCAL_SCHEDULER_CLIENT_H
|
|
#define LOCAL_SCHEDULER_CLIENT_H
|
|
|
|
#include "common/task.h"
|
|
#include "local_scheduler_shared.h"
|
|
|
|
typedef struct {
|
|
/** File descriptor of the Unix domain socket that connects to local
|
|
* scheduler. */
|
|
int conn;
|
|
} LocalSchedulerConnection;
|
|
|
|
/**
|
|
* Connect to the local scheduler.
|
|
*
|
|
* @param local_scheduler_socket The name of the socket to use to connect to the
|
|
* local scheduler.
|
|
* @param actor_id The ID of the actor running on this worker. If no actor is
|
|
* running on this actor, this should be NIL_ACTOR_ID.
|
|
* @return The connection information.
|
|
*/
|
|
LocalSchedulerConnection *LocalSchedulerConnection_init(
|
|
const char *local_scheduler_socket,
|
|
ActorID actor_id);
|
|
|
|
/**
|
|
* Disconnect from the local scheduler.
|
|
*
|
|
* @param conn Local scheduler connection information returned by
|
|
* LocalSchedulerConnection_init.
|
|
* @return Void.
|
|
*/
|
|
void LocalSchedulerConnection_free(LocalSchedulerConnection *conn);
|
|
|
|
/**
|
|
* Submit a task to the local scheduler.
|
|
*
|
|
* @param conn The connection information.
|
|
* @param task The address of the task to submit.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_submit(LocalSchedulerConnection *conn, task_spec *task);
|
|
|
|
/**
|
|
* Log an event to the event log. This will call RPUSH key value. We use RPUSH
|
|
* instead of SET so that it is possible to flush the log multiple times with
|
|
* the same key (for example the key might be shared across logging calls in the
|
|
* same task on a worker).
|
|
*
|
|
* @param conn The connection information.
|
|
* @param key The key to store the event in.
|
|
* @param key_length The length of the key.
|
|
* @param value The value to store.
|
|
* @param value_length The length of the value.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_log_event(LocalSchedulerConnection *conn,
|
|
uint8_t *key,
|
|
int64_t key_length,
|
|
uint8_t *value,
|
|
int64_t value_length);
|
|
|
|
/**
|
|
* Get next task for this client. This will block until the scheduler assigns
|
|
* a task to this worker. This allocates and returns a task, and so the task
|
|
* must be freed by the caller.
|
|
*
|
|
* @todo When does this actually get freed?
|
|
*
|
|
* @param conn The connection information.
|
|
* @return The address of the assigned task.
|
|
*/
|
|
task_spec *local_scheduler_get_task(LocalSchedulerConnection *conn);
|
|
|
|
/**
|
|
* Tell the local scheduler that the client has finished executing a task.
|
|
*
|
|
* @param conn The connection information.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_task_done(LocalSchedulerConnection *conn);
|
|
|
|
/**
|
|
* Tell the local scheduler to reconstruct an object.
|
|
*
|
|
* @param conn The connection information.
|
|
* @param object_id The ID of the object to reconstruct.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_reconstruct_object(LocalSchedulerConnection *conn,
|
|
ObjectID object_id);
|
|
|
|
/**
|
|
* Send a log message to the local scheduler.
|
|
*
|
|
* @param conn The connection information.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_log_message(LocalSchedulerConnection *conn);
|
|
|
|
/**
|
|
* Notify the local scheduler that this client (worker) is no longer blocked.
|
|
*
|
|
* @param conn The connection information.
|
|
* @return Void.
|
|
*/
|
|
void local_scheduler_notify_unblocked(LocalSchedulerConnection *conn);
|
|
|
|
#endif
|