@@ -51,8 +51,9 @@ const protoParserFunc = require("./src/client/protoParser.js");
5151require ( "./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
0 commit comments