mirror of https://github.com/grpc/grpc-node.git
Merge pull request #196 from murgatroid99/package_definition_loader
Add package definition loader function to native package
This commit is contained in:
commit
01ce272dc9
|
|
@ -146,6 +146,29 @@ exports.load = function load(filename, format, options) {
|
|||
return loadObject(builder.ns, options);
|
||||
};
|
||||
|
||||
/**
|
||||
* Load a gRPC package definition as a gRPC object hierarchy
|
||||
* @param packageDef grpc~PackageDefinition The package definition object
|
||||
* @return {Object<string, *>} The resulting gRPC object
|
||||
*/
|
||||
exports.loadPackageDefinition = function loadPackageDefintion(packageDef) {
|
||||
const result = {};
|
||||
for (const serviceFqn in packageDef) {
|
||||
const service = packageDef[serviceFqn];
|
||||
const nameComponents = serviceFqn.split('.');
|
||||
const serviceName = nameComponents[nameComponents.length-1];
|
||||
let current = result;
|
||||
for (const packageName in nameComponents.slice(0, -1)) {
|
||||
if (!current[packageName]) {
|
||||
current[packageName] = {};
|
||||
}
|
||||
current = current[packageName];
|
||||
}
|
||||
current[serviceName] = client.makeClientConstructor(service, serviceName, {});
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
var log_template = _.template(
|
||||
'{severity} {timestamp}\t{file}:{line}]\t{message}',
|
||||
{interpolate: /{([\s\S]+?)}/g});
|
||||
|
|
|
|||
|
|
@ -170,3 +170,8 @@ exports.defaultGrpcOptions = {
|
|||
* An object that completely defines a service.
|
||||
* @typedef {Object.<string, grpc~MethodDefinition>} grpc~ServiceDefinition
|
||||
*/
|
||||
|
||||
/**
|
||||
* An object that defines a package hierarchy with multiple services
|
||||
* @typedef {Object.<string, grpc~ServiceDefinition>} grpc~PackageDefinition
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue