Revert "context: inherits context cancelation and deadline from http.Request context for Go>=1.7 (#1690)" (#1736)
This reverts commit f67d7a90c4
.
This commit is contained in:
parent
d8fb18c33b
commit
29a145c85d
28
context.go
28
context.go
@ -942,6 +942,34 @@ func (c *Context) SetAccepted(formats ...string) {
|
|||||||
c.Accepted = formats
|
c.Accepted = formats
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************/
|
||||||
|
/***** GOLANG.ORG/X/NET/CONTEXT *****/
|
||||||
|
/************************************/
|
||||||
|
|
||||||
|
// Deadline returns the time when work done on behalf of this context
|
||||||
|
// should be canceled. Deadline returns ok==false when no deadline is
|
||||||
|
// set. Successive calls to Deadline return the same results.
|
||||||
|
func (c *Context) Deadline() (deadline time.Time, ok bool) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Done returns a channel that's closed when work done on behalf of this
|
||||||
|
// context should be canceled. Done may return nil if this context can
|
||||||
|
// never be canceled. Successive calls to Done return the same value.
|
||||||
|
func (c *Context) Done() <-chan struct{} {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Err returns a non-nil error value after Done is closed,
|
||||||
|
// successive calls to Err return the same error.
|
||||||
|
// If Done is not yet closed, Err returns nil.
|
||||||
|
// If Done is closed, Err returns a non-nil error explaining why:
|
||||||
|
// Canceled if the context was canceled
|
||||||
|
// or DeadlineExceeded if the context's deadline passed.
|
||||||
|
func (c *Context) Err() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Value returns the value associated with this context for key, or nil
|
// Value returns the value associated with this context for key, or nil
|
||||||
// if no value is associated with key. Successive calls to Value with
|
// if no value is associated with key. Successive calls to Value with
|
||||||
// the same key returns the same result.
|
// the same key returns the same result.
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
package gin
|
package gin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin/render"
|
"github.com/gin-gonic/gin/render"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,31 +15,3 @@ import (
|
|||||||
func (c *Context) PureJSON(code int, obj interface{}) {
|
func (c *Context) PureJSON(code int, obj interface{}) {
|
||||||
c.Render(code, render.PureJSON{Data: obj})
|
c.Render(code, render.PureJSON{Data: obj})
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************/
|
|
||||||
/***** GOLANG.ORG/X/NET/CONTEXT *****/
|
|
||||||
/************************************/
|
|
||||||
|
|
||||||
// Deadline returns the time when work done on behalf of this context
|
|
||||||
// should be canceled. Deadline returns ok==false when no deadline is
|
|
||||||
// set. Successive calls to Deadline return the same results.
|
|
||||||
func (c *Context) Deadline() (time.Time, bool) {
|
|
||||||
return c.Request.Context().Deadline()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Done returns a channel that's closed when work done on behalf of this
|
|
||||||
// context should be canceled. Done may return nil if this context can
|
|
||||||
// never be canceled. Successive calls to Done return the same value.
|
|
||||||
func (c *Context) Done() <-chan struct{} {
|
|
||||||
return c.Request.Context().Done()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Err returns a non-nil error value after Done is closed,
|
|
||||||
// successive calls to Err return the same error.
|
|
||||||
// If Done is not yet closed, Err returns nil.
|
|
||||||
// If Done is closed, Err returns a non-nil error explaining why:
|
|
||||||
// Canceled if the context was canceled
|
|
||||||
// or DeadlineExceeded if the context's deadline passed.
|
|
||||||
func (c *Context) Err() error {
|
|
||||||
return c.Request.Context().Err()
|
|
||||||
}
|
|
||||||
|
@ -7,12 +7,9 @@
|
|||||||
package gin
|
package gin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"context"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
@ -28,49 +25,3 @@ func TestContextRenderPureJSON(t *testing.T) {
|
|||||||
assert.Equal(t, "{\"foo\":\"bar\",\"html\":\"<b>\"}\n", w.Body.String())
|
assert.Equal(t, "{\"foo\":\"bar\",\"html\":\"<b>\"}\n", w.Body.String())
|
||||||
assert.Equal(t, "application/json; charset=utf-8", w.Header().Get("Content-Type"))
|
assert.Equal(t, "application/json; charset=utf-8", w.Header().Get("Content-Type"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestContextHTTPContext(t *testing.T) {
|
|
||||||
c, _ := CreateTestContext(httptest.NewRecorder())
|
|
||||||
req, _ := http.NewRequest("POST", "/", bytes.NewBufferString("{\"foo\":\"bar\", \"bar\":\"foo\"}"))
|
|
||||||
ctx, cancelFunc := context.WithCancel(context.Background())
|
|
||||||
defer cancelFunc()
|
|
||||||
c.Request = req.WithContext(ctx)
|
|
||||||
|
|
||||||
assert.NoError(t, c.Err())
|
|
||||||
assert.NotNil(t, c.Done())
|
|
||||||
select {
|
|
||||||
case <-c.Done():
|
|
||||||
assert.Fail(t, "context should not be canceled")
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
|
|
||||||
ti, ok := c.Deadline()
|
|
||||||
assert.Equal(t, ti, time.Time{})
|
|
||||||
assert.False(t, ok)
|
|
||||||
assert.Equal(t, c.Value(0), c.Request)
|
|
||||||
|
|
||||||
cancelFunc()
|
|
||||||
assert.NotNil(t, c.Done())
|
|
||||||
select {
|
|
||||||
case <-c.Done():
|
|
||||||
default:
|
|
||||||
assert.Fail(t, "context should be canceled")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestContextHTTPContextWithDeadline(t *testing.T) {
|
|
||||||
c, _ := CreateTestContext(httptest.NewRecorder())
|
|
||||||
req, _ := http.NewRequest("POST", "/", bytes.NewBufferString("{\"foo\":\"bar\", \"bar\":\"foo\"}"))
|
|
||||||
location, _ := time.LoadLocation("Europe/Paris")
|
|
||||||
assert.NotNil(t, location)
|
|
||||||
date := time.Date(2031, 12, 27, 16, 00, 00, 00, location)
|
|
||||||
ctx, cancelFunc := context.WithDeadline(context.Background(), date)
|
|
||||||
defer cancelFunc()
|
|
||||||
c.Request = req.WithContext(ctx)
|
|
||||||
|
|
||||||
assert.NoError(t, c.Err())
|
|
||||||
|
|
||||||
ti, ok := c.Deadline()
|
|
||||||
assert.Equal(t, ti, date)
|
|
||||||
assert.True(t, ok)
|
|
||||||
}
|
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
// Copyright 2018 Gin Core Team. All rights reserved.
|
|
||||||
// Use of this source code is governed by a MIT style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !go1.7
|
|
||||||
|
|
||||||
package gin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
/************************************/
|
|
||||||
/***** GOLANG.ORG/X/NET/CONTEXT *****/
|
|
||||||
/************************************/
|
|
||||||
|
|
||||||
// Deadline returns the time when work done on behalf of this context
|
|
||||||
// should be canceled. Deadline returns ok==false when no deadline is
|
|
||||||
// set. Successive calls to Deadline return the same results.
|
|
||||||
func (c *Context) Deadline() (deadline time.Time, ok bool) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Done returns a channel that's closed when work done on behalf of this
|
|
||||||
// context should be canceled. Done may return nil if this context can
|
|
||||||
// never be canceled. Successive calls to Done return the same value.
|
|
||||||
func (c *Context) Done() <-chan struct{} {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Err returns a non-nil error value after Done is closed,
|
|
||||||
// successive calls to Err return the same error.
|
|
||||||
// If Done is not yet closed, Err returns nil.
|
|
||||||
// If Done is closed, Err returns a non-nil error explaining why:
|
|
||||||
// Canceled if the context was canceled
|
|
||||||
// or DeadlineExceeded if the context's deadline passed.
|
|
||||||
func (c *Context) Err() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user