No tarball for gmail

This commit is contained in:
2022-07-24 22:33:35 -04:00
commit 16c9043bd0
13 changed files with 4394 additions and 0 deletions

33
grpc/index.js Normal file
View File

@@ -0,0 +1,33 @@
import grpc from '@grpc/grpc-js';
import proto from '@grpc/proto-loader';
export function loadPubSub() {
const PROTO_PATH = 'grpc/service.proto';
const packageDefinition = proto.loadSync(PROTO_PATH, {});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
return protoDescriptor.pubsub;
}
export function setupgRPC(handler) {
const server = new grpc.Server();
const pubsub = loadPubSub();
server.addService(pubsub.PubSub.service, handler)
return server
}
export function createClient(address) {
const pubsub = loadPubSub()
return new pubsub.PubSub(address, grpc.credentials.createInsecure());
}
export function startServer(
address,
handler,
logger,
) {
const server = setupgRPC(handler)
server.bindAsync(address, grpc.ServerCredentials.createInsecure(), () => {
logger.info(`Started server on ${address}`)
server.start();
});
return server
}

27
grpc/service.proto Normal file
View File

@@ -0,0 +1,27 @@
syntax = "proto3";
package pubsub;
service PubSub {
rpc Publish(PublishMessage) returns (PublishResponse) {}
rpc Consume(Consumer) returns (Message) {}
}
message PublishResponse {
}
message Consumer {
string topic = 1;
uint64 timeout_ms = 2;
}
message PublishMessage {
string topic = 1;
string message = 2;
}
message Message {
string message = 1;
}