#ifndef RAY_INCLUDE_RAY_H #define RAY_INCLUDE_RAY_H #include #include #include #include "logging.h" typedef size_t ObjectID; typedef size_t WorkerId; typedef size_t ObjStoreId; typedef size_t OperationId; typedef size_t SegmentId; // index into a memory segment table class FnInfo { size_t num_return_vals_; std::vector workers_; // `workers_` is a sorted vector public: void set_num_return_vals(size_t num) { num_return_vals_ = num; } size_t num_return_vals() const { return num_return_vals_; } void add_worker(WorkerId workerid) { // insert `workerid` into `workers_` so that `workers_` stays sorted workers_.insert(std::lower_bound(workers_.begin(), workers_.end(), workerid), workerid); } size_t num_workers() const { return workers_.size(); } const std::vector& workers() const { return workers_; } }; typedef std::vector > ObjTable; typedef std::unordered_map FnTable; class objstore_not_registered_error : public std::runtime_error { public: objstore_not_registered_error(const std::string& msg) : std::runtime_error(msg) {} }; struct slice { uint8_t* data; size_t len; SegmentId segmentid; }; #endif