Node service

This commit is contained in:
Eden Kirin
2023-03-20 07:52:24 +01:00
parent a99b5d0014
commit a0d2d1cb7f
12 changed files with 2060 additions and 2 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
__pycache__
/dist
/src/funnel/env
/src/serve_currenttime/target
/src/serve_currenttime_rust/target
/src/serve_currenttime/node_modules

View File

@ -1,2 +1,13 @@
PROTO_DIR=../protos
STUBS_DIR=./stubs
PROTO_FILENAME=serve_currenttime.proto
run:
cargo run --bin serve_currenttime
@node main.js
proto:
@npx grpc_tools_node_protoc \
-I$(PROTO_DIR) \
--js_out=import_style=commonjs,binary:$(STUBS_DIR) \
--grpc_out=grpc_js:$(STUBS_DIR) \
$(PROTO_DIR)/$(PROTO_FILENAME)

View File

@ -0,0 +1,27 @@
const messages = require("./stubs/serve_currenttime_pb");
const services = require("./stubs/serve_currenttime_grpc_pb");
const grpc = require("@grpc/grpc-js");
const SERVE_CURRENTTIME_HOST = "localhost";
const SERVE_CURRENTTIME_PORT = 50000;
function getCurrentTime(call, callback) {
var response = new messages.GetCurrentTimeResponse();
response.setMessage("Hello " + call.request.getName());
callback(null, response);
}
function main() {
console.log(`Starting server on ${SERVE_CURRENTTIME_HOST}:${SERVE_CURRENTTIME_PORT}`);
var server = new grpc.Server();
server.addService(services.ServeCurrentTimeService, { getCurrentTime: getCurrentTime });
server.bindAsync(
`${SERVE_CURRENTTIME_HOST}:${SERVE_CURRENTTIME_PORT}`,
grpc.ServerCredentials.createInsecure(),
() => {
server.start();
}
);
}
main();

1512
src/serve_currenttime/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"name": "grpc-examples",
"version": "0.1.0",
"dependencies": {
"@grpc/grpc-js": "^1.8.12",
"@grpc/proto-loader": "^0.7.5",
"async": "^3.2.4",
"google-protobuf": "^3.21.2",
"grpc-tools": "^1.12.4",
"lodash": "^4.17.21",
"minimist": "^1.2.8"
}
}

View File

