Add LRPCClient.getObject()
This commit is contained in:
parent
205e0b71e4
commit
5e61e89ac1
@ -92,6 +92,27 @@ class LRPCClient
|
|||||||
@conn.send(data.buffer)
|
@conn.send(data.buffer)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# getClient returns an object containing functions
|
||||||
|
# corresponding to registered functions on the given
|
||||||
|
# receiver. It uses the lrpc.Introspect() endpoint
|
||||||
|
# to achieve this.
|
||||||
|
def getObject(rcvr)
|
||||||
|
return Promise.new do |resolve|
|
||||||
|
# Introspect methods on given receiver
|
||||||
|
self.callMethod("lrpc", "Introspect", rcvr).then do |methodDesc|
|
||||||
|
# Create output object
|
||||||
|
out = {}
|
||||||
|
# For each method in description array
|
||||||
|
methodDesc.each do |method|
|
||||||
|
# Create and assign new function to call current method
|
||||||
|
out[method.Name] = proc { |arg| return self.callMethod(rcvr, method.Name, arg) }
|
||||||
|
end
|
||||||
|
# Resolve promise with output promise
|
||||||
|
resolve(out)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# LRPCChannel represents a channel used for lrpc.
|
# LRPCChannel represents a channel used for lrpc.
|
||||||
|
Reference in New Issue
Block a user