Module: KRPC::Services
- Defined in:
- lib/krpc/service.rb
Defined Under Namespace
Classes: Core, ServiceBase
Class Method Summary collapse
-
.create_service(service_msg) ⇒ Object
Generate classes and methods for the service - see documentation for Client#generate_services_api!.
Class Method Details
.create_service(service_msg) ⇒ Object
Generate classes and methods for the service - see documentation for Client#generate_services_api!
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/krpc/service.rb', line 10 def create_service(service_msg) service_name = service_msg.name # Create service class service_class = Class.new(ServiceBase) const_set(service_name, service_class) # Create service' classes class_types_by_name = Hash.new do |h,k| TypeStore[PB::Type.new(code: :CLASS, service: service_name, name: k)] end service_msg.classes.map(&:name).each {|cn| class_types_by_name[cn] } # Create service' enums service_msg.enumerations.each do |enum| enum_type = TypeStore[PB::Type.new(code: :ENUMERATION, service: service_name, name: enum.name)] enum_type.set_values(enum.values) end # Create service' procedures service_msg.procedures.each do |proc| cls = if proc.class_member? class_types_by_name[proc.class_name].ruby_type else service_class end Gen.add_rpc_method(cls, service_name, proc) end # Return service class service_class end |