@ -0,0 +1,44 @@
// GENERATED CODE -- DO NOT EDIT!
'use strict';
var grpc = require('@grpc/grpc-js');
var serve_currenttime_pb = require('./serve_currenttime_pb.js');
function serialize_serve_currenttime_GetCurrentTimeRequest(arg) {
if (!(arg instanceof serve_currenttime_pb.GetCurrentTimeRequest)) {
throw new Error('Expected argument of type serve_currenttime.GetCurrentTimeRequest');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_serve_currenttime_GetCurrentTimeRequest(buffer_arg) {
return serve_currenttime_pb.GetCurrentTimeRequest.deserializeBinary(new Uint8Array(buffer_arg));
}
function serialize_serve_currenttime_GetCurrentTimeResponse(arg) {
if (!(arg instanceof serve_currenttime_pb.GetCurrentTimeResponse)) {
throw new Error('Expected argument of type serve_currenttime.GetCurrentTimeResponse');
}
return Buffer.from(arg.serializeBinary());
}
function deserialize_serve_currenttime_GetCurrentTimeResponse(buffer_arg) {
return serve_currenttime_pb.GetCurrentTimeResponse.deserializeBinary(new Uint8Array(buffer_arg));
}
var ServeCurrentTimeService = exports.ServeCurrentTimeService = {
getCurrentTime: {
path: '/serve_currenttime.ServeCurrentTime/GetCurrentTime',
requestStream: false,
responseStream: false,
requestType: serve_currenttime_pb.GetCurrentTimeRequest,
responseType: serve_currenttime_pb.GetCurrentTimeResponse,
requestSerialize: serialize_serve_currenttime_GetCurrentTimeRequest,
requestDeserialize: deserialize_serve_currenttime_GetCurrentTimeRequest,
responseSerialize: serialize_serve_currenttime_GetCurrentTimeResponse,
responseDeserialize: deserialize_serve_currenttime_GetCurrentTimeResponse,
},
};
exports.ServeCurrentTimeClient = grpc.makeGenericClientConstructor(ServeCurrentTimeService);

View File

@ -0,0 +1,448 @@
// source: serve_currenttime.proto
/**
* @fileoverview
* @enhanceable
* @suppress {missingRequire} reports error on implicit type usages.
* @suppress {messageConventions} JS Compiler reports an error if a variable or
* field starts with 'MSG_' and isn't a translatable message.
* @public
*/
// GENERATED CODE -- DO NOT EDIT!
/* eslint-disable */
// @ts-nocheck
var jspb = require('google-protobuf');
var goog = jspb;
var global = (function() {
if (this) { return this; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
if (typeof self !== 'undefined') { return self; }
return Function('return this')();
}.call(null));
goog.exportSymbol('proto.serve_currenttime.GetCurrentTimeRequest', null, global);
goog.exportSymbol('proto.serve_currenttime.GetCurrentTimeResponse', null, global);
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.serve_currenttime.GetCurrentTimeRequest = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.serve_currenttime.GetCurrentTimeRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
/**
* @public
* @override
*/
proto.serve_currenttime.GetCurrentTimeRequest.displayName = 'proto.serve_currenttime.GetCurrentTimeRequest';
}
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.serve_currenttime.GetCurrentTimeResponse = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.serve_currenttime.GetCurrentTimeResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
/**
* @public
* @override
*/
proto.serve_currenttime.GetCurrentTimeResponse.displayName = 'proto.serve_currenttime.GetCurrentTimeResponse';
}
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
* JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @return {!Object}
*/
proto.serve_currenttime.GetCurrentTimeRequest.prototype.toObject = function(opt_includeInstance) {
return proto.serve_currenttime.GetCurrentTimeRequest.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
* the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.serve_currenttime.GetCurrentTimeRequest} msg The msg instance to transform.
* @return {!Object}
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.serve_currenttime.GetCurrentTimeRequest.toObject = function(includeInstance, msg) {
var f, obj = {
timezone: jspb.Message.getFieldWithDefault(msg, 1, "")
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.serve_currenttime.GetCurrentTimeRequest}
*/
proto.serve_currenttime.GetCurrentTimeRequest.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.serve_currenttime.GetCurrentTimeRequest;
return proto.serve_currenttime.GetCurrentTimeRequest.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.serve_currenttime.GetCurrentTimeRequest} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.serve_currenttime.GetCurrentTimeRequest}
*/
proto.serve_currenttime.GetCurrentTimeRequest.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = /** @type {string} */ (reader.readString());
msg.setTimezone(value);
break;
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.serve_currenttime.GetCurrentTimeRequest.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
proto.serve_currenttime.GetCurrentTimeRequest.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
* Serializes the given message to binary data (in protobuf wire
* format), writing to the given BinaryWriter.
* @param {!proto.serve_currenttime.GetCurrentTimeRequest} message
* @param {!jspb.BinaryWriter} writer
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.serve_currenttime.GetCurrentTimeRequest.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
f = message.getTimezone();
if (f.length > 0) {
writer.writeString(
1,
f
);
}
};
/**
* optional string timezone = 1;
* @return {string}
*/
proto.serve_currenttime.GetCurrentTimeRequest.prototype.getTimezone = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};
/**
* @param {string} value
* @return {!proto.serve_currenttime.GetCurrentTimeRequest} returns this
*/
proto.serve_currenttime.GetCurrentTimeRequest.prototype.setTimezone = function(value) {
return jspb.Message.setProto3StringField(this, 1, value);
};
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
* JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @return {!Object}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.toObject = function(opt_includeInstance) {
return proto.serve_currenttime.GetCurrentTimeResponse.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
* the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.serve_currenttime.GetCurrentTimeResponse} msg The msg instance to transform.
* @return {!Object}
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.serve_currenttime.GetCurrentTimeResponse.toObject = function(includeInstance, msg) {
var f, obj = {
hours: jspb.Message.getFieldWithDefault(msg, 1, 0),
minutes: jspb.Message.getFieldWithDefault(msg, 2, 0),
seconds: jspb.Message.getFieldWithDefault(msg, 3, 0),
milliseconds: jspb.Message.getFieldWithDefault(msg, 4, 0),
formattedTime: jspb.Message.getFieldWithDefault(msg, 5, "")
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.serve_currenttime.GetCurrentTimeResponse}
*/
proto.serve_currenttime.GetCurrentTimeResponse.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.serve_currenttime.GetCurrentTimeResponse;
return proto.serve_currenttime.GetCurrentTimeResponse.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.serve_currenttime.GetCurrentTimeResponse} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.serve_currenttime.GetCurrentTimeResponse}
*/
proto.serve_currenttime.GetCurrentTimeResponse.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = /** @type {number} */ (reader.readUint32());
msg.setHours(value);
break;
case 2:
var value = /** @type {number} */ (reader.readUint32());
msg.setMinutes(value);
break;
case 3:
var value = /** @type {number} */ (reader.readUint32());
msg.setSeconds(value);
break;
case 4:
var value = /** @type {number} */ (reader.readUint32());
msg.setMilliseconds(value);
break;
case 5:
var value = /** @type {string} */ (reader.readString());
msg.setFormattedTime(value);
break;
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
proto.serve_currenttime.GetCurrentTimeResponse.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
* Serializes the given message to binary data (in protobuf wire
* format), writing to the given BinaryWriter.
* @param {!proto.serve_currenttime.GetCurrentTimeResponse} message
* @param {!jspb.BinaryWriter} writer
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.serve_currenttime.GetCurrentTimeResponse.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
f = message.getHours();
if (f !== 0) {
writer.writeUint32(
1,
f
);
}
f = message.getMinutes();
if (f !== 0) {
writer.writeUint32(
2,
f
);
}
f = message.getSeconds();
if (f !== 0) {
writer.writeUint32(
3,
f
);
}
f = message.getMilliseconds();
if (f !== 0) {
writer.writeUint32(
4,
f
);
}
f = message.getFormattedTime();
if (f.length > 0) {
writer.writeString(
5,
f
);
}
};
/**
* optional uint32 hours = 1;
* @return {number}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.getHours = function() {
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};
/**
* @param {number} value
* @return {!proto.serve_currenttime.GetCurrentTimeResponse} returns this
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.setHours = function(value) {
return jspb.Message.setProto3IntField(this, 1, value);
};
/**
* optional uint32 minutes = 2;
* @return {number}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.getMinutes = function() {
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};
/**
* @param {number} value
* @return {!proto.serve_currenttime.GetCurrentTimeResponse} returns this
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.setMinutes = function(value) {
return jspb.Message.setProto3IntField(this, 2, value);
};
/**
* optional uint32 seconds = 3;
* @return {number}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.getSeconds = function() {
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};
/**
* @param {number} value
* @return {!proto.serve_currenttime.GetCurrentTimeResponse} returns this
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.setSeconds = function(value) {
return jspb.Message.setProto3IntField(this, 3, value);
};
/**
* optional uint32 milliseconds = 4;
* @return {number}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.getMilliseconds = function() {
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};
/**
* @param {number} value
* @return {!proto.serve_currenttime.GetCurrentTimeResponse} returns this
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.setMilliseconds = function(value) {
return jspb.Message.setProto3IntField(this, 4, value);
};
/**
* optional string formatted_time = 5;
* @return {string}
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.getFormattedTime = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
};
/**
* @param {string} value
* @return {!proto.serve_currenttime.GetCurrentTimeResponse} returns this
*/
proto.serve_currenttime.GetCurrentTimeResponse.prototype.setFormattedTime = function(value) {
return jspb.Message.setProto3StringField(this, 5, value);
};
goog.object.extend(exports, proto.serve_currenttime);

View File

@ -0,0 +1,2 @@
run:
cargo run --bin serve_currenttime