@@ -262,43 +262,59 @@ async fn initialize_background_spend_dag_collection(
262
262
}
263
263
264
264
async fn start_server ( dag : SpendDagDb ) -> Result < ( ) > {
265
- let server = Server :: http ( "0.0.0.0:4242" ) . expect ( "Failed to start server" ) ;
266
- info ! ( "Starting dag-query server listening on port 4242..." ) ;
267
- for request in server. incoming_requests ( ) {
268
- info ! (
269
- "Received request! method: {:?}, url: {:?}" ,
270
- request. method( ) ,
271
- request. url( ) ,
272
- ) ;
273
-
274
- // Dispatch the request to the appropriate handler
275
- let response = match request. url ( ) {
276
- "/" => routes:: spend_dag_svg ( & dag) ,
277
- s if s. starts_with ( "/spend/" ) => routes:: spend ( & dag, & request) . await ,
278
- s if s. starts_with ( "/add-participant/" ) => {
279
- routes:: add_participant ( & dag, & request) . await
280
- }
281
- "/beta-rewards" => routes:: beta_rewards ( & dag) . await ,
282
- _ => routes:: not_found ( ) ,
283
- } ;
265
+ loop {
266
+ let server = Server :: http ( "0.0.0.0:4242" ) . expect ( "Failed to start server" ) ;
267
+ info ! ( "Starting dag-query server listening on port 4242..." ) ;
268
+ for request in server. incoming_requests ( ) {
269
+ info ! (
270
+ "Received request! method: {:?}, url: {:?}" ,
271
+ request. method( ) ,
272
+ request. url( ) ,
273
+ ) ;
284
274
285
- // Send a response to the client
286
- match response {
287
- Ok ( res) => {
288
- let _ = request
289
- . respond ( res)
290
- . map_err ( |err| eprintln ! ( "Failed to send response: {err}" ) ) ;
291
- }
292
- Err ( e) => {
293
- eprint ! ( "Sending error to client: {e}" ) ;
294
- let res = Response :: from_string ( format ! ( "Error: {e}" ) ) . with_status_code ( 500 ) ;
295
- let _ = request
296
- . respond ( res)
297
- . map_err ( |err| eprintln ! ( "Failed to send error response: {err}" ) ) ;
275
+ // Dispatch the request to the appropriate handler
276
+ let response = match request. url ( ) {
277
+ "/" => routes:: spend_dag_svg ( & dag) ,
278
+ s if s. starts_with ( "/spend/" ) => routes:: spend ( & dag, & request) . await ,
279
+ s if s. starts_with ( "/add-participant/" ) => {
280
+ routes:: add_participant ( & dag, & request) . await
281
+ }
282
+ "/beta-rewards" => routes:: beta_rewards ( & dag) . await ,
283
+ "/restart" => {
284
+ info ! ( "Restart auditor web service as to client's request" ) ;
285
+ break ;
286
+ }
287
+ "/terminate" => {
288
+ info ! ( "Terminate auditor web service as to client's request" ) ;
289
+ return Ok ( ( ) ) ;
290
+ }
291
+ _ => routes:: not_found ( ) ,
292
+ } ;
293
+
294
+ // Send a response to the client
295
+ match response {
296
+ Ok ( res) => {
297
+ info ! ( "Sending response to client" ) ;
298
+ let _ = request. respond ( res) . map_err ( |err| {
299
+ warn ! ( "Failed to send response: {err}" ) ;
300
+ eprintln ! ( "Failed to send response: {err}" )
301
+ } ) ;
302
+ }
303
+ Err ( e) => {
304
+ eprint ! ( "Sending error to client: {e}" ) ;
305
+ let res = Response :: from_string ( format ! ( "Error: {e}" ) ) . with_status_code ( 500 ) ;
306
+ let _ = request. respond ( res) . map_err ( |err| {
307
+ warn ! ( "Failed to send error response: {err}" ) ;
308
+ eprintln ! ( "Failed to send error response: {err}" )
309
+ } ) ;
310
+ }
298
311
}
299
312
}
313
+ // Reaching this point indicates a restarting of auditor web service
314
+ // Sleep for a while to allowing OS cleanup and settlement.
315
+ drop ( server) ;
316
+ std:: thread:: sleep ( std:: time:: Duration :: from_secs ( 10 ) ) ;
300
317
}
301
- Ok ( ( ) )
302
318
}
303
319
304
320
// get the data dir path for auditor
0 commit comments