Add LRPCClient.getObject()
This commit is contained in:
		@@ -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