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);
|
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(
|
var log_template = _.template(
|
||||||
'{severity} {timestamp}\t{file}:{line}]\t{message}',
|
'{severity} {timestamp}\t{file}:{line}]\t{message}',
|
||||||
{interpolate: /{([\s\S]+?)}/g});
|
{interpolate: /{([\s\S]+?)}/g});
|
||||||
|
|
|
||||||
|
|
@ -170,3 +170,8 @@ exports.defaultGrpcOptions = {
|
||||||
* An object that completely defines a service.
|
* An object that completely defines a service.
|
||||||
* @typedef {Object.<string, grpc~MethodDefinition>} grpc~ServiceDefinition
|
* @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