Skip to content

Commit 7dc9e3c

Browse files
committed
modularize grpc controller and main into main_grpcController
1 parent 32d47b3 commit 7dc9e3c

File tree

7 files changed

+294
-252
lines changed

7 files changed

+294
-252
lines changed

main.js

Lines changed: 2 additions & 206 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ const protoParserFunc = require("./src/client/protoParser.js");
5151
require("./menu/mainMenu");
5252
// require http controller file
5353

54-
require("./httpMainController.js")();
54+
require("./main_httpController.js")();
5555
// require('./SSEController.js')();
56+
require("./main_grpcController.js")();
5657

5758
// configure logging
5859
// autoUpdater.logger = log;
@@ -546,211 +547,6 @@ ipcMain.on("protoParserFunc-request", (event, data) => {
546547
);
547548
});
548549

549-
// ======================= grpcController.openGrpcConnection
550-
551-
ipcMain.on("fetch-meta-and-client", (event, data) => {
552-
const { reqResObj } = data;
553-
const { rpcType } = data;
554-
const PROTO_PATH = reqResObj.protoPath;
555-
const { packageName, service, url, rpc, queryArr } = data.reqResObj;
556-
const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
557-
keepCase: true,
558-
longs: String,
559-
enums: String,
560-
defaults: true,
561-
oneofs: true,
562-
});
563-
// create client credentials
564-
const serverName = grpc.loadPackageDefinition(packageDefinition)[packageName];
565-
const client = new serverName[service](
566-
url,
567-
grpc.credentials.createInsecure()
568-
);
569-
570-
// create client requested metadata key and value pair for each type of streaming
571-
const meta = new grpc.Metadata();
572-
// this is doing nothing right now
573-
const metaArr = reqResObj.request.headers;
574-
for (let i = 0; i < metaArr.length; i += 1) {
575-
const currentHeader = metaArr[i];
576-
meta.add(currentHeader.key, currentHeader.value);
577-
}
578-
579-
if (rpcType === "UNARY") {
580-
console.log("\n \n inside UNARY if statement");
581-
const query = reqResObj.queryArr[0];
582-
const time = {};
583-
584-
// Open Connection and set time sent for Unary
585-
reqResObj.connection = "open";
586-
587-
time.timeSent = Date.now();
588-
// make Unary call
589-
client[rpc](query, meta, (err, data) => {
590-
if (err) {
591-
console.log("unary error", err);
592-
}
593-
// Close Connection and set time received for Unary
594-
reqResObj.timeSent = time.timeSent;
595-
596-
time.timeReceived = Date.now();
597-
reqResObj.timeReceived = time.timeReceived;
598-
599-
reqResObj.connection = "closed";
600-
reqResObj.response.events.push(data);
601-
reqResObj.response.times.push(time);
602-
// send stuff back for store
603-
mainWindow.webContents.send("reqResUpdate", reqResObj);
604-
}) // metadata from server
605-
.on("metadata", (data) => {
606-
// metadata is a Map, not an object
607-
const metadata = data.internalRepr;
608-
// set metadata Map as headers
609-
metadata.forEach((value, key) => {
610-
reqResObj.response.headers[key] = value[0];
611-
});
612-
mainWindow.webContents.send("reqResUpdate", reqResObj);
613-
});
614-
} else if (rpcType === "SERVER STREAM") {
615-
console.log("SERVER STREAM inside gRPC");
616-
const timesArr = [];
617-
// Open Connection for SERVER Stream
618-
reqResObj.connection = "open";
619-
reqResObj.timeSent = Date.now();
620-
const call = client[rpc](reqResObj.queryArr[0], meta);
621-
call.on("data", (resp) => {
622-
const time = {};
623-
time.timeReceived = Date.now();
624-
time.timeSent = reqResObj.timeSent;
625-
// add server response to reqResObj and dispatch to state/store
626-
reqResObj.response.events.push(resp);
627-
reqResObj.response.times.push(time);
628-
reqResObj.timeReceived = time.timeReceived; // overwritten on each call to get the final value
629-
630-
mainWindow.webContents.send("reqResUpdate", reqResObj);
631-
});
632-
call.on("error", () => {
633-
// for fatal error from server
634-
console.log("server side stream error");
635-
});
636-
call.on("end", () => {
637-
// Close Connection for SERVER Stream
638-
reqResObj.connection = "closed";
639-
// no need to push response to reqResObj, no event expected from on 'end'
640-
mainWindow.webContents.send("reqResUpdate", reqResObj);
641-
});
642-
call.on("metadata", (data) => {
643-
const metadata = data.internalRepr;
644-
// set metadata Map as headers
645-
metadata.forEach((value, key) => {
646-
reqResObj.response.headers[key] = value[0];
647-
});
648-
mainWindow.webContents.send("reqResUpdate", reqResObj);
649-
});
650-
} else if (rpcType === "CLIENT STREAM") {
651-
console.log("CLIENT STREAM inside gRPC");
652-
// create call and open client stream connection
653-
reqResObj.connection = "open";
654-
const timeSent = Date.now();
655-
reqResObj.timeSent = timeSent;
656-
const call = client[rpc](meta, function (error, response) {
657-
if (error) {
658-
console.log("error in client stream", error);
659-
}
660-
//Close Connection for client Stream
661-
reqResObj.connection = "closed";
662-
const curTime = Date.now();
663-
reqResObj.response.times.forEach((time) => {
664-
time.timeReceived = curTime;
665-
reqResObj.timeReceived = time.timeReceived;
666-
});
667-
reqResObj.response.events.push(response);
668-
// update state
669-
mainWindow.webContents.send("reqResUpdate", reqResObj);
670-
}).on("metadata", (data) => {
671-
// metadata is a Map, not an object
672-
const metadata = data.internalRepr;
673-
674-
metadata.forEach((value, key) => {
675-
reqResObj.response.headers[key] = value[0];
676-
});
677-
mainWindow.webContents.send("reqResUpdate", reqResObj);
678-
});
679-
680-
for (let i = 0; i < queryArr.length; i++) {
681-
const query = queryArr[i];
682-
// Open Connection for client Stream
683-
// this needs additional work to provide correct sent time for each
684-
// request without overwrite
685-
const time = {};
686-
687-
reqResObj.connection = "pending";
688-
689-
time.timeSent = timeSent;
690-
reqResObj.response.times.push(time);
691-
692-
//reqResObj.connectionType = 'plain';
693-
// reqResObj.timeSent = Date.now();
694-
695-
call.write(query);
696-
}
697-
call.end();
698-
}
699-
700-
//else BIDIRECTIONAL
701-
else {
702-
console.log("BIDIRECTIONAL gRPC");
703-
let counter = 0;
704-
const call = client[rpc](meta);
705-
call.on("data", (response) => {
706-
const curTimeObj = reqResObj.response.times[counter];
707-
counter++;
708-
//Close Individual Server Response for BIDIRECTIONAL Stream
709-
reqResObj.connection = "pending";
710-
curTimeObj.timeReceived = Date.now();
711-
reqResObj.timeReceived = curTimeObj.timeReceived;
712-
reqResObj.response.events.push(response);
713-
reqResObj.response.times.push(curTimeObj);
714-
// update redux store
715-
mainWindow.webContents.send("reqResUpdate", reqResObj);
716-
}); // metadata from server
717-
call.on("metadata", (data) => {
718-
const metadata = data.internalRepr;
719-
720-
metadata.forEach((value, key) => {
721-
reqResObj.response.headers[key] = value[0];
722-
});
723-
mainWindow.webContents.send("reqResUpdate", reqResObj);
724-
});
725-
call.on("error", () => {
726-
console.log("server ended connection with error");
727-
});
728-
call.on("end", (data) => {
729-
//Close Final Server Connection for BIDIRECTIONAL Stream
730-
reqResObj.connection = "closed";
731-
// no need to push response to reqResObj, no event expected from on 'end'
732-
mainWindow.webContents.send("reqResUpdate", reqResObj);
733-
});
734-
735-
for (let i = 0; i < queryArr.length; i++) {
736-
const time = {};
737-
const query = queryArr[i];
738-
//Open Connection for BIDIRECTIONAL Stream
739-
if (i === 0) {
740-
reqResObj.connection = "open";
741-
} else {
742-
reqResObj.connection = "pending";
743-
}
744-
time.timeSent = Date.now();
745-
reqResObj.timeSent = time.timeSent;
746-
reqResObj.response.times.push(time);
747-
call.write(query);
748-
}
749-
call.end();
750-
}
751-
mainWindow.webContents.send("reqResUpdate", reqResObj);
752-
});
753-
754550
// ====================== OLDER STUFF =======================
755551

756552
// ipcMain listener that

main_grpc.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)