Merge pull request #29 from containerd/ctxdone
Add client side context.Done support
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
				
			|||||||
language: go
 | 
					language: go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
go:
 | 
					go:
 | 
				
			||||||
  - 1.9.x
 | 
					  - "1.10.x"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
script: go test -race -v ./...
 | 
					script: go test -race -v ./...
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -110,12 +110,16 @@ func (c *Client) dispatch(ctx context.Context, req *Request, resp *Response) err
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	select {
 | 
						select {
 | 
				
			||||||
 | 
						case <-ctx.Done():
 | 
				
			||||||
 | 
							return ctx.Err()
 | 
				
			||||||
	case c.calls <- call:
 | 
						case c.calls <- call:
 | 
				
			||||||
	case <-c.done:
 | 
						case <-c.done:
 | 
				
			||||||
		return c.err
 | 
							return c.err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	select {
 | 
						select {
 | 
				
			||||||
 | 
						case <-ctx.Done():
 | 
				
			||||||
 | 
							return ctx.Err()
 | 
				
			||||||
	case err := <-errs:
 | 
						case err := <-errs:
 | 
				
			||||||
		return filterCloseErr(err)
 | 
							return filterCloseErr(err)
 | 
				
			||||||
	case <-c.done:
 | 
						case <-c.done:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -127,13 +127,13 @@ func (s *Server) Serve(ctx context.Context, l net.Listener) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (s *Server) Shutdown(ctx context.Context) error {
 | 
					func (s *Server) Shutdown(ctx context.Context) error {
 | 
				
			||||||
	s.mu.Lock()
 | 
						s.mu.Lock()
 | 
				
			||||||
	lnerr := s.closeListeners()
 | 
					 | 
				
			||||||
	select {
 | 
						select {
 | 
				
			||||||
	case <-s.done:
 | 
						case <-s.done:
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		// protected by mutex
 | 
							// protected by mutex
 | 
				
			||||||
		close(s.done)
 | 
							close(s.done)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						lnerr := s.closeListeners()
 | 
				
			||||||
	s.mu.Unlock()
 | 
						s.mu.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ticker := time.NewTicker(200 * time.Millisecond)
 | 
						ticker := time.NewTicker(200 * time.Millisecond)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user