Skip to content

Commit

Permalink
Implement Language/WorkerType enums
Browse files Browse the repository at this point in the history
  • Loading branch information
omus committed Aug 4, 2023
1 parent 119deab commit f2717f1
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
14 changes: 14 additions & 0 deletions deps/wrapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,20 @@ JLCXX_MODULE define_julia_module(jlcxx::Module& mod)
mod.add_type<ObjectID>("ObjectID");
mod.method("put", &put);
mod.method("get", &get);

// enum Language
mod.add_bits<ray::Language>("Language", jlcxx::julia_type("CppEnum"));
mod.set_const("PYTHON", ray::Language::PYTHON);
mod.set_const("JAVA", ray::Language::JAVA);
mod.set_const("CPP", ray::Language::CPP);
// mod.set_const("JULIA", Language::JULIA);

// enum WorkerType
mod.add_bits<ray::core::WorkerType>("WorkerType", jlcxx::julia_type("CppEnum"));
mod.set_const("WORKER", ray::core::WorkerType::WORKER);
mod.set_const("DRIVER", ray::core::WorkerType::DRIVER);
mod.set_const("SPILL_WORKER", ray::core::WorkerType::SPILL_WORKER);
mod.set_const("RESTORE_WORKER", ray::core::WorkerType::RESTORE_WORKER);
}

} // namespace julia
63 changes: 63 additions & 0 deletions src/wrappers/any.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# export ray_core_worker_julia
export Language, WorkerType

using CxxWrap
using libcxxwrap_julia_jll
Expand Down Expand Up @@ -34,3 +35,65 @@ function node_manager_port()
end

initialize_coreworker() = initialize_coreworker(node_manager_port())

# function Base.Symbol(language::Language)
# return if language === PYTHON
# :PYTHON
# elseif field === JAVA
# :JAVA
# elseif field === CPP
# :CPP
# elseif field === JULIA
# :JULIA
# else
# throw(ArgumentError("Unknown language: $language"))
# end
# end

# Base.instances(::Type{Language}) = (PYTHON, JAVA, CPP, JULIA)

function Base.getproperty(::Type{Language}, field::Symbol)
return if field === :PYTHON
PYTHON
elseif field === :JAVA
JAVA
elseif field === :CPP
CPP
# elseif field === :JULIA
# JULIA
else
Base.getfield(Language, field)
end
end

function Base.propertynames(::Type{Language}, private::Bool=false)
public_properties = (:PYTHON, :JAVA, :CPP, #= :JULIA =#)
return if private
tuple(public_properties..., fieldnames(typeof(Language))...)
else
public_properties
end
end

function Base.getproperty(::Type{WorkerType}, field::Symbol)
return if field === :WORKER
WORKER
elseif field === :DRIVER
DRIVER
elseif field === :SPILL_WORKER
SPILL_WORKER
elseif field === :RESTORE_WORKER
RESTORE_WORKER
else
Base.getfield(WorkerType, field)
end
end

function Base.propertynames(::Type{WorkerType}, private::Bool=false)
public_properties = (:WORKER, :DRIVER, :SPILL_WORKER, :RESTORE_WORKER)
return if private
tuple(public_properties..., fieldnames(typeof(WorkerType))...)
else
public_properties
end
end

0 comments on commit f2717f1

Please sign in to comment.