ray/protos/types.proto

104 lines
2 KiB
Protocol Buffer

syntax = "proto3";
message Int {
int64 data = 1;
}
message String {
string data = 1;
}
message Double {
double data = 1;
}
// Empty used to represent a None object
message Empty {
}
message Bool {
bool data = 1;
}
message Ref {
uint64 data = 1;
}
message PyObj {
bytes data = 1;
}
// Union of possible object types
message Obj {
String string_data = 1;
Int int_data = 2;
Double double_data = 3;
Bool bool_data = 10;
Tuple tuple_data = 7;
List list_data = 4;
Dict dict_data = 8;
Array array_data = 5;
Empty empty_data = 9;
Ref objref_data = 11;
PyObj pyobj_data = 6;
}
message List {
repeated Obj elem = 1;
}
message Tuple {
repeated Obj elem = 1;
}
message DictEntry {
Obj key = 1;
Obj value = 2;
}
message Dict {
repeated DictEntry elem = 1;
}
message Value {
uint64 ref = 1; // For pass by reference
Obj obj = 2; // For pass by value
}
message Task {
string name = 1; // Name of the function call
repeated Value arg = 2; // List of arguments, can be either object references or protobuf descriptions of object passed by value
repeated uint64 result = 3; // Object references for result
}
message Put {
uint64 objref = 1; // The objref for the object that was put
}
// This is used internally by the scheduler. From the scheduler's perspective,
// the submission of tasks (via SubmitTask) and the submission of puts (via
// PutObj) look very similar, and so it is useful to be able to handle them
// together (for example in the computation graph).
message Operation {
Task task = 1;
Put put = 2;
uint64 creator_operationid = 3; // The id of the task that called this task or put.
}
message TaskStatus {
uint64 operationid = 1;
string function_name = 2;
string worker_address = 3;
string error_message = 4;
}
message Array {
repeated uint64 shape = 1;
sint64 dtype = 2;
bool is_scalar = 8;
repeated double double_data = 3;
repeated float float_data = 4;
repeated sint64 int_data = 5;
repeated uint64 uint_data = 6;
repeated uint64 objref_data = 7;
}