Skip to content

Commit ef6d610

Browse files
committed
optimization 👌
1 parent 2132f35 commit ef6d610

File tree

1 file changed

+16
-33
lines changed

1 file changed

+16
-33
lines changed

cookie.go

+16-33
Original file line numberDiff line numberDiff line change
@@ -42,37 +42,27 @@ func NewCookieStore(opt ...Option) session.ManagerStore {
4242
return &managerStore{
4343
opts: opts,
4444
cookie: cookie,
45-
pool: sync.Pool{
46-
New: func() interface{} {
47-
return newStore(opts, cookie)
48-
},
49-
},
5045
}
5146
}
5247

5348
type managerStore struct {
5449
opts options
5550
cookie *securecookie.SecureCookie
56-
pool sync.Pool
5751
}
5852

5953
func (s *managerStore) Create(ctx context.Context, sid string, expired int64) (session.Store, error) {
60-
store := s.pool.Get().(*store)
61-
store.reset(ctx, sid, expired, nil)
62-
return store, nil
54+
return newStore(ctx, s, sid, expired, nil), nil
6355
}
6456

6557
func (s *managerStore) Update(ctx context.Context, sid string, expired int64) (session.Store, error) {
66-
store := s.pool.Get().(*store)
6758
req, ok := session.FromReqContext(ctx)
6859
if !ok {
6960
return nil, nil
7061
}
7162

7263
cookie, err := req.Cookie(s.opts.cookieName)
7364
if err != nil {
74-
store.reset(ctx, sid, expired, nil)
75-
return store, nil
65+
return newStore(ctx, s, sid, expired, nil), nil
7666
}
7767

7868
res, ok := session.FromResContext(ctx)
@@ -88,9 +78,8 @@ func (s *managerStore) Update(ctx context.Context, sid string, expired int64) (s
8878
if err != nil {
8979
return nil, err
9080
}
91-
store.reset(ctx, sid, expired, values)
9281

93-
return store, nil
82+
return newStore(ctx, s, sid, expired, values), nil
9483
}
9584

9685
func (s *managerStore) Delete(ctx context.Context, sid string) error {
@@ -128,17 +117,14 @@ func (s *managerStore) Check(ctx context.Context, sid string) (bool, error) {
128117
}
129118

130119
func (s *managerStore) Refresh(ctx context.Context, oldsid, sid string, expired int64) (session.Store, error) {
131-
store := s.pool.Get().(*store)
132-
133120
req, ok := session.FromReqContext(ctx)
134121
if !ok {
135122
return nil, nil
136123
}
137124

138125
cookie, err := req.Cookie(s.opts.cookieName)
139126
if err != nil {
140-
store.reset(ctx, sid, expired, nil)
141-
return store, nil
127+
return newStore(ctx, s, sid, expired, nil), nil
142128
}
143129

144130
var values map[string]interface{}
@@ -160,19 +146,26 @@ func (s *managerStore) Refresh(ctx context.Context, oldsid, sid string, expired
160146
return nil, nil
161147
}
162148
http.SetCookie(res, cookie)
163-
store.reset(ctx, sid, expired, values)
164149

165-
return store, nil
150+
return newStore(ctx, s, sid, expired, values), nil
166151
}
167152

168153
func (s *managerStore) Close() error {
169154
return nil
170155
}
171156

172-
func newStore(opts options, cookie *securecookie.SecureCookie) *store {
157+
func newStore(ctx context.Context, s *managerStore, sid string, expired int64, values map[string]interface{}) *store {
158+
if values == nil {
159+
values = make(map[string]interface{})
160+
}
161+
173162
return &store{
174-
opts: opts,
175-
cookie: cookie,
163+
opts: s.opts,
164+
cookie: s.cookie,
165+
ctx: ctx,
166+
sid: sid,
167+
expired: expired,
168+
values: values,
176169
}
177170
}
178171

@@ -186,16 +179,6 @@ type store struct {
186179
values map[string]interface{}
187180
}
188181

189-
func (s *store) reset(ctx context.Context, sid string, expired int64, values map[string]interface{}) {
190-
if values == nil {
191-
values = make(map[string]interface{})
192-
}
193-
s.ctx = ctx
194-
s.sid = sid
195-
s.expired = expired
196-
s.values = values
197-
}
198-
199182
func (s *store) Context() context.Context {
200183
return s.ctx
201184
}

0 commit comments

Comments
 (0)