func (dg *dockerGoClient) ListContainers(ctx context.Context, all bool, timeout time.Duration) ListContainersResponse {
	ctx, cancel := context.WithTimeout(ctx, timeout)
	defer cancel()

	// Buffered channel so in the case of timeout it takes one write, never gets
	// read, and can still be GC'd
	response := make(chan ListContainersResponse, 1)
	go func() { response <- dg.listContainers(ctx, all) }()
	select {
	case resp := <-response:
		return resp
	case <-ctx.Done():
		// Context has either expired or canceled. If it has timed out,
		// send back the DockerTimeoutError
		err := ctx.Err()
		if err == context.DeadlineExceeded {
			return ListContainersResponse{Error: &DockerTimeoutError{timeout, "listing"}}
		}
		return ListContainersResponse{Error: &CannotListContainersError{err}}
	}
}
func (dg *dockerGoClient) ListContainers(ctx context.Context, all bool, timeout time.Duration) ListContainersResponse {
	ctx, cancel := context.WithTimeout(ctx, timeout)
	defer cancel()

	
	
	response := make(chan ListContainersResponse, 1)
	go func() { response <- dg.listContainers(ctx, all) }()
	select {
	case resp := <-response:
		return resp
	case <-ctx.Done():
		
		
		err := ctx.Err()
		if err == context.DeadlineExceeded {
			return ListContainersResponse{Error: &DockerTimeoutError{timeout, "listing"}}
		}
		return ListContainersResponse{Error: &CannotListContainersError{err}}
	}
}
func ( dg * dockerGoClient ) ListContainers ( ctx context . Context , all bool , timeout time . Duration ) ListContainersResponse { ctx , cancel := context . WithTimeout ( ctx , timeout ) defer cancel ( ) // Buffered channel so in the case of timeout it takes one write, never gets // read, and can still be GC'd response := make ( chan ListContainersResponse , 1 ) go func ( ) { response <- dg . listContainers ( ctx , all ) } ( ) select { case resp := <- response : return resp case <- ctx . Done ( ) : // Context has either expired or canceled. If it has timed out, // send back the DockerTimeoutError err := ctx . Err ( ) if err == context . DeadlineExceeded { return ListContainersResponse { Error : & DockerTimeoutError { timeout , " " } } } return ListContainersResponse { Error : & CannotListContainersError { err } } } }
// ListContainers returns a slice of container IDs.
ListContainers returns a slice of container IDs .