@@ -19,11 +19,9 @@ let grpcController = {};
1919
2020grpcController . openGrpcConnection = ( reqResObj , connectionArray ) => {
2121 //check for connection, if not open one
22- console . log ( reqResObj )
23- if ( false ) {
24- //use existing connection
25- }
26- else {
22+
23+ reqResObj . connectionType = 'GRPC' ;
24+ reqResObj . response . times = [ ] ;
2725
2826 // build out variables from reqresObj properties
2927 let service = reqResObj . service ;
@@ -72,13 +70,10 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
7270 let keysArray ;
7371 for ( let messageIdx in foundService . messages ) {
7472 let message = foundService . messages [ messageIdx ] ;
75- // console.log('message' , message)
7673
7774 if ( foundRpc . req === message . name || foundRpc . req === 'stream ' + message . name ) {
78- // console.log('found matching message name')
7975 messageDefObj = message . def ;
8076 keysArray = [ ] ;
81- // console.log('messagedef', message.def);
8277 Object . keys ( messageDefObj ) . forEach ( ( key ) => {
8378 keysArray . push ( key )
8479 } )
@@ -104,36 +99,39 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
10499 // create client requested metadata key and value pair for each type of streaming
105100 let meta = new grpc . Metadata ( )
106101 let metaArr = reqResObj . request . headers ;
107- // console.log("metaArr from grpcController line 100:", metaArr)
108102 for ( let i = 0 ; i < metaArr . length ; i += 1 ) {
109103 let currentHeader = metaArr [ i ] ;
110104 meta . add ( currentHeader . key , currentHeader . value )
111- // console.log("meta header key, value", meta)
112105 }
113106
114107 if ( rpcType === 'UNARY' ) {
115108 let query = reqResObj . queryArr [ 0 ]
109+ let time = { } ;
116110
117111 // Open Connection and set time sent for Unary
118112 reqResObj . connection = 'open' ;
119- reqResObj . timeSent = Date . now ( ) ;
113+
114+ time . timeSent = Date . now ( ) ;
120115 // make Unary call
121116 client [ rpc ] ( query , meta , ( err , data ) => {
122- // console.log("query from line 122 in grpcController", query)
117+
123118 if ( err ) {
124119 console . log ( 'unary error' , err ) ;
125120 }
126121 // Close Connection and set time received for Unary
127- reqResObj . timeReceived = Date . now ( ) ;
122+ reqResObj . timeSent = time . timeSent ;
123+
124+ time . timeReceived = Date . now ( ) ;
125+ reqResObj . timeReceived = time . timeReceived
126+
128127 reqResObj . connection = 'closed' ;
129- reqResObj . connectionType = 'plain' ;
130128 reqResObj . response . events . push ( data )
129+ reqResObj . response . times . push ( time )
131130 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
132131
133132
134133 } ) // metadata from server
135134 . on ( 'metadata' , ( metadata ) => {
136- // console.log("metadata from line 127", metadata)
137135 // if metadata is sent back from the server, analyze and handle
138136 let keys = Object . keys ( metadata . _internal_repr )
139137 for ( let i = 0 ; i < keys . length ; i += 1 ) {
@@ -147,8 +145,8 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
147145 else if ( rpcType === 'CLIENT STREAM' ) {
148146 // create call and open client stream connection
149147 reqResObj . connection = 'open' ;
150- reqResObj . connectionType = 'plain' ;
151- reqResObj . timeSent = Date . now ( ) ;
148+ let timeSent = Date . now ( ) ;
149+ reqResObj . timeSent = timeSent ;
152150 let call = client [ rpc ] ( meta , function ( error , response ) {
153151 if ( error ) {
154152 console . log ( 'error in client stream' , error ) ;
@@ -157,12 +155,16 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
157155 else {
158156 //Close Connection for client Stream
159157 reqResObj . connection = 'closed' ;
160- reqResObj . connectionType = 'plain' ;
161- reqResObj . timeReceived = Date . now ( ) ;
158+ let curTime = Date . now ( )
159+ reqResObj . response . times . forEach ( time => {
160+ time . timeReceived = curTime ;
161+ reqResObj . timeReceived = time . timeReceived ;
162+ reqResObj . response . events . push ( time )
163+
164+ } )
162165 reqResObj . response . events . push ( response )
163166 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
164167
165- // console.log('in client stream response', response);
166168 } } ) . on ( 'metadata' , ( metadata ) => {
167169 // if metadata is sent back from the server, analyze and handle
168170 let keys = Object . keys ( metadata . _internal_repr )
@@ -173,39 +175,50 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
173175 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
174176 } ) ;
175177
176- // debugging call methods
177- // console.log('call: ', call);
178178
179- for ( var i = 0 ; i < queryArr . length ; i ++ ) {
179+ for ( let i = 0 ; i < queryArr . length ; i ++ ) {
180180 let query = queryArr [ i ] ;
181181 // Open Connection for client Stream
182182 // this needs additional work to provide correct sent time for each
183183 // request without overwrite
184+ let time = { } ;
185+
184186 reqResObj . connection = 'pending' ;
185- reqResObj . connectionType = 'plain' ;
186- reqResObj . timeSent = Date . now ( ) ;
187+
188+
189+ time . timeSent = timeSent
190+ reqResObj . response . times . push ( time )
191+
192+
193+ //reqResObj.connectionType = 'plain';
194+ // reqResObj.timeSent = Date.now();
195+
187196 call . write ( query ) ;
188- // add console log for completed write?
189197 }
190198 call . end ( ) ;
191199 }
192200 else if ( rpcType === 'SERVER STREAM' ) {
193201 let timesArr = [ ] ;
194202 // Open Connection for SERVER Stream
195203 reqResObj . connection = 'open' ;
196- reqResObj . connectionType = 'plain' ;
197204 reqResObj . timeSent = Date . now ( ) ;
198- console . log ( 'rpc' , rpc , 'reqresquery' , reqResObj . queryArr [ 0 ] )
199205 const call = client [ rpc ] ( reqResObj . queryArr [ 0 ] , meta ) ;
200206 call . on ( "data" , resp => {
201- // console.log('server streaming message:', data);
207+ let time = { } ;
208+ time . timeReceived = Date . now ( ) ;
209+ time . timeSent = reqResObj . timeSent ;
202210 // add server response to reqResObj and dispatch to state/store
203211 reqResObj . response . events . push ( resp )
204- timesArr . push ( Date . now ( ) )
205- console . log ( 'new time pushed: ' , timesArr )
212+
213+ reqResObj . response . times . push ( time )
214+
215+
216+ // timesArr.push(Date.now())
217+ //console.log('new time pushed: ', timesArr)
206218 // console.log('data response server stream',resp)
207219 // console.log(reqResObj.response.events)
208220
221+
209222 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
210223 } )
211224 call . on ( 'error' , ( ) => {
@@ -215,19 +228,21 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
215228 call . on ( 'end' , ( ) => {
216229 // Close Connection for SERVER Stream
217230 reqResObj . connection = 'closed' ;
218- reqResObj . connectionType = 'plain' ;
219- reqResObj . timeReceived = Date . now ( ) ;
220- reqResObj . timesArr = timesArr
231+
232+ reqResObj . timeReceived = Date . now ( ) ;
233+
234+ // reqResObj.connectionType = 'plain';
235+ // reqResObj.timeReceived =Date.now();
236+ // reqResObj.timesArr = timesArr
237+
221238 // no need to push response to reqResObj, no event expected from on 'end'
222239 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
223- // console.log('server side stream completed')
224240 } )
225241 call . on ( 'metadata' , ( metadata ) => {
226242 let keys = Object . keys ( metadata . _internal_repr )
227243 for ( let i = 0 ; i < keys . length ; i += 1 ) {
228244 let key = keys [ i ] ;
229245 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
230- // console.log('reqred headers are now', reqResObj.response.headers)
231246
232247 }
233248 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
@@ -236,15 +251,17 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
236251 //else BIDIRECTIONAL
237252 else {
238253 // Open duplex stream
254+ let counter = 0 ;
239255 let call = client [ rpc ] ( meta ) ;
240256 call . on ( 'data' , ( response ) => {
241- // console.log('Got server response "' + response );
257+ let curTimeObj = reqResObj . response . times [ counter ] ;
258+ counter ++ ;
242259 //Close Individual Server Response for BIDIRECTIONAL Stream
243260 reqResObj . connection = 'pending' ;
244- reqResObj . connectionType = 'plain' ;
245- reqResObj . timeReceived = Date . now ( ) ;
246- reqResObj . response . events . push ( response )
247- // console.log( reqResObj.response.events)
261+ curTimeObj . timeReceived = Date . now ( ) ;
262+ reqResObj . timeReceived = curTimeObj . timeReceived ;
263+ reqResObj . response . events . push ( response ) ;
264+ reqResObj . response . times . push ( curTimeObj ) ;
248265 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
249266
250267
@@ -255,8 +272,6 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
255272 let key = keys [ i ] ;
256273 reqResObj . response . headers [ key ] = metadata . _internal_repr [ key ] [ 0 ] ;
257274
258- // console.log('reqred headers are now', reqResObj.response.headers)
259-
260275 }
261276 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) )
262277 } ) ;
@@ -266,32 +281,29 @@ grpcController.openGrpcConnection = (reqResObj, connectionArray) => {
266281 call . on ( 'end' , ( data ) => {
267282 //Close Final Server Connection for BIDIRECTIONAL Stream
268283 reqResObj . connection = 'closed' ;
269- reqResObj . connectionType = 'plain' ;
270284 reqResObj . timeReceived = Date . now ( ) ;
271285 // no need to push response to reqResObj, no event expected from on 'end'
272286 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
273- // console.log('server response ended', data)
274287 } ) ;
275288
276289 for ( var i = 0 ; i < queryArr . length ; i ++ ) {
290+ let time = { } ;
277291 let query = queryArr [ i ] ;
278292 //Open Connection for BIDIRECTIONAL Stream
279293 if ( i === 0 ) {
280294 reqResObj . connection = 'open' ;
281295 } else {
282296 reqResObj . connection = 'pending' ;
283297 }
284- reqResObj . connectionType = 'plain' ;
285- reqResObj . timeSent = Date . now ( ) ;
298+ time . timeSent = Date . now ( ) ;
299+ reqResObj . timeSent = time . timeSent ;
300+ reqResObj . response . times . push ( time )
286301 call . write ( query ) ;
287302 }
288303 call . end ( ) ;
289304 }
290305 reqResObj . connection = 'closed' ;
291- reqResObj . connectionType = 'plain' ;
292306 reqResObj . timeReceived = Date . now ( ) ;
293307 store . default . dispatch ( actions . reqResUpdate ( reqResObj ) ) ;
294-
295- }
296308} ;
297309export default grpcController ;
0 commit comments