11// import { Router } from "express";
2- import {
3- ipcRenderer
4- } from "electron" ;
5- import {
6- remote
7- } from 'electron' ;
8- import * as store from '../store' ;
9- import * as actions from '../actions/actions' ;
10- import {
11- Metadata
12- } from "@grpc/grpc-js" ;
13-
14-
15-
16- const async = require ( 'async' ) ;
17- const fs = require ( 'fs' ) ;
18- const parseArgs = require ( 'minimist' ) ;
19- const path = require ( 'path' ) ;
20- const grpc = require ( '@grpc/grpc-js' ) ;
21- const protoLoader = require ( '@grpc/proto-loader' ) ;
2+ import { ipcRenderer } from "electron" ;
3+ import { remote } from "electron" ;
4+ import * as store from "../store" ;
5+ import * as actions from "../actions/actions" ;
6+ import { Metadata } from "@grpc/grpc-js" ;
7+
8+ const async = require ( "async" ) ;
9+ const fs = require ( "fs" ) ;
10+ const parseArgs = require ( "minimist" ) ;
11+ const path = require ( "path" ) ;
12+ const grpc = require ( "@grpc/grpc-js" ) ;
13+ const protoLoader = require ( "@grpc/proto-loader" ) ;
2214
2315let grpcController = { } ;
2416
25-
2617grpcController . openGrpcConnection = ( reqResObj , connectionArray ) => {
2718 //check for connection, if not open one
2819
29- reqResObj . connectionType = ' GRPC' ;
20+ reqResObj . connectionType = " GRPC" ;
3021 reqResObj . response . times = [ ] ;
3122
3223 // build out variables from reqresObj properties
@@ -77,198 +68,188 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
7768 for ( let messageIdx in foundService . messages ) {
7869 let message = foundService . messages [ messageIdx ] ;
7970
80- if ( foundRpc . req === message . name || foundRpc . req === 'stream ' + message . name ) {
71+ if (
72+ foundRpc . req === message . name ||
73+ foundRpc . req === "stream " + message . name
74+ ) {
8175 messageDefObj = message . def ;
8276 keysArray = [ ] ;
8377 Object . keys ( messageDefObj ) . forEach ( ( key ) => {
84- keysArray . push ( key )
85- } )
78+ keysArray . push ( key ) ;
79+ } ) ;
8680 }
8781 }
8882 // build gRPC package definition with protoLoader module
8983 let PROTO_PATH = reqResObj . protoPath ;
90- const packageDefinition = protoLoader . loadSync (
91- PROTO_PATH , {
92- keepCase : true ,
93- longs : String ,
94- enums : String ,
95- defaults : true ,
96- oneofs : true
97-
98- }
99- )
84+ const packageDefinition = protoLoader . loadSync ( PROTO_PATH , {
85+ keepCase : true ,
86+ longs : String ,
87+ enums : String ,
88+ defaults : true ,
89+ oneofs : true ,
90+ } ) ;
10091 // create client credentials
10192 let serverName = grpc . loadPackageDefinition ( packageDefinition ) [ packageName ] ;
102- let client = new serverName [ service ] ( `${ url } ` , grpc . credentials . createInsecure ( ) ) ;
93+ let client = new serverName [ service ] (
94+ `${ url } ` ,
95+ grpc . credentials . createInsecure ( )
96+ ) ;
10397
10498 // create client requested metadata key and value pair for each type of streaming
105- let meta = new grpc . Metadata ( )
99+ let meta = new grpc . Metadata ( ) ;
106100 let metaArr = reqResObj . request . headers ;
107101 for ( let i = 0 ; i < metaArr . length ; i += 1 ) {
108102 let currentHeader = metaArr [ i ] ;
109- meta . add ( currentHeader . key , currentHeader . value )
103+ meta . add ( currentHeader . key , currentHeader . value ) ;
110104 }
111105
112- if ( rpcType === ' UNARY' ) {
113- let query = reqResObj . queryArr [ 0 ]
106+ if ( rpcType === " UNARY" ) {
107+ let query = reqResObj . queryArr [ 0 ] ;
114108 let time = { } ;
115109
116110 // Open Connection and set time sent for Unary
117- reqResObj . connection = ' open' ;
111+ reqResObj . connection = " open" ;
118112
119113 time . timeSent = Date . now ( ) ;
120114 // make Unary call
121115 client [ rpc ] ( query , meta , ( err , data ) => {
116+ if ( err ) {
117+ console . log ( "unary error" , err ) ;
118+ }
119+ // Close Connection and set time received for Unary
120+ reqResObj . timeSent = time . timeSent ;
122121
123- if ( err ) {
124- console . log ( 'unary error' , err ) ;
125- }
126- // Close Connection and set time received for Unary
127- reqResObj . timeSent = time . timeSent ;
128-
129- time . timeReceived = Date . now ( ) ;
130- reqResObj . timeReceived = time . timeReceived
131-
132- reqResObj . connection = 'closed' ;
133- reqResObj . response . events . push ( data )
134- reqResObj . response . times . push ( time )
135- store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
136-
122+ time . timeReceived = Date . now ( ) ;
123+ reqResObj . timeReceived = time . timeReceived ;
137124
138- } ) // metadata from server
139- . on ( 'metadata' , ( metadata ) => {
125+ reqResObj . connection = "closed" ;
126+ reqResObj . response . events . push ( data ) ;
127+ reqResObj . response . times . push ( time ) ;
128+ store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
129+ } ) // metadata from server
130+ . on ( "metadata" , ( metadata ) => {
140131 // if metadata is sent back from the server, analyze and handle
141- let keys = Object . keys ( metadata . _internal_repr )
132+ let keys = Object . keys ( metadata . _internal_repr ) ;
142133 for ( let i = 0 ; i < keys . length ; i += 1 ) {
143134 let key = keys [ i ] ;
144135 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
145136 }
146- store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
147- } )
148-
149- } else if ( rpcType === 'CLIENT STREAM' ) {
137+ store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
138+ } ) ;
139+ } else if ( rpcType === "CLIENT STREAM" ) {
150140 // create call and open client stream connection
151- reqResObj . connection = ' open' ;
141+ reqResObj . connection = " open" ;
152142 let timeSent = Date . now ( ) ;
153143 reqResObj . timeSent = timeSent ;
154144 let call = client [ rpc ] ( meta , function ( error , response ) {
155145 if ( error ) {
156- console . log ( ' error in client stream' , error ) ;
146+ console . log ( " error in client stream" , error ) ;
157147 return ;
158148 } else {
159149 //Close Connection for client Stream
160- reqResObj . connection = ' closed' ;
150+ reqResObj . connection = " closed" ;
161151 let curTime = Date . now ( ) ;
162- reqResObj . response . times . forEach ( time => {
152+ reqResObj . response . times . forEach ( ( time ) => {
163153 time . timeReceived = curTime ;
164154 reqResObj . timeReceived = time . timeReceived ;
165-
166- } )
167- reqResObj . response . events . push ( response )
155+ } ) ;
156+ reqResObj . response . events . push ( response ) ;
168157 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
169-
170158 }
171- } ) . on ( ' metadata' , ( metadata ) => {
159+ } ) . on ( " metadata" , ( metadata ) => {
172160 // if metadata is sent back from the server, analyze and handle
173- let keys = Object . keys ( metadata . _internal_repr )
161+ let keys = Object . keys ( metadata . _internal_repr ) ;
174162 for ( let i = 0 ; i < keys . length ; i += 1 ) {
175163 let key = keys [ i ] ;
176164 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
177165 }
178- store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
166+ store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
179167 } ) ;
180168
181-
182169 for ( let i = 0 ; i < queryArr . length ; i ++ ) {
183170 let query = queryArr [ i ] ;
184171 // Open Connection for client Stream
185172 // this needs additional work to provide correct sent time for each
186173 // request without overwrite
187174 let time = { } ;
188175
189- reqResObj . connection = 'pending' ;
190-
176+ reqResObj . connection = "pending" ;
191177
192178 time . timeSent = timeSent ;
193- reqResObj . response . times . push ( time )
194-
179+ reqResObj . response . times . push ( time ) ;
195180
196181 //reqResObj.connectionType = 'plain';
197182 // reqResObj.timeSent = Date.now();
198183
199184 call . write ( query ) ;
200185 }
201186 call . end ( ) ;
202- } else if ( rpcType === ' SERVER STREAM' ) {
187+ } else if ( rpcType === " SERVER STREAM" ) {
203188 let timesArr = [ ] ;
204189 // Open Connection for SERVER Stream
205- reqResObj . connection = ' open' ;
190+ reqResObj . connection = " open" ;
206191 reqResObj . timeSent = Date . now ( ) ;
207192 const call = client [ rpc ] ( reqResObj . queryArr [ 0 ] , meta ) ;
208- call . on ( "data" , resp => {
193+ call . on ( "data" , ( resp ) => {
209194 let time = { } ;
210195 time . timeReceived = Date . now ( ) ;
211196 time . timeSent = reqResObj . timeSent ;
212197 // add server response to reqResObj and dispatch to state/store
213- reqResObj . response . events . push ( resp )
214- reqResObj . response . times . push ( time )
198+ reqResObj . response . events . push ( resp ) ;
199+ reqResObj . response . times . push ( time ) ;
215200 reqResObj . timeReceived = time . timeReceived ; // overwritten on each call to get the final value
216201
217202 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
218- } )
219- call . on ( ' error' , ( ) => {
203+ } ) ;
204+ call . on ( " error" , ( ) => {
220205 // for fatal error from server
221- console . log ( ' server side stream erring out' )
222- } )
223- call . on ( ' end' , ( ) => {
206+ console . log ( " server side stream erring out" ) ;
207+ } ) ;
208+ call . on ( " end" , ( ) => {
224209 // Close Connection for SERVER Stream
225- reqResObj . connection = ' closed' ;
210+ reqResObj . connection = " closed" ;
226211 // no need to push response to reqResObj, no event expected from on 'end'
227212 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
228- } )
229- call . on ( ' metadata' , ( metadata ) => {
230- let keys = Object . keys ( metadata . _internal_repr )
213+ } ) ;
214+ call . on ( " metadata" , ( metadata ) => {
215+ let keys = Object . keys ( metadata . _internal_repr ) ;
231216 for ( let i = 0 ; i < keys . length ; i += 1 ) {
232217 let key = keys [ i ] ;
233218 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
234-
235219 }
236- store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
237- } )
220+ store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
221+ } ) ;
238222 }
239223 //else BIDIRECTIONAL
240224 else {
241225 // Open duplex stream
242226 let counter = 0 ;
243227 let call = client [ rpc ] ( meta ) ;
244- call . on ( ' data' , ( response ) => {
228+ call . on ( " data" , ( response ) => {
245229 let curTimeObj = reqResObj . response . times [ counter ] ;
246230 counter ++ ;
247231 //Close Individual Server Response for BIDIRECTIONAL Stream
248- reqResObj . connection = ' pending' ;
232+ reqResObj . connection = " pending" ;
249233 curTimeObj . timeReceived = Date . now ( ) ;
250234 reqResObj . timeReceived = curTimeObj . timeReceived ;
251235 reqResObj . response . events . push ( response ) ;
252236 reqResObj . response . times . push ( curTimeObj ) ;
253237 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
254-
255-
256- } ) // metadata from server
257- call . on ( 'metadata' , ( metadata ) => {
258- let keys = Object . keys ( metadata . _internal_repr )
238+ } ) ; // metadata from server
239+ call . on ( "metadata" , ( metadata ) => {
240+ let keys = Object . keys ( metadata . _internal_repr ) ;
259241 for ( let i = 0 ; i < keys . length ; i += 1 ) {
260242 let key = keys [ i ] ;
261243 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
262-
263244 }
264- store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
245+ store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
246+ } ) ;
247+ call . on ( "error" , ( ) => {
248+ console . log ( "server ended connection with error" ) ;
265249 } ) ;
266- call . on ( 'error' , ( ) => {
267- console . log ( 'server ended connection with error' )
268- } )
269- call . on ( 'end' , ( data ) => {
250+ call . on ( "end" , ( data ) => {
270251 //Close Final Server Connection for BIDIRECTIONAL Stream
271- reqResObj . connection = ' closed'
252+ reqResObj . connection = " closed" ;
272253 // no need to push response to reqResObj, no event expected from on 'end'
273254 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
274255 } ) ;
@@ -278,13 +259,13 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
278259 let query = queryArr [ i ] ;
279260 //Open Connection for BIDIRECTIONAL Stream
280261 if ( i === 0 ) {
281- reqResObj . connection = ' open' ;
262+ reqResObj . connection = " open" ;
282263 } else {
283- reqResObj . connection = ' pending' ;
264+ reqResObj . connection = " pending" ;
284265 }
285266 time . timeSent = Date . now ( ) ;
286267 reqResObj . timeSent = time . timeSent ;
287- reqResObj . response . times . push ( time )
268+ reqResObj . response . times . push ( time ) ;
288269 call . write ( query ) ;
289270 }
290271 call . end ( ) ;
0 commit comments