lua_protobuf_rs/descriptor/
service_descriptor.rs

1use crate::descriptor::method_descriptor::LuaMethodDescriptor;
2use crate::descriptor_proto::service_descriptor_proto::LuaServiceDescriptorProto;
3use derive_more::{Deref, From, Into};
4use mlua::prelude::LuaUserData;
5use mlua::UserDataMethods;
6use protobuf::reflect::ServiceDescriptor;
7
8#[derive(Clone, Eq, PartialEq, Deref, From, Into)]
9pub struct LuaServiceDescriptor(pub ServiceDescriptor);
10
11impl LuaUserData for LuaServiceDescriptor {
12    fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
13        methods.add_method("proto", |_, this, ()| {
14            let proto: LuaServiceDescriptorProto = this.proto().clone().into();
15            Ok(proto)
16        });
17        
18        methods.add_method("methods", |_, this, ()| {
19            let methods: Vec<LuaMethodDescriptor> = this.methods().map(From::from).collect();
20            Ok(methods)
21        });
22    }
23}