feat: if report http server close err as run err
This commit is contained in:
		
							
								
								
									
										7
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								app.go
									
									
									
									
									
								
							| @@ -48,7 +48,12 @@ func (a *App) run(ln net.Listener) error { | |||||||
| 		fmt.Println(banner + "nf serve at: " + ln.Addr().String() + "\n") | 		fmt.Println(banner + "nf serve at: " + ln.Addr().String() + "\n") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return a.server.Serve(ln) | 	err := a.server.Serve(ln) | ||||||
|  | 	if !errors.Is(err, http.ErrServerClosed) || a.config.ErrServeClose { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (a *App) Run(address string) error { | func (a *App) Run(address string) error { | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								nf.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								nf.go
									
									
									
									
									
								
							| @@ -8,10 +8,14 @@ type Map map[string]interface{} | |||||||
|  |  | ||||||
| type Config struct { | type Config struct { | ||||||
| 	// Default: 4 * 1024 * 1024 | 	// Default: 4 * 1024 * 1024 | ||||||
| 	BodyLimit      int64 `json:"-"` | 	BodyLimit int64 `json:"-"` | ||||||
| 	DisableBanner  bool  `json:"-"` |  | ||||||
| 	DisableLogger  bool  `json:"-"` | 	// if report http.ErrServerClosed as run err | ||||||
| 	DisableRecover bool  `json:"-"` | 	ErrServeClose bool `json:"-"` | ||||||
|  |  | ||||||
|  | 	DisableBanner  bool `json:"-"` | ||||||
|  | 	DisableLogger  bool `json:"-"` | ||||||
|  | 	DisableRecover bool `json:"-"` | ||||||
| } | } | ||||||
|  |  | ||||||
| var ( | var ( | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ func handlePost(c *nf.Ctx) error { | |||||||
|     var ( |     var ( | ||||||
|         err error |         err error | ||||||
|         req = Req{} |         req = Req{} | ||||||
| 		reqMap = make(map[string]any) |         reqMap = make(map[string]any) | ||||||
|     ) |     ) | ||||||
| 	 | 	 | ||||||
|     if err = c.BodyParser(&req); err != nil { |     if err = c.BodyParser(&req); err != nil { | ||||||
|   | |||||||
							
								
								
									
										49
									
								
								xtest/quit/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								xtest/quit/main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | package main | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"context" | ||||||
|  | 	"github.com/loveuer/nf" | ||||||
|  | 	"log" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func main() { | ||||||
|  | 	app := nf.New() | ||||||
|  | 	quit := make(chan bool) | ||||||
|  |  | ||||||
|  | 	app.Get("/name", handleGet) | ||||||
|  |  | ||||||
|  | 	go func() { | ||||||
|  | 		err := app.Run(":7383") | ||||||
|  | 		log.Print("run with err=", err) | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	go func() { | ||||||
|  | 		time.Sleep(5 * time.Second) | ||||||
|  | 		err := app.Shutdown(context.TODO()) | ||||||
|  | 		log.Print("quit with err=", err) | ||||||
|  | 		quit <- true | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	<-quit | ||||||
|  |  | ||||||
|  | 	log.Print("quited") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func handleGet(c *nf.Ctx) error { | ||||||
|  | 	type Req struct { | ||||||
|  | 		Name string   `query:"name"` | ||||||
|  | 		Addr []string `query:"addr"` | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var ( | ||||||
|  | 		err error | ||||||
|  | 		req = Req{} | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	if err = c.QueryParser(&req); err != nil { | ||||||
|  | 		return nf.NewNFError(400, err.Error()) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return c.JSON(nf.Map{"req_map": req}) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user